Statistics
| Revision:

gvsig-lrs / org.gvsig.lrs / trunk / org.gvsig.lrs / org.gvsig.lrs.swing / org.gvsig.lrs.swing.impl / src / main / java / org / gvsig / lrs / swing / impl / JLrsCreateRouteParamsController.java @ 17

History | View | Annotate | Download (21.9 KB)

1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2015 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.lrs.swing.impl;
24

    
25
import java.awt.event.ActionEvent;
26
import java.awt.event.ActionListener;
27
import java.awt.event.ItemEvent;
28
import java.awt.event.ItemListener;
29
import java.io.File;
30
import java.util.Locale;
31

    
32
import javax.swing.ComboBoxModel;
33
import javax.swing.DefaultComboBoxModel;
34
import javax.swing.JComponent;
35
import javax.swing.JOptionPane;
36
import javax.swing.ListCellRenderer;
37

    
38
import org.apache.commons.io.FileUtils;
39
import org.apache.commons.lang3.StringUtils;
40
import org.cresques.cts.IProjection;
41
import org.gvsig.fmap.dal.exception.DataException;
42
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
43
import org.gvsig.fmap.dal.feature.FeatureStore;
44
import org.gvsig.fmap.dal.feature.FeatureType;
45
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
46
import org.gvsig.fmap.dal.store.shp.SHPNewStoreParameters;
47
import org.gvsig.fmap.geom.DataTypes;
48
import org.gvsig.fmap.mapcontext.layers.FLayer;
49
//import org.gvsig.fmap.mapcontext.layers.FLayers;
50
import org.gvsig.fmap.mapcontext.layers.operations.LayerCollection;
51
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
52
import org.gvsig.lrs.lib.api.LrsAlgorithmParams;
53
import org.gvsig.lrs.lib.api.LrsAlgorithmsLocator;
54
import org.gvsig.lrs.lib.api.LrsAlgorithmsManager;
55
import org.gvsig.lrs.lib.api.LrsCoordinatesPriority;
56
import org.gvsig.lrs.lib.api.LrsCreateRouteAlgorithmParams;
57
import org.gvsig.lrs.lib.api.LrsSourceOfMeasures;
58
import org.gvsig.lrs.lib.api.exceptions.LrsGettingParametersException;
59
import org.gvsig.lrs.lib.api.exceptions.LrsNeededParameterException;
60
import org.gvsig.lrs.swing.api.JLrsAlgorithmParams;
61
import org.gvsig.tools.ToolsLocator;
62
import org.gvsig.tools.i18n.I18nManager;
63
import org.gvsig.tools.swing.api.ActionListenerSupport;
64
import org.gvsig.tools.swing.api.ToolsSwingLocator;
65
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
66
import org.slf4j.Logger;
67
import org.slf4j.LoggerFactory;
68

    
69
/**
70
 * @author fdiaz
71
 *
72
 */
