History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/com/sun/tools/example/debug/gui/JDBFileFilter.java (1 of 18352 files). Show all

Unified · Split

java/pkg/com/sun/tools/example/debug/gui/JDBFileFilter.java+269−0
@@ -0,0 +1,269 @@
1/*
2 * Copyright (c) 1998, 2008, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package com.sun.tools.example.debug.gui;
27
28import java.io.File;
29import java.util.Hashtable;
30import java.util.Enumeration;
31import javax.swing.filechooser.*;
32
33//### Renamed from 'ExampleFileFilter.java' provided with Swing demos.
34
35/**
36 * A convenience implementation of FileFilter that filters out
37 * all files except for those type extensions that it knows about.
38 *
39 * Extensions are of the type ".foo", which is typically found on
40 * Windows and Unix boxes, but not on Macinthosh. Case is ignored.
41 *
42 * Example - create a new filter that filerts out all files
43 * but gif and jpg image files:
44 *
45 * JFileChooser chooser = new JFileChooser();
46 * ExampleFileFilter filter = new ExampleFileFilter(
47 * new String{"gif", "jpg"}, "JPEG & GIF Images")
48 * chooser.addChoosableFileFilter(filter);
49 * chooser.showOpenDialog(this);
50 *
51 * @author Jeff Dinkins
52 */
53
54public class JDBFileFilter extends FileFilter {
55
56 private static String TYPE_UNKNOWN = "Type Unknown";
57 private static String HIDDEN_FILE = "Hidden File";
58
59 private Hashtable<String, JDBFileFilter> filters = null;
60 private String description = null;
61 private String fullDescription = null;
62 private boolean useExtensionsInDescription = true;
63
64 /**
65 * Creates a file filter. If no filters are added, then all
66 * files are accepted.
67 *
68 * @see #addExtension
69 */
70 public JDBFileFilter() {
71 this.filters = new Hashtable<String, JDBFileFilter>();
72 }
73
74 /**
75 * Creates a file filter that accepts files with the given extension.
76 * Example: new JDBFileFilter("jpg");
77 *
78 * @see #addExtension
79 */
80 public JDBFileFilter(String extension) {
81 this(extension,null);
82 }
83
84 /**
85 * Creates a file filter that accepts the given file type.
86 * Example: new JDBFileFilter("jpg", "JPEG Image Images");
87 *
88 * Note that the "." before the extension is not needed. If
89 * provided, it will be ignored.
90 *
91 * @see #addExtension
92 */
93 public JDBFileFilter(String extension, String description) {
94 this();
95 if(extension!=null) {
96 addExtension(extension);
97 }
98 if(description!=null) {
99 setDescription(description);
100 }
101 }
102
103 /**
104 * Creates a file filter from the given string array.
105 * Example: new JDBFileFilter(String {"gif", "jpg"});
106 *
107 * Note that the "." before the extension is not needed adn
108 * will be ignored.
109 *
110 * @see #addExtension
111 */
112 public JDBFileFilter(String[] filters) {
113 this(filters, null);
114 }
115
116 /**
117 * Creates a file filter from the given string array and description.
118 * Example: new JDBFileFilter(String {"gif", "jpg"}, "Gif and JPG Images");
119 *
120 * Note that the "." before the extension is not needed and will be ignored.
121 *
122 * @see #addExtension
123 */
124 public JDBFileFilter(String[] filters, String description) {
125 this();
126 for (String filter : filters) {
127 // add filters one by one
128 addExtension(filter);
129 }
130 if(description!=null) {
131 setDescription(description);
132 }
133 }
134
135 /**
136 * Return true if this file should be shown in the directory pane,
137 * false if it shouldn't.
138 *
139 * Files that begin with "." are ignored.
140 *
141 * @see #getExtension
142 * @see FileFilter#accepts
143 */
144 @Override
145 public boolean accept(File f) {
146 if(f != null) {
147 if(f.isDirectory()) {
148 return true;
149 }
150 String extension = getExtension(f);
151 if(extension != null && filters.get(getExtension(f)) != null) {
152 return true;
153 };
154 }
155 return false;
156 }
157
158 /**
159 * Return the extension portion of the file's name .
160 *
161 * @see #getExtension
162 * @see FileFilter#accept
163 */
164 public String getExtension(File f) {
165 if(f != null) {
166 String filename = f.getName();
167 int i = filename.lastIndexOf('.');
168 if(i>0 && i<filename.length()-1) {
169 return filename.substring(i+1).toLowerCase();
170 };
171 }
172 return null;
173 }
174
175 /**
176 * Adds a filetype "dot" extension to filter against.
177 *
178 * For example: the following code will create a filter that filters
179 * out all files except those that end in ".jpg" and ".tif":
180 *
181 * JDBFileFilter filter = new JDBFileFilter();
182 * filter.addExtension("jpg");
183 * filter.addExtension("tif");
184 *
185 * Note that the "." before the extension is not needed and will be ignored.
186 */
187 public void addExtension(String extension) {
188 if(filters == null) {
189 filters = new Hashtable<String, JDBFileFilter>(5);
190 }
191 filters.put(extension.toLowerCase(), this);
192 fullDescription = null;
193 }
194
195
196 /**
197 * Returns the human readable description of this filter. For
198 * example: "JPEG and GIF Image Files (*.jpg, *.gif)"
199 *
200 * @see setDescription
201 * @see setExtensionListInDescription
202 * @see isExtensionListInDescription
203 * @see FileFilter#getDescription
204 */
205 @Override
206 public String getDescription() {
207 if(fullDescription == null) {
208 if(description == null || isExtensionListInDescription()) {
209 fullDescription = description==null ? "(" : description + " (";
210 // build the description from the extension list
211 Enumeration<String> extensions = filters.keys();
212 if(extensions != null) {
213 fullDescription += "." + extensions.nextElement();
214 while (extensions.hasMoreElements()) {
215 fullDescription += ", " + extensions.nextElement();
216 }
217 }
218 fullDescription += ")";
219 } else {
220 fullDescription = description;
221 }
222 }
223 return fullDescription;
224 }
225
226 /**
227 * Sets the human readable description of this filter. For
228 * example: filter.setDescription("Gif and JPG Images");
229 *
230 * @see setDescription
231 * @see setExtensionListInDescription
232 * @see isExtensionListInDescription
233 */
234 public void setDescription(String description) {
235 this.description = description;
236 fullDescription = null;
237 }
238
239 /**
240 * Determines whether the extension list (.jpg, .gif, etc) should
241 * show up in the human readable description.
242 *
243 * Only relevent if a description was provided in the constructor
244 * or using setDescription();
245 *
246 * @see getDescription
247 * @see setDescription
248 * @see isExtensionListInDescription
249 */
250 public void setExtensionListInDescription(boolean b) {
251 useExtensionsInDescription = b;
252 fullDescription = null;
253 }
254
255 /**
256 * Returns whether the extension list (.jpg, .gif, etc) should
257 * show up in the human readable description.
258 *
259 * Only relevent if a description was provided in the constructor
260 * or using setDescription();
261 *
262 * @see getDescription
263 * @see setDescription
264 * @see setExtensionListInDescription
265 */
266 public boolean isExtensionListInDescription() {
267 return useExtensionsInDescription;
268 }
269}