Statistics
| Revision:

svn-gvsig-desktop / trunk / applications / appgvSIG / src / com / iver / cit / gvsig / project / documents / view / legend / gui / JLegendFileChooser.java @ 28460

History | View | Annotate | Download (4.4 KB)

1 22463 vcaballero
package com.iver.cit.gvsig.project.documents.view.legend.gui;
2
3
import java.io.File;
4
5
import javax.swing.JFileChooser;
6
import javax.swing.filechooser.FileFilter;
7
8
import com.iver.andami.PluginServices;
9
import com.iver.cit.gvsig.fmap.drivers.legend.IFMapLegendDriver;
10
11
/**
12
 *
13
 * JLegendFileChooser.java
14
 *
15
 *
16
 * @author jaume dominguez faus - jaume.dominguez@iver.es Jul 22, 2008
17
 *
18
 */
19
public class JLegendFileChooser extends JFileChooser  {
20
        private static final long serialVersionUID = 8855060580358068594L;
21
        private static String lastPath;
22
        private IFMapLegendDriver[] drivers;
23
        private boolean write_mode = false;
24
        public static String driverVersion;
25
26
        public JLegendFileChooser() {
27
                super();
28
        }
29
30
        public JLegendFileChooser(IFMapLegendDriver[] legendDrivers) {
31
                this(legendDrivers, false);
32
        }
33
34
        public JLegendFileChooser(final IFMapLegendDriver[] legendDrivers, boolean write_mode) {
35
                super(lastPath);
36
                this.write_mode = write_mode;
37
                this.drivers = legendDrivers;
38
39
                setMultiSelectionEnabled(false);
40
41
                if (!this.write_mode){//load method->"all the drivers in one"
42
43
                        this.setFileFilter(new FileFilter() {
44
                                @Override
45
                                public boolean accept(File f) {
46
                                        for (int i = 0; i < legendDrivers.length; i++) {
47
                                                if (legendDrivers[i].accept(f))
48
                                                        return true;
49
                                        }
50
                                        return false;
51
                                }
52
53
                                @Override
54
                                public String getDescription() {
55
                                        String strLegendFormats = "";
56
                                        for (int i = 0; i < legendDrivers.length; i++) {
57
58
                                                strLegendFormats += "*."+legendDrivers[i].getFileExtension();
59
                                                if (i<legendDrivers.length-1) strLegendFormats += ", ";
60
                                        }
61
62
                                        return PluginServices.getText(this, "all_supported_legend_formats") +
63
                                        " ("+strLegendFormats+")";
64
                                }
65
                        });
66
                }
67
                else {//write method->all drivers are separated
68
                        for (int i = 0; i < legendDrivers.length; i++) {
69
                                final IFMapLegendDriver driver = legendDrivers[i];
70
71
                                if (driver.getSupportedVersions() != null) {
72
73
                                        for (int j = 0; j < driver.getSupportedVersions().size(); j++) {
74
75
                                                final String version = driver.getSupportedVersions().get(j);
76
77
                                                FileFilter aFilter = new FileFilter() {
78
79
                                                        @Override
80
                                                        public boolean accept(File f) {
81
                                                                return driver.accept(f);
82
                                                        }
83
84
                                                        @Override
85
                                                        public String getDescription() {
86
                                                                return PluginServices.getText(this, driver.getDescription()+" "+version+" (*."+driver.getFileExtension()+")");
87
                                                        }
88
89
                                                };
90
                                                this.addChoosableFileFilter(aFilter);
91
                                        }
92
                                }
93
                                else {
94
95
                                        FileFilter aFilter = new FileFilter() {
96
97
                                                @Override
98
                                                public boolean accept(File f) {
99
                                                        return driver.accept(f);
100
                                                }
101
102
                                                @Override
103
                                                public String getDescription() {
104
                                                        return PluginServices.getText(this, driver.getDescription()+" (*."+driver.getFileExtension()+")");
105
                                                }
106
107
                                        };
108
                                        this.addChoosableFileFilter(aFilter);
109
                                }
110
111
                        }
112
                }
113
        }
114
115
116
117
        public IFMapLegendDriver getSuitableDriver() {
118
                File f = getSelectedFile();
119
120
                for (int i = 0; drivers != null && i < drivers.length; i++) {
121
                        if (drivers[i].accept(f))
122
                                return drivers[i];
123
                }
124
                return null;
125
        }
126
127
128
129
        public IFMapLegendDriver getDriverFromDescription(File file) {
130
                if (getFileFilter() != null){
131
                        String descripFile = getFileFilter().getDescription();
132
                        IFMapLegendDriver myDriver = null;
133
134
                        for (int i = 0; i < drivers.length; i++) {
135
136
                                myDriver = drivers[i];
137
                                String driverDesc;
138
139
                                if(myDriver.getSupportedVersions() != null) {
140
                                        for (int j = 0; j < myDriver.getSupportedVersions().size(); j++) {
141
                                                driverDesc = myDriver.getDescription()+" "+myDriver.getSupportedVersions().get(j)+" (*."+myDriver.getFileExtension()+")";
142
                                                if (driverDesc.equals(descripFile)){
143
                                                        driverVersion = myDriver.getSupportedVersions().get(j);
144
                                                        return myDriver;
145
                                                }
146
                                        }
147
                                }
148
                                else {
149
                                        driverDesc = myDriver.getDescription()+" (*."+myDriver.getFileExtension()+")";
150
                                        if (driverDesc.equals(descripFile)){
151
                                                driverVersion ="";
152
                                                return myDriver;
153
                                        }
154
                                }
155
                        }
156
                }
157
                return null;
158
        }
159
160
        public File getSelectedFile() {
161
                File f = super.getSelectedFile();
162
163
                IFMapLegendDriver myDriver = getDriverFromDescription(f);
164
                if (f!=null){
165
                        if(myDriver != null && !(f.getPath().toLowerCase().endsWith("."+myDriver.getFileExtension()))){
166
                                f = new File(f.getPath()+ "."+myDriver.getFileExtension());
167
                        }
168
                        lastPath = f.getAbsolutePath().substring(0, f.getAbsolutePath().lastIndexOf(File.separator));
169
                }
170
                return f;
171
        }
172
173
        public static String getDriverVersion() {
174
                return driverVersion;
175
        }
176
177
178
}