73
public class JLrsCreateRouteParamsController extends JLrsCreateRouteParamsView implements JLrsAlgorithmParams {
74

    
75
    /**
76
     *
77
     */
78
    private static final long serialVersionUID = 273909136196706713L;
79

    
80
    private static final Logger logger = LoggerFactory.getLogger(JLrsCreateRouteParamsController.class);
81

    
82
    private boolean canceled;
83
    private ActionListenerSupport listeners = ToolsSwingLocator.getToolsSwingManager().createActionListenerSupport();
84

    
85
    private LayerCollection layers;
86

    
87
    /**
88
     * @param layers
89
     * @throws LrsNeededParameterException
90
     *
91
     */
92
    public JLrsCreateRouteParamsController(LayerCollection layers, LrsAlgorithmParams params) throws LrsNeededParameterException {
93
        super();
94
        this.layers = layers;
95
        initComponents();
96
        translate();
97
        setParams(params);
98
    }
99

    
100
    public void addActionListener(ActionListener listener) {
101
        listeners.addActionListener(listener);
102
    }
103

    
104
    public void removeActionListener(ActionListener listener) {
105
        listeners.removeActionListener(listener);
106
    }
107

    
108
    private void translate() {
109
        I18nManager i18nManager = ToolsLocator.getI18nManager();
110

    
111
        lblInputLayer.setText(i18nManager.getTranslation(lblInputLayer.getText()));
112
        lblIdRouteField.setText(i18nManager.getTranslation(lblIdRouteField.getText()));
113
        lblOutputFile.setText(i18nManager.getTranslation(lblOutputFile.getText()));
114
        lblMeasureSource.setText(i18nManager.getTranslation(lblMeasureSource.getText()));
115
        lblFromMeasureField.setText(i18nManager.getTranslation(lblFromMeasureField.getText()));
116
        lblToMeasureField.setText(i18nManager.getTranslation(lblToMeasureField.getText()));
117
        lblCoordinatesPriority.setText(i18nManager.getTranslation(lblCoordinatesPriority.getText()));
118
        lblMeasureFactor.setText(i18nManager.getTranslation(lblMeasureFactor.getText()));
119
        lblMeasureOffset.setText(i18nManager.getTranslation(lblMeasureOffset.getText()));
120
        chkIgnoreSpatialGaps.setText(i18nManager.getTranslation(chkIgnoreSpatialGaps.getText()));
121
        btnBrowser.setText("\u2026");
122
        btnAccept.setText(i18nManager.getTranslation(btnAccept.getText()));
123
        btnCancel.setText(i18nManager.getTranslation(btnCancel.getText()));
124

    
125
    }
126

    
127
    /**
128
     *
129
     */
130
    public void setLocate(Locale locale) {
131
        Locale l = super.getLocale();
132
        if (!l.equals(locale)) {
133
            translate();
134
        }
135
        super.setLocale(locale);
136
    }
137

    
138
    /**
139
     * Validates the layers:
140
     *  - At least 1 curve layer with at least 1 non-geometrical field
141
     *  if they are not correct throws an exception
142
     * @throws LrsNeededParameterException
143
     */
144
    public static void validateLayers(LayerCollection layers)throws LrsNeededParameterException {
145
        logger.debug("Validating layers for Create Route");
146
        if (layers==null||layers.getLayersCount()<1){
147
            logger.error("Al least one layer is needed");
148
            throw new LrsNeededParameterException("at_least_one_layer_needed", null);
149
        }
150

    
151
        if (!JLrsUtilsController.validateOneCurveLyrOneNonGeomField(layers)){
152
            logger.error("Impossible to find the layer needed");
153
            throw new LrsNeededParameterException("impossible_to_find_needed_layer",null);
154
        }
155
    }
156

    
157
    /**
158
     * @throws LrsNeededParameterException
159
     */
160
    private void initComponents() throws LrsNeededParameterException {
161

    
162
        validateLayers(layers);
163

    
164
        // Modelos de los combos
165
        FLayersComboBoxModel inputLayerModel = new FLayersComboBoxModel(this.layers);
166
        FeatureAttributeDescriptorsComboBoxModel idRouteFieldComboBoxModel =
167
            new FeatureAttributeDescriptorsComboBoxModel();
168
        FeatureAttributeDescriptorsComboBoxModel fromMeasureFieldComboBoxModel =
169
            new FeatureAttributeDescriptorsComboBoxModel();
170
        FeatureAttributeDescriptorsComboBoxModel toMeasureFieldComboBoxModel =
171
            new FeatureAttributeDescriptorsComboBoxModel();
172

    
173
        // Renderer para los combos de attributeDescriptors
174
        ListCellRenderer featureAttributeDescriptorCellRenderer = new FLayersAttributeDescriptorCellRenderer();
175
        // asignaci?n de renderers y modelos
176
        cmbIdRouteField.setRenderer(featureAttributeDescriptorCellRenderer);
177
        cmbFromMeasureField.setRenderer(featureAttributeDescriptorCellRenderer);
178
        cmbToMeasureField.setRenderer(featureAttributeDescriptorCellRenderer);
179
        cmbIdRouteField.setModel(idRouteFieldComboBoxModel);
180
        cmbFromMeasureField.setModel(fromMeasureFieldComboBoxModel);
181
        cmbToMeasureField.setModel(toMeasureFieldComboBoxModel);
182

    
183
        // renderer para el combo de capas
184
        ListCellRenderer layerNameCellRenderer=new FLayersLayerNameCellRenderer();
185
        // renderer para el combo de capas
186
        cmbInputLayer.setRenderer(layerNameCellRenderer);
187

    
188
        // asignaci?n modelo al combo de capas
189
        cmbInputLayer.setModel(inputLayerModel);
190
        // listener del combo de capas para que actualice el resto de
191
        // componentes
192
        cmbInputLayer.addItemListener(new ItemListener() {
193

    
194
            public void itemStateChanged(ItemEvent e) {
195
                Object item = e.getItem();
196
                if (item instanceof FLyrVect) {
197
                    FLyrVect layer = (FLyrVect) item;
198
                    updateLayer(layer);
199
                }
200
            }
201
        });
202

    
203
        ComboBoxModel<LrsSourceOfMeasures> measureSourceModel =
204
            new DefaultComboBoxModel<LrsSourceOfMeasures>(LrsSourceOfMeasures.values());
205

    
206
        cmbMeasureSource.setModel(measureSourceModel);
207
        cmbMeasureSource.addItemListener(new ItemListener() {
208

    
209
            public void itemStateChanged(ItemEvent event) {
210
                if (event.getStateChange() == ItemEvent.SELECTED) {
211
                    LrsSourceOfMeasures item = (LrsSourceOfMeasures) event.getItem();
212
                    updateSourceOfMeasures(item);
213
                }
214
            }
215
        });
216

    
217
        ComboBoxModel<LrsCoordinatesPriority> coordinatePriorityModel =
218
            new DefaultComboBoxModel<LrsCoordinatesPriority>(LrsCoordinatesPriority.values());
219

    
220
        cmbCoordinatePriority.setModel(coordinatePriorityModel);
221

    
222
        txtMeasureFactor.setValue(new Double(1));
223
        txtMeasureOffset.setValue(new Double(0));
224

    
225
        this.btnBrowser.addActionListener(new ActionListener() {
226

    
227
            public void actionPerformed(ActionEvent e) {
228
                doSelectOuputFile();
229
            }
230
        });
231

    
232
        this.btnAccept.addActionListener(new ActionListener() {
233

    
234
            public void actionPerformed(ActionEvent e) {
235
                canceled = false;
236
                doClose();
237
                listeners.fireActionEvent(new ActionEvent(JLrsCreateRouteParamsController.this, 0, "accept"));
238

    
239
            }
240
        });
241

    
242
        this.btnCancel.addActionListener(new ActionListener() {
243

    
244
            public void actionPerformed(ActionEvent e) {
245
                canceled = true;
246
                doClose();
247
                listeners.fireActionEvent(new ActionEvent(JLrsCreateRouteParamsController.this, 0, "cancel"));
248
            }
249
        });
250

    
251
        setVisibleAceptCancel(false);
252
        canceled = false;
253
    }
254

    
255
    private void doSelectOuputFile() {
256
        final I18nManager i18nManager = ToolsLocator.getI18nManager();
257
        ThreadSafeDialogsManager manager = ToolsSwingLocator.getThreadSafeDialogsManager();
258
        File[] files = manager.showSaveFileDialog(i18nManager.getTranslation("output_file"), null);
259
        if (files != null && files.length > 0) {
260
            File file = files[0];
261
            String absolutePath = file.getAbsolutePath();
262
            if(!StringUtils.endsWithIgnoreCase(absolutePath, ".shp")){
263
                absolutePath = new StringBuilder().append(absolutePath).append(".shp").toString();
264
            }
265
            File outputFile = FileUtils.getFile(absolutePath);
266
            if(outputFile.exists()) {
267
                int resp = JOptionPane.showOptionDialog(
268
                    this.asJComponent(),
269
                    i18nManager.getTranslation("file_already_exists_do_you_want_overwrite_it"),
270
                    i18nManager.getTranslation("output_file"),
271
                    JOptionPane.OK_CANCEL_OPTION,
272
                    JOptionPane.QUESTION_MESSAGE,
273
                    null,
274
                    null,
275
                    JOptionPane.OK_OPTION);
276
                if (resp == JOptionPane.OK_OPTION){
277
                    this.txtOutputFile.setText(absolutePath);
278
                } else {
279
                    doSelectOuputFile();
280
                }
281
            } else {
282
                this.txtOutputFile.setText(absolutePath);
283
            }
284
        }
285

    
286
    }
287

    
288
    private void doClose() {
289
        this.setVisible(false);
290
    }
291

    
292
    public boolean isCanceled() {
293
        return this.canceled;
294
    }
295

    
296
    public void setVisibleAceptCancel(boolean visible) {
297
        this.btnAccept.setVisible(visible);
298
        this.btnCancel.setVisible(visible);
299
    }
300

    
301
    public boolean getVisibleAceptCancel() {
302
        return this.btnAccept.isVisible();
303
    }
304

    
305
    public JComponent asJComponent() {
306
        return this;
307
    }
308

    
309
    public LrsAlgorithmParams getParams() throws LrsGettingParametersException, LrsNeededParameterException {
310
        LrsAlgorithmsManager manager = LrsAlgorithmsLocator.getLrsAlgorithmsManager();
311
        LrsCreateRouteAlgorithmParams params = manager.createLrsCreateRouteAlgorithmParams();
312
        // Recorrer todo del interfaz y rellenar los parametros
313

    
314
      //cmbInputLayer
315
        if (!(this.cmbInputLayer.getSelectedItem() instanceof FLyrVect)){
316
            logger.error("Error getting selected item from cmbInputLayer");
317
            throw new LrsGettingParametersException("error_getting_selected_item_from_cmbInputLayer", null);
318
        }
319
        FLyrVect fLyrVect = (FLyrVect) this.cmbInputLayer.getSelectedItem();
320
        IProjection projection= fLyrVect.getProjection();
321
        if (!(fLyrVect.getFeatureStore() instanceof FeatureStore)){
322
            logger.error("Error getting selected item from cmbInputLayer");
323
            throw new LrsGettingParametersException("error_getting_selected_item_from_cmbInputLayer", null);
324
        }
325
        FeatureStore sourceFeatureStore = (FeatureStore)fLyrVect.getFeatureStore();
326
        if (sourceFeatureStore == null) {
327
            throw new LrsNeededParameterException("need_to_select_a_source_layer", null);
328
        }
329
        params.setSourceFeatureStore(sourceFeatureStore);
330

    
331
        //cmbIdRouteField
332
        if (!(this.cmbIdRouteField.getSelectedItem() instanceof FeatureAttributeDescriptor)){
333
            logger.error("Error getting selected item from cmbIdRouteField");
334
            throw new LrsGettingParametersException("error_getting_selected_item_from_cmbIdRouteField", null);
335
        }
336
        FeatureAttributeDescriptor idRouteField = (FeatureAttributeDescriptor) this.cmbIdRouteField.getSelectedItem();
337
        if (idRouteField == null) {
338
            throw new LrsNeededParameterException("need_to_select_a_route_identifier_field", null);
339
        }
340
        params.setIdRouteField(idRouteField);
341

    
342
        //OutputStore
343
        String outputLayerPathFile = this.txtOutputFile.getText();
344
        if(StringUtils.isEmpty(outputLayerPathFile)){
345
            throw new LrsNeededParameterException("need_to_fill_the_target_path", null);
346
        }
347
        try {
348
            NewFeatureStoreParameters newFeatureStoreParams=JLrsUtilsController.createFeatureStoreParams(outputLayerPathFile, projection);
349
            params.setNewFeatureStoreParameters(newFeatureStoreParams);
350
        } catch (Exception e) {
351
            throw new LrsNeededParameterException("error_creating_outputStore", e);
352
        }
353

    
354
        LrsSourceOfMeasures measureSources = (LrsSourceOfMeasures) this.cmbMeasureSource.getSelectedItem();
355
        FeatureAttributeDescriptor fromMeasureField = (FeatureAttributeDescriptor) this.cmbFromMeasureField.getSelectedItem();
356
        FeatureAttributeDescriptor toMeasureField = (FeatureAttributeDescriptor) this.cmbToMeasureField.getSelectedItem();
357
        params.setSourceOfMeasures(measureSources);
358
        switch (measureSources) {
359
        case ONE_FIELD:
360
            if (fromMeasureField == null) {
361
                throw new LrsNeededParameterException("need_to_select_a_length_measure_field", null);
362
            }
363
            params.setFromMeasureField((FeatureAttributeDescriptor) this.cmbFromMeasureField.getSelectedItem());
364
            params.setToMeasureField(null);
365
            break;
366
        case TWO_FIELDS:
367
            if (fromMeasureField == null) {
368
                throw new LrsNeededParameterException("need_to_select_a_from_measure_field", null);
369
            }
370
            params.setFromMeasureField((FeatureAttributeDescriptor) this.cmbFromMeasureField.getSelectedItem());
371
            if (toMeasureField == null) {
372
                throw new LrsNeededParameterException("need_to_select_a_to_measure_field", null);
373
            }
374
            params.setToMeasureField((FeatureAttributeDescriptor) this.cmbToMeasureField.getSelectedItem());
375
            break;
376
        case LENGTH:
377
        default:
378
            params.setFromMeasureField(null);
379
            params.setToMeasureField(null);
380
            break;
381
        }
382
        params.setCoordinatePriority((LrsCoordinatesPriority) this.cmbCoordinatePriority.getSelectedItem());
383

    
384
        Object measureFactor = this.txtMeasureFactor.getValue();
385
        if (measureFactor!=null && measureFactor instanceof Double){
386
            params.setMeasureFactor((Double)measureFactor);
387
        }else {
388
            params.setMeasureFactor(0);
389
        }
390
        Object measureOffset = this.txtMeasureOffset.getValue();
391
        if (measureOffset!=null && measureOffset instanceof Double){
392
            params.setMeasureOffset((Double)measureOffset);
393
        }else {
394
            params.setMeasureOffset(0);
395
        }
396

    
397
        params.setIgnoreSpatialGaps(this.chkIgnoreSpatialGaps.isSelected());
398

    
399
        return params;
400
    }
401

    
402
    public void setParams(LrsAlgorithmParams params) {
403
        if (params == null) {
404
            clear();
405
            return;
406
        }
407
        // Rellena los campos con los valores de params
408
        LrsCreateRouteAlgorithmParams parameters = (LrsCreateRouteAlgorithmParams) params;
409

    
410
        this.cmbMeasureSource.setSelectedItem(parameters.getSourceOfMeasures());
411
        this.cmbCoordinatePriority.setSelectedItem(parameters.getCoordinatePriority());
412

    
413
        FeatureStore sourceFeatureStore = parameters.getSourceFeatureStore();
414
        if(layers!=null && sourceFeatureStore!=null){
415
            FLayer layer = layers.getLayer(sourceFeatureStore.getName());
416
            this.cmbInputLayer.setSelectedItem(layer);
417
        }
418

    
419
        NewFeatureStoreParameters newFeatureStoreParameters = parameters.getNewFeatureStoreParameters();
420
        if(newFeatureStoreParameters instanceof SHPNewStoreParameters){
421
            this.txtOutputFile.setText(((SHPNewStoreParameters)newFeatureStoreParameters).getSHPFile().getAbsolutePath());
422
        }
423

    
424
        this.cmbIdRouteField.setSelectedItem(parameters.getIdRouteField());
425
        this.cmbFromMeasureField.setSelectedItem(parameters.getFromMeasureField());
426
        this.cmbToMeasureField.setSelectedItem(parameters.getToMeasureField());
427
        this.txtMeasureFactor.setValue(parameters.getMeasureFactor());
428
        this.txtMeasureOffset.setValue(parameters.getMeasureOffset());
429

    
430
    }
431

    
432
    public void clear() {
433
        this.txtOutputFile.setText("");
434
        this.txtMeasureFactor.setValue(1.0);
435
        this.txtMeasureOffset.setValue(0.0);
436
        this.cmbMeasureSource.setSelectedIndex(0);
437
        this.cmbFromMeasureField.setEnabled(false);
438
        this.cmbToMeasureField.setEnabled(false);
439
        this.cmbCoordinatePriority.setSelectedIndex(0);
440
        Object inputLayerSelected = this.cmbInputLayer.getSelectedItem();
441
        if (inputLayerSelected != null) {
442
            this.updateLayer((FLyrVect) inputLayerSelected);
443
        }
444
        Object measureSourceSelected = this.cmbMeasureSource.getSelectedItem();
445
        if (measureSourceSelected != null) {
446
            this.updateSourceOfMeasures((LrsSourceOfMeasures) measureSourceSelected);
447
        }
448

    
449
    }
450

    
451
    private void updateLayer(FLyrVect layer) {
452
        logger.info(new StringBuilder().append("Setting layer ").append(layer.getName()).toString());
453
        FeatureStore featureStore = layer.getFeatureStore();
454
        try {
455
            FeatureType type = featureStore.getDefaultFeatureType();
456
            // Se renuevan los combos de attributeDescriptors
457
            FeatureAttributeDescriptorsComboBoxModel idRouteFieldComboBoxModel =
458
                new FeatureAttributeDescriptorsComboBoxModel();
459
            FeatureAttributeDescriptorsComboBoxModel fromMeasureFieldComboBoxModel =
460
                new FeatureAttributeDescriptorsComboBoxModel();
461
            FeatureAttributeDescriptorsComboBoxModel toMeasureFieldComboBoxModel =
462
                new FeatureAttributeDescriptorsComboBoxModel();
463

    
464
            this.cmbIdRouteField.setModel(idRouteFieldComboBoxModel);
465
            this.cmbFromMeasureField.setModel(fromMeasureFieldComboBoxModel);
466
            this.cmbToMeasureField.setModel(toMeasureFieldComboBoxModel);
467

    
468
            FeatureAttributeDescriptor[] attributeDescriptors = type.getAttributeDescriptors();
469
            for (int i = 0; i < attributeDescriptors.length; i++) {
470
                FeatureAttributeDescriptor featureAttributeDescriptor = attributeDescriptors[i];
471
                if (featureAttributeDescriptor.getDataType().getType() != DataTypes.GEOMETRY) {
472
                    logger.info(new StringBuilder().append("Adding field ")
473
                        .append(featureAttributeDescriptor.getName()).toString());
474

    
475
                    JLrsCreateRouteParamsController.this.cmbIdRouteField.addItem(featureAttributeDescriptor);
476
                    if (featureAttributeDescriptor.getDataType().isNumeric()) {
477
                        JLrsCreateRouteParamsController.this.cmbFromMeasureField.addItem(featureAttributeDescriptor);
478
                        JLrsCreateRouteParamsController.this.cmbToMeasureField.addItem(featureAttributeDescriptor);
479
                    }
480
                }
481
            }
482
            this.cmbIdRouteField.invalidate();
483
            this.cmbFromMeasureField.invalidate();
484
            this.cmbToMeasureField.invalidate();
485

    
486
        } catch (DataException e1) {
487
            logger.warn(
488
                new StringBuilder().append("Error getting default feature type from layer ").append(layer.getName())
489
                    .toString(), e1);
490
        }
491
    }
492

    
493
    private void updateSourceOfMeasures(LrsSourceOfMeasures item) {
494
        switch (item) {
495
        case LENGTH:
496
            cmbFromMeasureField.setEnabled(false);
497
            cmbToMeasureField.setEnabled(false);
498
            cmbCoordinatePriority.setEnabled(true);
499
            chkIgnoreSpatialGaps.setEnabled(true);
500
            break;
501
        case ONE_FIELD:
502
            cmbFromMeasureField.setEnabled(true);
503
            cmbToMeasureField.setEnabled(false);
504
            cmbCoordinatePriority.setEnabled(true);
505
            chkIgnoreSpatialGaps.setEnabled(true);
506
            break;
507
        case TWO_FIELDS:
508
            cmbFromMeasureField.setEnabled(true);
509
            cmbToMeasureField.setEnabled(true);
510
            cmbCoordinatePriority.setEnabled(false);
511
            chkIgnoreSpatialGaps.setEnabled(false);
512
            break;
513
        default:
514
            break;
515
        }
516
    }
517
}