Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.exportto / org.gvsig.exportto.swing / org.gvsig.exportto.swing.prov / org.gvsig.exportto.swing.prov.csv / src / main / java / org / gvsig / export / csv / swing / panels / CSVExportParametersPanel.java @ 44386

History | View | Annotate | Download (11.6 KB)

1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
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 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.export.csv.swing.panels;
25

    
26
import javax.swing.DefaultComboBoxModel;
27
import javax.swing.JComboBox;
28
import javax.swing.JComponent;
29
import org.gvsig.tools.ToolsLocator;
30
import org.gvsig.tools.dynobject.DynField;
31
import org.gvsig.tools.dynobject.DynObjectValueItem;
32
import org.gvsig.tools.dynobject.DynStruct;
33
import org.gvsig.tools.i18n.I18nManager;
34
import org.gvsig.tools.swing.api.ToolsSwingLocator;
35
import org.gvsig.tools.swing.api.ToolsSwingManager;
36
import org.gvsig.export.ExportParameters;
37
import org.gvsig.export.swing.JExportProcessPanel;
38
import org.gvsig.export.swing.spi.ExportPanel;
39
import org.gvsig.export.swing.spi.ExportPanelValidationException;
40
import org.slf4j.Logger;
41
import org.slf4j.LoggerFactory;
42
import org.gvsig.export.csv.service.ExportCSVParameters;
43
import org.gvsig.fmap.dal.DataStoreParameters;
44
import org.gvsig.fmap.dal.feature.FeatureStore;
45

    
46
/**
47
 * @author gvSIG Team
48
 * @version $Id$
49
 *
50
 */
51
public class CSVExportParametersPanel
52
        extends CSVExportParametersPanelView
