OSDN Git Service

必要のないクラスを削除し,クラスの整理を行った.
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / ui / swing / ExtensionFilter.java
1 package jp.sourceforge.stigmata.ui.swing;
2
3 import java.io.File;
4 import java.util.ArrayList;
5 import java.util.List;
6
7 import javax.swing.filechooser.FileFilter;
8
9 /**
10  * File filter by file extension.
11  * 
12  * @author Haruaki TAMADA
13  */
14 public class ExtensionFilter extends FileFilter implements java.io.FileFilter{
15     private List<String> extensions = new ArrayList<String>();
16
17     private String description = null;
18
19     public ExtensionFilter(){
20     }
21
22     public ExtensionFilter(String ext){
23         this(new String[] { ext }, null);
24     }
25
26     public ExtensionFilter(String ext, String description){
27         this(new String[] { ext }, description);
28     }
29
30     public ExtensionFilter(String[] exts){
31         this(exts, null);
32     }
33
34     public ExtensionFilter(String[] exts, String description){
35         if(exts != null){
36             for(String ext: exts){
37                 addExtension(ext);
38             }
39         }
40         setDescription(description);
41     }
42
43     public void addExtension(String ext){
44         extensions.add(ext);
45     }
46
47     public boolean hasExtension(){
48         return extensions.size() > 0;
49     }
50
51     public synchronized String[] getExtensions(){
52         return extensions.toArray(new String[extensions.size()]);
53     }
54
55     @Override
56     public boolean accept(File f){
57         String fileName = f.getName();
58         String extension = fileName.substring(fileName.lastIndexOf('.') + 1);
59
60         boolean flag = false;
61         for(String ext: extensions){
62             if(ext.equals(extension)){
63                 flag = true;
64                 break;
65             }
66         }
67         if(extensions.size() == 0){
68             flag = true;
69         }
70
71         return flag || f.isDirectory();
72     }
73
74     public void setDescription(String description){
75         this.description = description;
76     }
77
78     @Override
79     public String getDescription(){
80         return description;
81     }
82 }