001: /**
002: * L2FProd.com Common Components 7.3 License.
003: *
004: * Copyright 2005-2007 L2FProd.com
005: *
006: * Licensed under the Apache License, Version 2.0 (the "License");
007: * you may not use this file except in compliance with the License.
008: * You may obtain a copy of the License at
009: *
010: * http://www.apache.org/licenses/LICENSE-2.0
011: *
012: * Unless required by applicable law or agreed to in writing, software
013: * distributed under the License is distributed on an "AS IS" BASIS,
014: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015: * See the License for the specific language governing permissions and
016: * limitations under the License.
017: */package com.l2fprod.common.demo;
018:
019: import java.io.File;
020: import java.util.HashMap;
021: import java.util.Map;
022:
023: import javax.swing.Icon;
024: import javax.swing.filechooser.FileSystemView;
025:
026: /**
027: * A File System view which permits to show the DirectoryChooser even
028: * in Java Web Start. It circumvents all security exceptions.
029: */
030: public class FakeFileSystemView extends FileSystemView {
031:
032: private Map files = new HashMap();
033:
034: public FakeFileSystemView() {
035: files.put("desktop", new FakeFile("Desktop"));
036: files.put("computer", new FakeFile("My Computer"));
037: files.put("A", new FakeFile("A"));
038: files.put("C", new FakeFile("C"));
039: files.put("D", new FakeFile("D"));
040: files.put("getFiles(My Computer)", new File[] {
041: (File) files.get("A"), (File) files.get("C"),
042: (File) files.get("D") });
043: files.put("network", new FakeFile("My Network Places"));
044: files.put("getRoots",
045: new File[] { (File) files.get("desktop") });
046: files.put("getFiles(Desktop)", new File[] {
047: (File) files.get("computer"),
048: (File) files.get("network") });
049:
050: FakeFile[] folders = new FakeFile[] { new FakeFile("Folder 1"),
051: new FakeFile("Folder 2"), new FakeFile("Folder 3"), };
052: files.put("getFiles(C)", folders);
053: files.put("getFiles(D)", folders);
054: }
055:
056: /*
057: * (non-Javadoc)
058: *
059: * @see javax.swing.filechooser.FileSystemView#createNewFolder(java.io.File)
060: */
061: public File createNewFolder(File containingDir) {
062: return null;
063: }
064:
065: /*
066: * (non-Javadoc)
067: *
068: * @see javax.swing.filechooser.FileSystemView#createFileObject(java.io.File,
069: * java.lang.String)
070: */
071: public File createFileObject(File dir, String filename) {
072: return super .createFileObject(dir, filename);
073: }
074:
075: /*
076: * (non-Javadoc)
077: *
078: * @see javax.swing.filechooser.FileSystemView#createFileObject(java.lang.String)
079: */
080: public File createFileObject(String path) {
081: return super .createFileObject(path);
082: }
083:
084: /*
085: * (non-Javadoc)
086: *
087: * @see javax.swing.filechooser.FileSystemView#createFileSystemRoot(java.io.File)
088: */
089: protected File createFileSystemRoot(File f) {
090: return super .createFileSystemRoot(f);
091: }
092:
093: /*
094: * (non-Javadoc)
095: *
096: * @see javax.swing.filechooser.FileSystemView#getChild(java.io.File,
097: * java.lang.String)
098: */
099: public File getChild(File parent, String fileName) {
100: return super .getChild(parent, fileName);
101: }
102:
103: /*
104: * (non-Javadoc)
105: *
106: * @see javax.swing.filechooser.FileSystemView#getDefaultDirectory()
107: */
108: public File getDefaultDirectory() {
109: return new FakeFile("Default");
110: }
111:
112: /*
113: * (non-Javadoc)
114: *
115: * @see javax.swing.filechooser.FileSystemView#getFiles(java.io.File,
116: * boolean)
117: */
118: public File[] getFiles(File dir, boolean useFileHiding) {
119: if (dir.getName().startsWith("Folder")) {
120: return new FakeFile[] { new FakeFile(dir.getName() + ".1"),
121: new FakeFile(dir.getName() + ".2"),
122: new FakeFile(dir.getName() + ".3"), };
123: } else {
124: File[] children = (File[]) files.get("getFiles("
125: + dir.getName() + ")");
126: if (children == null) {
127: return new File[0];
128: } else {
129: return children;
130: }
131: }
132: }
133:
134: /*
135: * (non-Javadoc)
136: *
137: * @see javax.swing.filechooser.FileSystemView#getHomeDirectory()
138: */
139: public File getHomeDirectory() {
140: return new FakeFile("Home");
141: }
142:
143: /*
144: * (non-Javadoc)
145: *
146: * @see javax.swing.filechooser.FileSystemView#getParentDirectory(java.io.File)
147: */
148: public File getParentDirectory(File dir) {
149: return null;
150: }
151:
152: /*
153: * (non-Javadoc)
154: *
155: * @see javax.swing.filechooser.FileSystemView#getRoots()
156: */
157: public File[] getRoots() {
158: return (File[]) files.get("getRoots");
159: }
160:
161: /*
162: * (non-Javadoc)
163: *
164: * @see javax.swing.filechooser.FileSystemView#getSystemDisplayName(java.io.File)
165: */
166: public String getSystemDisplayName(File f) {
167: return f.getName();
168: }
169:
170: /*
171: * (non-Javadoc)
172: *
173: * @see javax.swing.filechooser.FileSystemView#getSystemIcon(java.io.File)
174: */
175: public Icon getSystemIcon(File f) {
176: return null;
177: }
178:
179: /*
180: * (non-Javadoc)
181: *
182: * @see javax.swing.filechooser.FileSystemView#getSystemTypeDescription(java.io.File)
183: */
184: public String getSystemTypeDescription(File f) {
185: return "Description";
186: }
187:
188: /*
189: * (non-Javadoc)
190: *
191: * @see javax.swing.filechooser.FileSystemView#isComputerNode(java.io.File)
192: */
193: public boolean isComputerNode(File dir) {
194: return files.get("computer") == dir;
195: }
196:
197: /*
198: * (non-Javadoc)
199: *
200: * @see javax.swing.filechooser.FileSystemView#isDrive(java.io.File)
201: */
202: public boolean isDrive(File dir) {
203: return "C".equals(dir.getName()) || "D".equals(dir.getName());
204: }
205:
206: /*
207: * (non-Javadoc)
208: *
209: * @see javax.swing.filechooser.FileSystemView#isFileSystem(java.io.File)
210: */
211: public boolean isFileSystem(File f) {
212: return false;
213: }
214:
215: /*
216: * (non-Javadoc)
217: *
218: * @see javax.swing.filechooser.FileSystemView#isFileSystemRoot(java.io.File)
219: */
220: public boolean isFileSystemRoot(File dir) {
221: return false;
222: }
223:
224: /*
225: * (non-Javadoc)
226: *
227: * @see javax.swing.filechooser.FileSystemView#isFloppyDrive(java.io.File)
228: */
229: public boolean isFloppyDrive(File dir) {
230: return "A".equals(dir.getName());
231: }
232:
233: /*
234: * (non-Javadoc)
235: *
236: * @see javax.swing.filechooser.FileSystemView#isHiddenFile(java.io.File)
237: */
238: public boolean isHiddenFile(File f) {
239: return false;
240: }
241:
242: /*
243: * (non-Javadoc)
244: *
245: * @see javax.swing.filechooser.FileSystemView#isParent(java.io.File,
246: * java.io.File)
247: */
248: public boolean isParent(File folder, File file) {
249: return false;
250: }
251:
252: /*
253: * (non-Javadoc)
254: *
255: * @see javax.swing.filechooser.FileSystemView#isRoot(java.io.File)
256: */
257: public boolean isRoot(File f) {
258: return files.get("desktop") == f;
259: }
260:
261: /*
262: * (non-Javadoc)
263: *
264: * @see javax.swing.filechooser.FileSystemView#isTraversable(java.io.File)
265: */
266: public Boolean isTraversable(File f) {
267: return Boolean.TRUE;
268: }
269:
270: static class FakeFile extends File {
271: public FakeFile(String s) {
272: super (s);
273: }
274:
275: public boolean isDirectory() {
276: return true;
277: }
278: }
279: }
|