53
        implements ExportPanel {
54

    
55
    private static final Logger LOG = LoggerFactory.getLogger(CSVExportParametersPanel.class);
56

    
57
    private final ExportCSVParameters parameters;
58
    private final JExportProcessPanel processPanel;
59

    
60
    public CSVExportParametersPanel(JExportProcessPanel processPanel, ExportParameters parameters) {
61
        super();
62
        this.processPanel = processPanel;
63
        this.parameters = (ExportCSVParameters) parameters;
64
        this.initComponents();
65
    }
66

    
67
    class ComboItem {
68

    
69
        private String key;
70
        private String value;
71

    
72
        public ComboItem(String key, String value) {
73
            this.key = key;
74
            this.value = value;
75
        }
76

    
77
        @Override
78
        public String toString() {
79
            return key;
80
        }
81

    
82
        public String getKey() {
83
            return key;
84
        }
85

    
86
        public String getValue() {
87
            return value;
88
        }
89
    }
90

    
91
    private DefaultComboBoxModel fillComboBoxWithAvaibleParameters(String dynFieldValue) {
92
        DynStruct parametersDefinition = ToolsLocator.getPersistenceManager().getDefinition("CSVNewStoreParameters");
93
        DynField dynField = parametersDefinition.getDynField(dynFieldValue);
94

    
95
        DefaultComboBoxModel dcm = new DefaultComboBoxModel();
96
        DynObjectValueItem[] availableValues = dynField.getAvailableValues();
97
        for (DynObjectValueItem availableValue : availableValues) {
98

    
99
            Object item = new ComboItem(availableValue.getLabel(), (String) availableValue.getValue());
100
            dcm.addElement(item);
101
        }
102
        return dcm;
103

    
104
    }
105

    
106
    private void initComponents() {
107
        DynStruct parametersDefinition = ToolsLocator.getPersistenceManager().getDefinition("CSVNewStoreParameters");
108
        this.cmbProfile.setModel(this.fillComboBoxWithAvaibleParameters("profile"));
109
        this.cmbProfile.setSelectedIndex(0);
110
//        this.cmbProfile.addActionListener(new ActionListener() {
111
//            @Override
112
//            public void actionPerformed(ActionEvent e) {
113
//                JComboBox combo = (JComboBox) e.getSource();
114
//                ComboItem item = (ComboItem) combo.getSelectedItem();
115
//                String s = item.getValue();
116
//                CsvPreference pref = null;
117
//                if ("STANDARD_PREFERENCE".equalsIgnoreCase(s)) {
118
//                    pref = CsvPreference.STANDARD_PREFERENCE;
119
//                }
120
//                if ("EXCEL_PREFERENCE".equalsIgnoreCase(s)) {
121
//                    pref = CsvPreference.EXCEL_PREFERENCE;
122
//                }
123
//                if ("EXCEL_NORTH_EUROPE_PREFERENCE".equalsIgnoreCase(s)) {
124
//                    pref = CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE;
125
//                }
126
//                if ("TAB_PREFERENCE".equalsIgnoreCase(s)) {
127
//                    pref = CsvPreference.TAB_PREFERENCE;
128
//                }
129
//                txtQuoteCharacter.setText(String.valueOf(pref.getQuoteChar()));
130
//                txtDelimiter.setText(String.valueOf(pref.getDelimiterChar()));
131
//                txtRecordSeparator.setText(String.valueOf(pref.getEndOfLineSymbols()));
132
//                txtCommentStartMarker.setText(pref.getCommentMatcher().toString());
133
//            }
134
//        });
135
        // Si viene de otro csv coger sus parametros
136
        DataStoreParameters params = this.parameters.getSourceFeatureStore().getParameters();
137
//        if (params instanceof CSVStoreParameters) {
138
//            CSVStoreParameters sparams = (CSVStoreParameters) params;
139
//            CsvPreference profile = CSVStoreParameters.getPredefinedCSVPreferences(sparams);
140
//
141
//            CommentMatcher commentMarker = profile.getCommentMatcher();
142
//            this.txtCommentStartMarker.setText(commentMarker.toString());
143
//
144
//            int delimeterChar = profile.getDelimiterChar();
145
//            this.txtDelimiter.setText(String.valueOf(delimeterChar));
146
//
147
//            CsvEncoder encoder = profile.getEncoder();
148
//
149
//            String endOfLineSymbols = profile.getEndOfLineSymbols();
150
//            this.txtEscapeCharacter.setText(endOfLineSymbols);
151
//
152
//            int quoteChar = profile.getQuoteChar();
153
//            this.txtQuoteCharacter.setText(String.valueOf(quoteChar));
154
//
155
//            QuoteMode quoteMode = profile.getQuoteMode();
156
//            this.txtQuoteCharacter.setText(quoteMode.toString());
157
//        } else {
158
//            // default values
159
//
160
//            //this.cmbLocale.setSelectedItem(CSVStoreParameters.);
161
//        }
162

    
163
        this.cmbQuotePolicy.setModel(this.fillComboBoxWithAvaibleParameters("quotePolicy"));
164
        this.cmbQuotePolicy.setSelectedIndex(0);
165

    
166
        this.cmbLocale.setModel(this.fillComboBoxWithAvaibleParameters("locale"));
167
        this.cmbLocale.setSelectedIndex(0);
168

    
169
//        String sourceProviderName = this.parameters.getSourceFeatureStore().getProviderName();
170
//        if (sourceProviderName.equalsIgnoreCase("Shape") || sourceProviderName.equalsIgnoreCase("CSV")) {
171
//            DataStoreParameters params = this.parameters.getSourceFeatureStore().getParameters();
172
//            String encoding = (String) params.getDynValue("Encoding");
173
//            ListElement.setSelected(this.lstEncoding, encoding);
174
//        }
175

    
176
        this.translate();
177
    }
178

    
179
    private void translate() {
180
        ToolsSwingManager i18nc = ToolsSwingLocator.getToolsSwingManager();
181
        i18nc.translate(this.lblProfile);
182
        i18nc.translate(this.lblQuotePolicy);
183
        i18nc.translate(this.lblLocale);
184
        i18nc.translate(this.lblRecordSeparator);
185
        i18nc.translate(this.lblDelimiter);
186
        i18nc.translate(this.lblQuoteCharacter);
187
        i18nc.translate(this.lblCommentStartMarker);
188
        i18nc.translate(this.lblEscapeCharacter);
189
        i18nc.translate(this.lblCharset);
190

    
191
    }
192

    
193
    public String getParameterLocale() {
194
        ComboItem item = (ComboItem) this.cmbLocale.getSelectedItem();
195
        if (item == null) {
196
            return null;
197
        }
198
        return item.getValue();
199
    }
200

    
201
    public String getParameterQuotePolicy() {
202
        ComboItem item = (ComboItem) this.cmbQuotePolicy.getSelectedItem();
203
        if (item == null) {
204
            return null;
205
        }
206
        return item.getValue();
207
    }
208

    
209
    public String getParameterProfile() {
210
        ComboItem item = (ComboItem) this.cmbProfile.getSelectedItem();
211
        if (item == null) {
212
            return null;
213
        }
214
        return item.getValue();
215
    }
216

    
217
    public String getParameterRecordSeparator() {
218
        return this.txtRecordSeparator.getText();
219
    }
220

    
221
    public String getParameterDelimiter() {
222
        return this.txtDelimiter.getText();
223
    }
224

    
225
    public String getParameterQuoteCharacter() {
226
        return this.txtQuoteCharacter.getText();
227
    }
228

    
229
    public String getParameterCommentStartMarker() {
230
        return this.txtCommentStartMarker.getText();
231
    }
232

    
233
    public String getParameterEscapeCharacter() {
234
        return this.txtEscapeCharacter.getText();
235
    }
236

    
237
    public String getParameterCharset() {
238
        return this.txtCharset.getText();
239
    }
240

    
241
    @Override
242
    public JComponent asJComponent() {
243
        return this;
244
    }
245

    
246
    @Override
247
    public String getIdPanel() {
248
        return this.getClass().getSimpleName();
249
    }
250

    
251
    @Override
252
    public String getTitlePanel() {
253
        I18nManager i18nManager = ToolsLocator.getI18nManager();
254
        return i18nManager.getTranslation("_Select_encoding");
255
    }
256

    
257
    @Override
258
    public boolean validatePanel() throws ExportPanelValidationException {
259
        return true;
260
    }
261

    
262
    @Override
263
    public void enterPanel() {
264
        FeatureStore csvStore = this.parameters.getSourceFeatureStore();
265
        DataStoreParameters sparams = csvStore.getParameters();
266

    
267
        this.setSelectedValue(cmbProfile, this.parameters.getProfile());
268
        this.setSelectedValue(cmbLocale, this.parameters.getLocale());
269
        this.setSelectedValue(cmbQuotePolicy, this.parameters.getProfile());
270

    
271
        this.txtRecordSeparator.setText(this.parameters.getRecordSeparator());
272
        this.txtDelimiter.setText(this.parameters.getDelimiter());
273
        this.txtQuoteCharacter.setText(this.parameters.getQuoteCharacter());
274
        this.txtCommentStartMarker.setText(this.parameters.getCommentStartMarker());
275
        this.txtEscapeCharacter.setText(this.parameters.getRecordSeparator());
276
        this.txtCharset.setText(this.parameters.getCharset());
277
    }
278

    
279
    @Override
280
    public void previousPanel() {
281

    
282
    }
283

    
284
    private void setSelectedValue(JComboBox comboBox, Object value) {
285

    
286
        ComboItem item;
287
        for (int i = 0; i < comboBox.getItemCount(); i++) {
288
            item = (ComboItem) comboBox.getItemAt(i);
289
            if (item.getValue() == value) {
290
                comboBox.setSelectedIndex(i);
291
                break;
292
            }
293
        }
294
    }
295

    
296
    @Override
297
    public void nextPanel() {
298
        this.parameters.setProfile(this.getParameterProfile());
299
        this.parameters.setQuotePolicy(this.getParameterQuotePolicy());
300
        this.parameters.setLocale(this.getParameterLocale());
301
        if (this.getParameterRecordSeparator() != null) {
302
            this.parameters.setRecordSeparator(this.getParameterRecordSeparator());
303
        }
304
        if (this.getParameterDelimiter() != null) {
305
            this.parameters.setDelimiter(this.getParameterDelimiter());
306
        }
307
        if (this.getParameterCharset() != null) {
308
            this.parameters.setQuoteCharacter(this.getParameterQuoteCharacter());
309
        }
310
        if (this.getParameterCommentStartMarker() != null) {
311
            this.parameters.setCommentStartMarker(this.getParameterCommentStartMarker());
312
        }
313
        if (this.getParameterEscapeCharacter() != null) {
314
            this.parameters.setEscapeCharacter(this.getParameterEscapeCharacter());
315
        }
316
        if (this.getParameterCharset() != null) {
317
            this.parameters.setCharset(this.getParameterCharset());
318
        }
319
    }
320
}