Statistics
| Revision:

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 @ 1553

History | View | Annotate | Download (5.59 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.io.File;
12
import javax.swing.filechooser.FileFilter;
13
import org.apache.commons.vfs2.FileObject;
14
import org.apache.commons.vfs2.provider.local.LocalFile;
15
import org.gvsig.filedialogchooser.FileDialogChooser;
16
import org.gvsig.filedialogchooser.FileDialogChooserManager;
17
import org.gvsig.tools.util.ToolsUtilLocator;
18

    
19

    
20
public class VFSJFileChooserBased implements FileDialogChooser {
21

    
22
    private static class FileFilterAdapter extends AbstractVFSFileFilter {
23

    
24
        private final FileFilter filter;
25

    
26
        FileFilterAdapter(FileFilter filter) {
27
            this.filter = filter;
28
        }
29

    
30
        @Override
31
        public boolean accept(FileObject f) {
32
            if( f instanceof LocalFile ) {
33
                return this.filter.accept( new File(f.getName().getPath()));
34
            }
35
            return false;
36
        }
37

    
38
        @Override
39
        public String getDescription() {
40
            return this.filter.getDescription();
41
        }
42

    
43
        public FileFilter getFilter() {
44
            return this.filter;
45
        }
46
    }
47
    
48
    private final VFSJFileChooser jfc;
49
    private final String fileChooserID;
50

    
51
    public VFSJFileChooserBased(String fileChooserID, File defaultDirectory) {
52
        super();
53
        this.jfc = new VFSJFileChooser();
54
        this.fileChooserID = fileChooserID;
55
        this.setCurrentDirectory(defaultDirectory);
56
    }
57
    
58
    @Override
59
    public void setCurrentDirectory(File dir) {
60
        this.jfc.setCurrentDirectory(dir);
61
    }
62

    
63
    @Override
64
    public File getCurrentDirectory() {
65
        return this.jfc.getCurrentDirectory();
66
    }
67

    
68
    @Override
69
    public void setDialogTitle(String dialogTitle) {
70
        this.jfc.setDialogTitle(dialogTitle);
71
    }
72

    
73
    @Override
74
    public void setDialogType(int dialogType) {
75
        switch(dialogType) {
76
        default:
77
        case OPEN_DIALOG:
78
            this.jfc.setDialogType(VFSJFileChooser.DIALOG_TYPE.OPEN);
79
            break;
80
        case SAVE_DIALOG:
81
            this.jfc.setDialogType(VFSJFileChooser.DIALOG_TYPE.SAVE);
82
            break;
83
        }
84
    }
85

    
86
    @Override
87
    public void setDragEnabled(boolean b) {
88
        this.jfc.setDragEnabled(b);
89
    }
90

    
91
    @Override
92
    public void setFileFilter(FileFilter filter) {
93
        if( filter == null ) {
94
            this.jfc.setFileFilter(null);
95
        } else {
96
            this.jfc.setFileFilter(new FileFilterAdapter(filter));
97
        }
98
    }
99

    
100
    @Override
101
    public FileFilter getFileFilter() {
102
        FileFilterAdapter f = (FileFilterAdapter) this.jfc.getFileFilter();
103
        return f.getFilter();
104
    }
105

    
106
    @Override
107
    public void setFileSelectionMode(int mode) {
108
        switch(mode) {
109
        case FILES_ONLY:
110
            this.jfc.setFileSelectionMode(VFSJFileChooser.SELECTION_MODE.FILES_ONLY);
111
            break;
112
        case DIRECTORIES_ONLY:
113
            this.jfc.setFileSelectionMode(VFSJFileChooser.SELECTION_MODE.DIRECTORIES_ONLY);
114
            break;
115
        default:
116
        case FILES_AND_DIRECTORIES:
117
            this.jfc.setFileSelectionMode(VFSJFileChooser.SELECTION_MODE.FILES_AND_DIRECTORIES);
118
            break;
119
        }
120
    }
121

    
122
    @Override
123
    public File getSelectedFile() {
124
        return this.jfc.getSelectedFile();
125
    }
126

    
127
    @Override
128
    public File[] getSelectedFiles() {
129
        return this.jfc.getSelectedFiles();
130
    }
131

    
132
    @Override
133
    public void setFileHidingEnabled(boolean b) {
134
        this.jfc.setFileHidingEnabled(b);
135
    }
136

    
137
    @Override
138
    public void setMultiSelectionEnabled(boolean b) {
139
        this.jfc.setMultiSelectionEnabled(b);
140
    }
141

    
142
    @Override
143
    public boolean isMultiSelectionEnabled() {
144
        return this.jfc.isMultiSelectionEnabled();
145
    }
146

    
147
    @Override
148
    public int showOpenDialog(Component parent) {
149
        VFSJFileChooser.RETURN_TYPE r = this.jfc.showOpenDialog(parent);
150
        if( r == VFSJFileChooser.RETURN_TYPE.CANCEL ) {
151
            return CANCEL_OPTION;            
152
        }
153
        if( r == VFSJFileChooser.RETURN_TYPE.APPROVE ) {
154
            FileDialogChooserManager manager = ToolsUtilLocator.getFileDialogChooserManager();
155
            manager.setLastPath(fileChooserID, this.getCurrentDirectory());
156
            return APPROVE_OPTION;            
157
        }
158
        if( r == VFSJFileChooser.RETURN_TYPE.ERROR ) {
159
            return ERROR_OPTION;            
160
        }
161
        return ERROR_OPTION;            
162
    }
163

    
164
    @Override
165
    public int showSaveDialog(Component parent) {
166
        VFSJFileChooser.RETURN_TYPE r = this.jfc.showSaveDialog(parent);
167
        if( r == VFSJFileChooser.RETURN_TYPE.CANCEL ) {
168
            return CANCEL_OPTION;            
169
        }
170
        if( r == VFSJFileChooser.RETURN_TYPE.APPROVE ) {
171
            FileDialogChooserManager manager = ToolsUtilLocator.getFileDialogChooserManager();
172
            manager.setLastPath(fileChooserID, this.getCurrentDirectory());
173
            return APPROVE_OPTION;            
174
        }
175
        if( r == VFSJFileChooser.RETURN_TYPE.ERROR ) {
176
            return ERROR_OPTION;            
177
        }
178
        return ERROR_OPTION;            
179
    }
180
    
181
    @Override
182
    public void setAcceptAllFileFilterUsed(boolean b) {
183
        this.jfc.setAcceptAllFileFilterUsed(b);
184
    }
185

    
186
    @Override
187
    public void addChoosableFileFilter(FileFilter next) {
188
        this.jfc.addChoosableFileFilter(new FileFilterAdapter(next));
189
    }
190

    
191
}