gvsig-tools / org.gvsig.tools / library / trunk / org.gvsig.tools / org.gvsig.tools.util / org.gvsig.tools.util.impl / src / main / java / org / gvsig / filedialogchooser / impl / VFSJFileChooserBased.java @ 1872
History | View | Annotate | Download (6.25 KB)
1 |
/*
|
---|---|
2 |
* To change this license header, choose License Headers in Project Properties.
|
3 |
* To change this template file, choose Tools | Templates
|
4 |
* and open the template in the editor.
|
5 |
*/
|
6 |
package org.gvsig.filedialogchooser.impl; |
7 |
|
8 |
import com.googlecode.vfsjfilechooser2.VFSJFileChooser; |
9 |
import com.googlecode.vfsjfilechooser2.filechooser.AbstractVFSFileFilter; |
10 |
import java.awt.Component; |
11 |
import java.beans.PropertyChangeListener; |
12 |
import java.io.File; |
13 |
import javax.swing.JComponent; |
14 |
import javax.swing.filechooser.FileFilter; |
15 |
import org.apache.commons.vfs2.FileObject; |
16 |
import org.apache.commons.vfs2.provider.local.LocalFile; |
17 |
import org.gvsig.filedialogchooser.FileDialogChooser; |
18 |
import org.gvsig.filedialogchooser.FileDialogChooserManager; |
19 |
import org.gvsig.tools.util.ToolsUtilLocator; |
20 |
|
21 |
|
22 |
public class VFSJFileChooserBased implements FileDialogChooser { |
23 |
|
24 |
private static class FileFilterAdapter extends AbstractVFSFileFilter { |
25 |
|
26 |
private final FileFilter filter; |
27 |
|
28 |
FileFilterAdapter(FileFilter filter) {
|
29 |
this.filter = filter;
|
30 |
} |
31 |
|
32 |
@Override
|
33 |
public boolean accept(FileObject f) { |
34 |
if( f instanceof LocalFile ) { |
35 |
return this.filter.accept( new File(f.getName().getPath())); |
36 |
} |
37 |
return false; |
38 |
} |
39 |
|
40 |
@Override
|
41 |
public String getDescription() { |
42 |
return this.filter.getDescription(); |
43 |
} |
44 |
|
45 |
public FileFilter getFilter() { |
46 |
return this.filter; |
47 |
} |
48 |
} |
49 |
|
50 |
private final VFSJFileChooser jfc; |
51 |
private final String fileChooserID; |
52 |
|
53 |
public VFSJFileChooserBased(String fileChooserID) { |
54 |
super();
|
55 |
this.jfc = new VFSJFileChooser(); |
56 |
this.fileChooserID = fileChooserID;
|
57 |
} |
58 |
|
59 |
@Override
|
60 |
public void setCurrentDirectory(File dir) { |
61 |
if( dir == null ) { |
62 |
dir = new File(System.getProperty("user.home")); |
63 |
} |
64 |
this.jfc.setCurrentDirectory(dir);
|
65 |
} |
66 |
|
67 |
@Override
|
68 |
public File getCurrentDirectory() { |
69 |
return this.jfc.getCurrentDirectory(); |
70 |
} |
71 |
|
72 |
@Override
|
73 |
public void setDialogTitle(String dialogTitle) { |
74 |
this.jfc.setDialogTitle(dialogTitle);
|
75 |
} |
76 |
|
77 |
@Override
|
78 |
public void setDialogType(int dialogType) { |
79 |
switch(dialogType) {
|
80 |
default:
|
81 |
case OPEN_DIALOG:
|
82 |
this.jfc.setDialogType(VFSJFileChooser.DIALOG_TYPE.OPEN);
|
83 |
break;
|
84 |
case SAVE_DIALOG:
|
85 |
this.jfc.setDialogType(VFSJFileChooser.DIALOG_TYPE.SAVE);
|
86 |
break;
|
87 |
} |
88 |
} |
89 |
|
90 |
@Override
|
91 |
public void setDragEnabled(boolean b) { |
92 |
this.jfc.setDragEnabled(b);
|
93 |
} |
94 |
|
95 |
@Override
|
96 |
public void setFileFilter(FileFilter filter) { |
97 |
if( filter == null ) { |
98 |
this.jfc.setFileFilter(null); |
99 |
} else {
|
100 |
this.jfc.setFileFilter(new FileFilterAdapter(filter)); |
101 |
} |
102 |
} |
103 |
|
104 |
@Override
|
105 |
public FileFilter getFileFilter() { |
106 |
FileFilterAdapter f = (FileFilterAdapter) this.jfc.getFileFilter();
|
107 |
return f.getFilter();
|
108 |
} |
109 |
|
110 |
@Override
|
111 |
public void setFileSelectionMode(int mode) { |
112 |
switch(mode) {
|
113 |
case FILES_ONLY:
|
114 |
this.jfc.setFileSelectionMode(VFSJFileChooser.SELECTION_MODE.FILES_ONLY);
|
115 |
break;
|
116 |
case DIRECTORIES_ONLY:
|
117 |
this.jfc.setFileSelectionMode(VFSJFileChooser.SELECTION_MODE.DIRECTORIES_ONLY);
|
118 |
break;
|
119 |
default:
|
120 |
case FILES_AND_DIRECTORIES:
|
121 |
this.jfc.setFileSelectionMode(VFSJFileChooser.SELECTION_MODE.FILES_AND_DIRECTORIES);
|
122 |
break;
|
123 |
} |
124 |
} |
125 |
|
126 |
@Override
|
127 |
public File getSelectedFile() { |
128 |
return this.jfc.getSelectedFile(); |
129 |
} |
130 |
|
131 |
@Override
|
132 |
public File[] getSelectedFiles() { |
133 |
return this.jfc.getSelectedFiles(); |
134 |
} |
135 |
|
136 |
@Override
|
137 |
public void setFileHidingEnabled(boolean b) { |
138 |
this.jfc.setFileHidingEnabled(b);
|
139 |
} |
140 |
|
141 |
@Override
|
142 |
public void setMultiSelectionEnabled(boolean b) { |
143 |
this.jfc.setMultiSelectionEnabled(b);
|
144 |
} |
145 |
|
146 |
@Override
|
147 |
public boolean isMultiSelectionEnabled() { |
148 |
return this.jfc.isMultiSelectionEnabled(); |
149 |
} |
150 |
|
151 |
@Override
|
152 |
public int showOpenDialog(Component parent) { |
153 |
FileDialogChooserManager manager = ToolsUtilLocator.getFileDialogChooserManager(); |
154 |
File f = this.getCurrentDirectory(); |
155 |
if( f==null ) { |
156 |
f = manager.getLastPath(fileChooserID, null);
|
157 |
this.jfc.setCurrentDirectory(f);
|
158 |
} |
159 |
VFSJFileChooser.RETURN_TYPE r = this.jfc.showOpenDialog(parent);
|
160 |
if( r == VFSJFileChooser.RETURN_TYPE.CANCEL ) {
|
161 |
return CANCEL_OPTION;
|
162 |
} |
163 |
if( r == VFSJFileChooser.RETURN_TYPE.APPROVE ) {
|
164 |
manager.setLastPath(fileChooserID, this.getCurrentDirectory());
|
165 |
return APPROVE_OPTION;
|
166 |
} |
167 |
if( r == VFSJFileChooser.RETURN_TYPE.ERROR ) {
|
168 |
return ERROR_OPTION;
|
169 |
} |
170 |
return ERROR_OPTION;
|
171 |
} |
172 |
|
173 |
@Override
|
174 |
public int showSaveDialog(Component parent) { |
175 |
FileDialogChooserManager manager = ToolsUtilLocator.getFileDialogChooserManager(); |
176 |
File f = manager.getLastPath(fileChooserID, this.getCurrentDirectory()); |
177 |
this.jfc.setCurrentDirectory(f);
|
178 |
VFSJFileChooser.RETURN_TYPE r = this.jfc.showSaveDialog(parent);
|
179 |
if( r == VFSJFileChooser.RETURN_TYPE.CANCEL ) {
|
180 |
return CANCEL_OPTION;
|
181 |
} |
182 |
if( r == VFSJFileChooser.RETURN_TYPE.APPROVE ) {
|
183 |
manager.setLastPath(fileChooserID, this.getCurrentDirectory());
|
184 |
return APPROVE_OPTION;
|
185 |
} |
186 |
if( r == VFSJFileChooser.RETURN_TYPE.ERROR ) {
|
187 |
return ERROR_OPTION;
|
188 |
} |
189 |
return ERROR_OPTION;
|
190 |
} |
191 |
|
192 |
@Override
|
193 |
public void setAcceptAllFileFilterUsed(boolean b) { |
194 |
this.jfc.setAcceptAllFileFilterUsed(b);
|
195 |
} |
196 |
|
197 |
@Override
|
198 |
public void addChoosableFileFilter(FileFilter next) { |
199 |
this.jfc.addChoosableFileFilter(new FileFilterAdapter(next)); |
200 |
} |
201 |
|
202 |
@Override
|
203 |
public void addPropertyChangeListener(PropertyChangeListener listener) { |
204 |
this.jfc.addPropertyChangeListener(listener);
|
205 |
} |
206 |
|
207 |
@Override
|
208 |
public void setAccessory(JComponent newAccessory) { |
209 |
this.jfc.setAccessory(newAccessory);
|
210 |
} |
211 |
|
212 |
} |