1 19 20 package com.sshtools.ui.swing; 21 22 import java.awt.Component ; 23 import java.awt.event.ActionEvent ; 24 import java.awt.event.ActionListener ; 25 import java.io.File ; 26 import java.util.HashMap ; 27 28 import javax.swing.JCheckBox ; 29 import javax.swing.JFileChooser ; 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 40 public class SwingFileSelector implements FileSelector { 41 42 private JFileChooser chooser; 43 private HashMap filters = new HashMap (); 44 45 public SwingFileSelector() { 46 chooser = new JFileChooser (); 47 } 48 49 52 public void init(int type, File cwd, boolean showButtons, boolean showHiddenFilesSwitch, boolean showButtonImages, 53 boolean showButtonText) { 54 chooser.setApproveButtonText("Ok"); 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 hiddenFiles = new JCheckBox ("Show hidden files", false); 64 hiddenFiles.addActionListener(new ActionListener () { 65 public void actionPerformed(ActionEvent evt) { 66 chooser.setFileHidingEnabled(!hiddenFiles.isSelected()); 67 } 68 }); 69 chooser.setAccessory(hiddenFiles); 70 } 71 } 72 73 76 public void setUseAcceptAllFilter(boolean useAcceptAllFilter) { 77 chooser.setAcceptAllFileFilterUsed(useAcceptAllFilter); 78 } 79 80 83 public void addFileFilter(final FileFilter filter) { 84 javax.swing.filechooser.FileFilter swingFilter = 85 new javax.swing.filechooser.FileFilter () { 86 87 public boolean accept(File f) { 88 return filter.accept(f); 89 } 90 91 public String getDescription() { 92 return filter.getDescription(); 93 } 94 }; 95 filters.put(filter, swingFilter); 96 chooser.addChoosableFileFilter(swingFilter); 97 } 98 99 102 public File [] getSelectedFiles() { 103 return chooser.getSelectedFiles(); 104 } 105 106 109 public File getSelectedFile() { 110 return chooser.getSelectedFile(); 111 } 112 113 116 public void refresh() { 117 } 119 120 123 public void setAllowMultipleSelection(boolean allowMultipleSelection) { 124 chooser.setMultiSelectionEnabled(allowMultipleSelection); 125 } 126 127 130 public Option showDialog(Component parent, String 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 145 public File getWorkingDirectory() { 146 return chooser.getCurrentDirectory(); 147 } 148 149 152 public void setSelectedFileFilter(FileFilter filter) { 153 javax.swing.filechooser.FileFilter swingFilter = 154 (javax.swing.filechooser.FileFilter )filters.get(filter); 155 if(swingFilter != null) { 156 chooser.setFileFilter(swingFilter); 157 } 158 } 159 160 163 public void setWorkingDirectory(File cwd) { 164 chooser.setCurrentDirectory(cwd); 165 } 166 167 } 168 | Popular Tags |