KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sshtools > ui > swing > SwingFileSelector


1 /*
2  * SSL-Explorer
3  *
4  * Copyright (C) 2003-2006 3SP LTD. All Rights Reserved
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2 of
9  * the License, or (at your option) any later version.
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public
16  * License along with this program; if not, write to the Free Software
17  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18  */

19             
20 package com.sshtools.ui.swing;
21
22 import java.awt.Component JavaDoc;
23 import java.awt.event.ActionEvent JavaDoc;
24 import java.awt.event.ActionListener JavaDoc;
25 import java.io.File JavaDoc;
26 import java.util.HashMap JavaDoc;
27
28 import javax.swing.JCheckBox JavaDoc;
29 import javax.swing.JFileChooser JavaDoc;
30
31 import com.sshtools.ui.FileFilter;
32 import com.sshtools.ui.FileSelect;
33 import com.sshtools.ui.FileSelector;
34 import com.sshtools.ui.awt.options.Option;
35 import com.sshtools.ui.awt.options.OptionDialog;
36
37 /**
38  * @author Brett Smith <brett@3sp.com>
39  */

40 public class SwingFileSelector implements FileSelector {
41
42     private JFileChooser JavaDoc chooser;
43     private HashMap JavaDoc filters = new HashMap JavaDoc();
44     
45     public SwingFileSelector() {
46         chooser = new JFileChooser JavaDoc();
47     }
48
49     /* (non-Javadoc)
50      * @see com.sshtools.ui.FileSelector#init(int, java.io.File, boolean, boolean, boolean, boolean)
51      */

52     public void init(int type, File JavaDoc cwd, boolean showButtons, boolean showHiddenFilesSwitch, boolean showButtonImages,
53                     boolean showButtonText) {
54         chooser.setApproveButtonText("Ok"); // TODO FileSelect does not recognise dialog type (i.e. Open / Save)
55
setWorkingDirectory(cwd);
56         if(type == FileSelect.DIRECTORIES_ONLY) {
57             chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
58         }
59         else {
60             chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
61         }
62         if(showHiddenFilesSwitch) {
63             final JCheckBox JavaDoc hiddenFiles = new JCheckBox JavaDoc("Show hidden files", false);
64             hiddenFiles.addActionListener(new ActionListener JavaDoc() {
65                 public void actionPerformed(ActionEvent JavaDoc evt) {
66                     chooser.setFileHidingEnabled(!hiddenFiles.isSelected());
67                 }
68             });
69             chooser.setAccessory(hiddenFiles);
70         }
71     }
72
73     /* (non-Javadoc)
74      * @see com.sshtools.ui.FileSelector#setUseAcceptAllFilter(boolean)
75      */

76     public void setUseAcceptAllFilter(boolean useAcceptAllFilter) {
77         chooser.setAcceptAllFileFilterUsed(useAcceptAllFilter);
78     }
79
80     /* (non-Javadoc)
81      * @see com.sshtools.ui.FileSelector#addFileFilter(com.sshtools.ui.FileFilter)
82      */

83     public void addFileFilter(final FileFilter filter) {
84         javax.swing.filechooser.FileFilter JavaDoc swingFilter =
85             new javax.swing.filechooser.FileFilter JavaDoc() {
86
87             public boolean accept(File JavaDoc f) {
88                 return filter.accept(f);
89             }
90
91             public String JavaDoc getDescription() {
92                 return filter.getDescription();
93             }
94         };
95         filters.put(filter, swingFilter);
96         chooser.addChoosableFileFilter(swingFilter);
97     }
98
99     /* (non-Javadoc)
100      * @see com.sshtools.ui.FileSelector#getSelectedFiles()
101      */

102     public File JavaDoc[] getSelectedFiles() {
103         return chooser.getSelectedFiles();
104     }
105
106     /* (non-Javadoc)
107      * @see com.sshtools.ui.FileSelector#getSelectedFile()
108      */

109     public File JavaDoc getSelectedFile() {
110         return chooser.getSelectedFile();
111     }
112
113     /* (non-Javadoc)
114      * @see com.sshtools.ui.FileSelector#refresh()
115      */

116     public void refresh() {
117         // TODO refreshable?
118
}
119
120     /* (non-Javadoc)
121      * @see com.sshtools.ui.FileSelector#setAllowMultipleSelection(boolean)
122      */

123     public void setAllowMultipleSelection(boolean allowMultipleSelection) {
124         chooser.setMultiSelectionEnabled(allowMultipleSelection);
125     }
126
127     /* (non-Javadoc)
128      * @see com.sshtools.ui.FileSelector#showDialog(java.awt.Component, java.lang.String)
129      */

130     public Option showDialog(Component JavaDoc parent, String JavaDoc title) {
131         chooser.setDialogTitle(title);
132         int opt = chooser.showDialog(parent, "Ok");
133         if(opt == JFileChooser.APPROVE_OPTION) {
134             return OptionDialog.CHOICE_OK;
135         }
136         else {
137             return OptionDialog.CHOICE_CANCEL;
138         }
139         
140     }
141
142     /* (non-Javadoc)
143      * @see com.sshtools.ui.FileSelector#getWorkingDirectory()
144      */

145     public File JavaDoc getWorkingDirectory() {
146         return chooser.getCurrentDirectory();
147     }
148
149     /* (non-Javadoc)
150      * @see com.sshtools.ui.FileSelector#setSelectedFileFilter(com.sshtools.ui.FileFilter)
151      */

152     public void setSelectedFileFilter(FileFilter filter) {
153         javax.swing.filechooser.FileFilter JavaDoc swingFilter =
154             (javax.swing.filechooser.FileFilter JavaDoc)filters.get(filter);
155         if(swingFilter != null) {
156             chooser.setFileFilter(swingFilter);
157         }
158     }
159
160     /* (non-Javadoc)
161      * @see com.sshtools.ui.FileSelector#setWorkingDirectory(java.io.File)
162      */

163     public void setWorkingDirectory(File JavaDoc cwd) {
164         chooser.setCurrentDirectory(cwd);
165     }
166
167 }
168
Popular Tags