OSDN Git Service

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