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

History | View | Annotate | Download (9.23 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
        
111
        //TODO: set params from previous source store in case of null values
112
        //it can be null
113
        //DataStoreParameters params = this.parameters.getSourceFeatureStore().getParameters();
114
//        if (params instanceof CSVStoreParameters) {
115
//            CSVStoreParameters sparams = (CSVStoreParameters) params;
116
//            CsvPreference profile = CSVStoreParameters.getPredefinedCSVPreferences(sparams);
117
//
118
//            CommentMatcher commentMarker = profile.getCommentMatcher();
119
//            this.txtCommentStartMarker.setText(commentMarker.toString());
120
//
121
//            int delimeterChar = profile.getDelimiterChar();
122
//            this.txtDelimiter.setText(String.valueOf(delimeterChar));
123
//
124
//            CsvEncoder encoder = profile.getEncoder();
125
//
126
//            String endOfLineSymbols = profile.getEndOfLineSymbols();
127
//            this.txtEscapeCharacter.setText(endOfLineSymbols);
128
//
129
//            int quoteChar = profile.getQuoteChar();
130
//            this.txtQuoteCharacter.setText(String.valueOf(quoteChar));
131
//
132
//            QuoteMode quoteMode = profile.getQuoteMode();
133
//            this.txtQuoteCharacter.setText(quoteMode.toString());
134
//        } else {
135
//            // default values
136
//
137
//            //this.cmbLocale.setSelectedItem(CSVStoreParameters.);
138
//        }
139

    
140
        this.cmbQuotePolicy.setModel(this.fillComboBoxWithAvaibleParameters("quotePolicy"));
141
        this.cmbQuotePolicy.setSelectedIndex(0);
142

    
143
        this.cmbLocale.setModel(this.fillComboBoxWithAvaibleParameters("locale"));
144
        this.cmbLocale.setSelectedIndex(0);
145

    
146
        this.translate();
147
    }
148

    
149
    private void translate() {
150
        ToolsSwingManager i18nc = ToolsSwingLocator.getToolsSwingManager();
151
        i18nc.translate(this.lblProfile);
152
        i18nc.translate(this.lblQuotePolicy);
153
        i18nc.translate(this.lblLocale);
154
        i18nc.translate(this.lblRecordSeparator);
155
        i18nc.translate(this.lblDelimiter);
156
        i18nc.translate(this.lblQuoteCharacter);
157
        i18nc.translate(this.lblCommentStartMarker);
158

    
159
    }
160

    
161
    public String getParameterLocale() {
162
        ComboItem item = (ComboItem) this.cmbLocale.getSelectedItem();
163
        if (item == null) {
164
            return null;
165
        }
166
        return item.getValue();
167
    }
168

    
169
    public String getParameterQuotePolicy() {
170
        ComboItem item = (ComboItem) this.cmbQuotePolicy.getSelectedItem();
171
        if (item == null) {
172
            return null;
173
        }
174
        return item.getValue();
175
    }
176

    
177
    public String getParameterProfile() {
178
        ComboItem item = (ComboItem) this.cmbProfile.getSelectedItem();
179
        if (item == null) {
180
            return null;
181
        }
182
        return item.getValue();
183
    }
184

    
185
    public String getParameterRecordSeparator() {
186
        return this.txtRecordSeparator.getText();
187
    }
188

    
189
    public String getParameterDelimiter() {
190
        return this.txtDelimiter.getText();
191
    }
192

    
193
    public String getParameterQuoteCharacter() {
194
        return this.txtQuoteCharacter.getText();
195
    }
196

    
197
    public String getParameterCommentStartMarker() {
198
        return this.txtCommentStartMarker.getText();
199
    }
200

    
201
    @Override
202
    public JComponent asJComponent() {
203
        return this;
204
    }
205

    
206
    @Override
207
    public String getIdPanel() {
208
        return this.getClass().getSimpleName();
209
    }
210

    
211
    @Override
212
    public String getTitlePanel() {
213
        I18nManager i18nManager = ToolsLocator.getI18nManager();
214
        return i18nManager.getTranslation("_Select_encoding");
215
    }
216

    
217
    @Override
218
    public boolean validatePanel() throws ExportPanelValidationException {
219
        return true;
220
    }
221

    
222
    @Override
223
    public void enterPanel() {
224
        FeatureStore csvStore = this.parameters.getSourceFeatureStore();
225
        DataStoreParameters sparams = csvStore.getParameters();
226

    
227
        this.setSelectedValue(cmbProfile, this.parameters.getProfile());
228
        this.setSelectedValue(cmbLocale, this.parameters.getLocale());
229
        this.setSelectedValue(cmbQuotePolicy, this.parameters.getProfile());
230

    
231
        this.txtRecordSeparator.setText(this.parameters.getRecordSeparator());
232
        this.txtDelimiter.setText(this.parameters.getDelimiter());
233
        this.txtQuoteCharacter.setText(this.parameters.getQuoteCharacter());
234
        this.txtCommentStartMarker.setText(this.parameters.getCommentStartMarker());
235
    }
236

    
237
    @Override
238
    public void previousPanel() {
239

    
240
    }
241

    
242
    private void setSelectedValue(JComboBox comboBox, Object value) {
243

    
244
        ComboItem item;
245
        for (int i = 0; i < comboBox.getItemCount(); i++) {
246
            item = (ComboItem) comboBox.getItemAt(i);
247
            if (item.getValue() == value) {
248
                comboBox.setSelectedIndex(i);
249
                break;
250
            }
251
        }
252
    }
253

    
254
    @Override
255
    public void nextPanel() {
256
        this.parameters.setProfile(this.getParameterProfile());
257
        this.parameters.setQuotePolicy(this.getParameterQuotePolicy());
258
        this.parameters.setLocale(this.getParameterLocale());
259
        if (this.getParameterRecordSeparator() != null) {
260
            this.parameters.setRecordSeparator(this.getParameterRecordSeparator());
261
        }
262
        if (this.getParameterDelimiter() != null) {
263
            this.parameters.setDelimiter(this.getParameterDelimiter());
264
        }
265
        if (this.getParameterCommentStartMarker() != null) {
266
            this.parameters.setCommentStartMarker(this.getParameterCommentStartMarker());
267
        }
268
        if (this.getParameterQuoteCharacter()!=null) {
269
            this.parameters.setQuoteCharacter(this.getParameterQuoteCharacter());
270
        }
271
    }
272
}