Integration of OCCT 6.5.0 from SVN
[occt.git] / samples / java / java / util / ExtensionFileFilter.java
1
2 //Title:        Testing viewer
3 //Version:      
4 //Copyright:    Copyright (c) 1998
5 //Author:       User Interface Group (Nizhny Novgorod)
6 //Company:      EQCC
7 //Description:  
8
9
10 package util;
11
12 import java.io.File;
13 import java.util.*;
14 import javax.swing.*;
15 import javax.swing.filechooser.*;
16
17
18 public class ExtensionFileFilter extends FileFilter
19 {
20   private Hashtable filters = null;
21   private String description = null;
22   private String fullDescription = null;
23   private boolean useExtensionsInDescription = true;
24
25
26 //=======================================================================//
27 // Constructors
28 //=======================================================================//
29   public ExtensionFileFilter()
30   {
31         this.filters = new Hashtable();
32   }
33
34   public ExtensionFileFilter(String extension, String description)
35   {
36         this();
37     if(extension != null) addExtension(extension);
38         if(description != null) setDescription(description);
39   }
40
41   public ExtensionFileFilter(String[] filters)
42   {
43         this(filters, null);
44   }
45
46   public ExtensionFileFilter(String[] filters, String description)
47   {
48         this();
49     for (int i = 0; i < filters.length; i++)
50     {
51             // add filters one by one
52             addExtension(filters[i]);
53           }
54     if(description != null) setDescription(description);
55   }
56
57
58 //=======================================================================//
59 // Overriden function
60 //=======================================================================//
61   public boolean accept(File f)
62   {
63     if (f != null)
64     {
65             if(f.isDirectory()) return true;
66
67             String extension = getExtension(f);
68             if (extension != null && filters.get(getExtension(f)) != null)
69                 return true;
70         }
71
72           return false;
73   }
74
75   public String getDescription()
76   {
77     if (fullDescription == null)
78     {
79             if (description == null || isExtensionListInDescription())
80       {
81                 fullDescription = (description == null) ? "(" : description + " (";
82
83                     // build the description from the extension list
84                     Enumeration extensions = filters.keys();
85                 if (extensions != null)
86         {
87                     fullDescription += "." + (String) extensions.nextElement();
88                     while (extensions.hasMoreElements())
89                         fullDescription += ", " + (String) extensions.nextElement();
90                     }
91
92                     fullDescription += ")";
93             }
94       else
95                 fullDescription = description;
96           }
97
98           return fullDescription;
99   }
100
101
102   public String[] getExtensions()
103
104   {
105
106     if (filters.size() == 0)
107
108       return null;
109
110
111     String[] ext = new String[filters.size()];
112
113
114     Enumeration anEnum = filters.keys();
115
116     int i = 0;
117
118     while (anEnum.hasMoreElements())
119
120       ext[i] = new String((String) anEnum.nextElement());
121
122
123     return ext;
124
125   }
126
127 //=======================================================================//
128 // Additional function
129 //=======================================================================//
130   public String getExtension(File f)
131   {
132           if (f != null)
133             return getExtension(f.getName());
134     else
135         return null;
136   }
137
138   public String getExtension(String filename)
139   {
140           if (filename != null)
141     {
142       int k = filename.lastIndexOf(System.getProperty("file.separator"));
143       String name = filename.substring(k+1);
144             int i = name.lastIndexOf('.');
145             if (i>0 && i<name.length()-1)
146                 return name.substring(i+1).toLowerCase();
147           }
148
149         return null;
150   }
151
152   public void addExtension(String extension)
153   {
154     if (filters == null)
155             filters = new Hashtable(5);
156
157         filters.put(extension.toLowerCase(), this);
158           fullDescription = null;
159   }
160
161   public void setDescription(String description)
162   {
163           this.description = description;
164         fullDescription = null;
165   }
166
167   public void setExtensionListInDescription(boolean b)
168   {
169           useExtensionsInDescription = b;
170         fullDescription = null;
171   }
172
173   public boolean isExtensionListInDescription()
174   {
175         return useExtensionsInDescription;
176   }
177
178 }