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

History | View | Annotate | Download (25.6 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.Component;
26
import java.awt.event.ActionEvent;
27
import java.awt.event.ActionListener;
28
import java.awt.event.ItemEvent;
29
import java.awt.event.ItemListener;
30
import java.io.File;
31
import java.util.Locale;
32

    
33
import javax.swing.ComboBoxModel;
34
import javax.swing.DefaultComboBoxModel;
35
import javax.swing.DefaultListCellRenderer;
36
import javax.swing.JComponent;
37
import javax.swing.JFileChooser;
38
import javax.swing.JLabel;
39
import javax.swing.JList;
40
import javax.swing.JOptionPane;
41
import javax.swing.ListCellRenderer;
42
import javax.swing.filechooser.FileFilter;
43

    
44
import org.apache.commons.io.FileUtils;
45
import org.apache.commons.io.filefilter.FileFilterUtils;
46
import org.apache.commons.lang3.StringUtils;
47
import org.cresques.cts.IProjection;
48
import org.slf4j.Logger;
49
import org.slf4j.LoggerFactory;
50

    
51
import org.gvsig.fmap.dal.DALLocator;
52
import org.gvsig.fmap.dal.DataManager;
53
import org.gvsig.fmap.dal.DataStoreParameters;
54
import org.gvsig.fmap.dal.exception.DataException;
55
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
56
import org.gvsig.fmap.dal.feature.EditableFeatureType;
57
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
58
import org.gvsig.fmap.dal.feature.FeatureStore;
59
import org.gvsig.fmap.dal.feature.FeatureType;
60
import org.gvsig.fmap.geom.DataTypes;
61
import org.gvsig.fmap.geom.Geometry.SUBTYPES;
62
import org.gvsig.fmap.geom.Geometry.TYPES;
63
import org.gvsig.fmap.geom.GeometryException;
64
import org.gvsig.fmap.geom.GeometryLocator;
65
import org.gvsig.fmap.mapcontext.layers.FLayer;
66
//import org.gvsig.fmap.mapcontext.layers.FLayers;
67
import org.gvsig.fmap.mapcontext.layers.operations.LayerCollection;
68
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
69
import org.gvsig.lrs.lib.api.LrsAlgorithmParams;
70
import org.gvsig.lrs.lib.api.LrsAlgorithmsLocator;
71
import org.gvsig.lrs.lib.api.LrsAlgorithmsManager;
72
import org.gvsig.lrs.lib.api.LrsCoordinatesPriority;
73
import org.gvsig.lrs.lib.api.LrsCreateRouteAlgorithmParams;
74
import org.gvsig.lrs.lib.api.LrsSourceOfMeasures;
75
import org.gvsig.lrs.lib.api.exceptions.LrsGettingParametersException;
76
import org.gvsig.lrs.lib.api.exceptions.LrsNeededParameterException;
77
import org.gvsig.lrs.swing.api.JLrsAlgorithmParams;
78
import org.gvsig.tools.ToolsLocator;
79
import org.gvsig.tools.i18n.I18nManager;
80
import org.gvsig.tools.locator.LocatorException;
81
import org.gvsig.tools.swing.api.ActionListenerSupport;
82
import org.gvsig.tools.swing.api.ToolsSwingLocator;
83
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
84

    
85
/**
86
 * @author fdiaz
87
 *
88
 */
89
public class JLrsCreateRouteParamsController extends JLrsCreateRouteParamsView implements JLrsAlgorithmParams {
90

    
91
    /**
92
     *
93
     */
94
    private static final long serialVersionUID = 273909136196706713L;
95

    
96
    private static final Logger logger = LoggerFactory.getLogger(JLrsCreateRouteParamsController.class);
97

    
98
    private boolean canceled;
99
    private ActionListenerSupport listeners = ToolsSwingLocator.getToolsSwingManager().createActionListenerSupport();
100

    
101
    private LayerCollection layers;
102

    
103
    /**
104
     * @param layers
105
     *
106
     */
107
    public JLrsCreateRouteParamsController(LayerCollection layers, LrsAlgorithmParams params) {
108
        super();
109
        this.layers = layers;
110
        initComponents();
111
        translate();
112
        setParams(params);
113
    }
114

    
115
    public void addActionListener(ActionListener listener) {
116
        listeners.addActionListener(listener);
117
    }
118

    
119
    public void removeActionListener(ActionListener listener) {
120
        listeners.removeActionListener(listener);
121
    }
122

    
123
    private void translate() {
124
        I18nManager i18nManager = ToolsLocator.getI18nManager();
125

    
126
        lblInputLayer.setText(i18nManager.getTranslation(lblInputLayer.getText()));
127
        lblIdRouteField.setText(i18nManager.getTranslation(lblIdRouteField.getText()));
128
        lblOutputFile.setText(i18nManager.getTranslation(lblOutputFile.getText()));
129
        lblMeasureSource.setText(i18nManager.getTranslation(lblMeasureSource.getText()));
130
        lblFromMeasureField.setText(i18nManager.getTranslation(lblFromMeasureField.getText()));
131
        lblToMeasureField.setText(i18nManager.getTranslation(lblToMeasureField.getText()));
132
        lblCoordinatesPriority.setText(i18nManager.getTranslation(lblCoordinatesPriority.getText()));
133
        lblMeasureFactor.setText(i18nManager.getTranslation(lblMeasureFactor.getText()));
134
        lblMeasureOffset.setText(i18nManager.getTranslation(lblMeasureOffset.getText()));
135
        chkIgnoreSpatialGaps.setText(i18nManager.getTranslation(chkIgnoreSpatialGaps.getText()));
136
        btnBrowser.setText("\u2026");
137
        btnAccept.setText(i18nManager.getTranslation(btnAccept.getText()));
138
        btnCancel.setText(i18nManager.getTranslation(btnCancel.getText()));
139

    
140
    }
141

    
142
    /**
143
     *
144
     */
145
    public void setLocate(Locale locale) {
146
        Locale l = super.getLocale();
147
        if (!l.equals(locale)) {
148
            translate();
149
        }
150
        super.setLocale(locale);
151
    }
152

    
153
    /**
154
     */
155
    private void initComponents() {
156

    
157
        // Modelos de los combos
158
        FLayersComboBoxModel inputLayerModel = new FLayersComboBoxModel(this.layers);
159
        FeatureAttributeDescriptorsComboBoxModel idRouteFieldComboBoxModel =
160
            new FeatureAttributeDescriptorsComboBoxModel();
161
        FeatureAttributeDescriptorsComboBoxModel fromMeasureFieldComboBoxModel =
162
            new FeatureAttributeDescriptorsComboBoxModel();
163
        FeatureAttributeDescriptorsComboBoxModel toMeasureFieldComboBoxModel =
164
            new FeatureAttributeDescriptorsComboBoxModel();
165

    
166
        // Renderer para los combos de attributeDescriptors
167
        ListCellRenderer featureAttributeDescriptorCellRenderer = new ListCellRenderer() {
168

    
169
            protected DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();
170

    
171
            public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
172
                boolean cellHasFocus) {
173
                JLabel renderer =
174
                    (JLabel) defaultRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
175
                if (value instanceof FeatureAttributeDescriptor) {
176
                    renderer.setText(((FeatureAttributeDescriptor) value).getName());
177
                }
178
                return renderer;
179
            }
180
        };
181
        // asignaci?n de renderers y modelos
182
        cmbIdRouteField.setRenderer(featureAttributeDescriptorCellRenderer);
183
        cmbFromMeasureField.setRenderer(featureAttributeDescriptorCellRenderer);
184
        cmbToMeasureField.setRenderer(featureAttributeDescriptorCellRenderer);
185
        cmbIdRouteField.setModel(idRouteFieldComboBoxModel);
186
        cmbFromMeasureField.setModel(fromMeasureFieldComboBoxModel);
187
        cmbToMeasureField.setModel(toMeasureFieldComboBoxModel);
188

    
189
        // renderer para el combo de capas
190
        cmbInputLayer.setRenderer(new ListCellRenderer() {
191

    
192
            protected DefaultListCellRenderer defaultRenderer = new DefaultListCellRenderer();
193

    
194
            public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
195
                boolean cellHasFocus) {
196
                JLabel renderer =
197
                    (JLabel) defaultRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
198
                if (value instanceof FLayer) {
199
                    renderer.setText(((FLayer) value).getName());
200
                }
201
                return renderer;
202
            }
203
        });
204

    
205
        // asignaci?n modelo al combo de capas
206
        cmbInputLayer.setModel(inputLayerModel);
207
        // listener del combo de capas para que actualice el resto de
208
        // componentes
209
        cmbInputLayer.addItemListener(new ItemListener() {
210

    
211
            public void itemStateChanged(ItemEvent e) {
212
                Object item = e.getItem();
213
                if (item instanceof FLyrVect) {
214
                    FLyrVect layer = (FLyrVect) item;
215
                    updateLayer(layer);
216
                }
217
            }
218
        });
219

    
220
        ComboBoxModel<LrsSourceOfMeasures> measureSourceModel =
221
            new DefaultComboBoxModel<LrsSourceOfMeasures>(LrsSourceOfMeasures.values());
222

    
223
        cmbMeasureSource.setModel(measureSourceModel);
224
        cmbMeasureSource.addItemListener(new ItemListener() {
225

    
226
            public void itemStateChanged(ItemEvent event) {
227
                if (event.getStateChange() == ItemEvent.SELECTED) {
228
                    LrsSourceOfMeasures item = (LrsSourceOfMeasures) event.getItem();
229
                    updateSourceOfMeasures(item);
230
                }
231
            }
232
        });
233

    
234
        ComboBoxModel<LrsCoordinatesPriority> coordinatePriorityModel =
235
            new DefaultComboBoxModel<LrsCoordinatesPriority>(LrsCoordinatesPriority.values());
236

    
237
        cmbCoordinatePriority.setModel(coordinatePriorityModel);
238

    
239
        this.btnBrowser.addActionListener(new ActionListener() {
240

    
241
            public void actionPerformed(ActionEvent e) {
242
                doSelectOuputFile();
243
            }
244
        });
245

    
246
        this.btnAccept.addActionListener(new ActionListener() {
247

    
248
            public void actionPerformed(ActionEvent e) {
249
                canceled = false;
250
                doClose();
251
                listeners.fireActionEvent(new ActionEvent(JLrsCreateRouteParamsController.this, 0, "accept"));
252

    
253
            }
254
        });
255

    
256
        this.btnCancel.addActionListener(new ActionListener() {
257

    
258
            public void actionPerformed(ActionEvent e) {
259
                canceled = true;
260
                doClose();
261
                listeners.fireActionEvent(new ActionEvent(JLrsCreateRouteParamsController.this, 0, "cancel"));
262
            }
263
        });
264

    
265
        setVisibleAceptCancel(false);
266
        canceled = false;
267
    }
268

    
269
    private void doSelectOuputFile() {
270
        final I18nManager i18nManager = ToolsLocator.getI18nManager();
271
        ThreadSafeDialogsManager manager = ToolsSwingLocator.getThreadSafeDialogsManager();
272
        File[] files = manager.showSaveFileDialog(i18nManager.getTranslation("output_file"), null);
273
        if (files != null && files.length > 0) {
274
            File file = files[0];
275
            String absolutePath = file.getAbsolutePath();
276
            if(!StringUtils.endsWithIgnoreCase(absolutePath, ".shp")){
277
                absolutePath = new StringBuilder().append(absolutePath).append(".shp").toString();
278
            }
279
            File outputFile = FileUtils.getFile(absolutePath);
280
            if(outputFile.exists()) {
281
                int resp = JOptionPane.showOptionDialog(
282
                    this.asJComponent(),
283
                    i18nManager.getTranslation("file_already_exists_do_you_want_overwrite_it"),
284
                    i18nManager.getTranslation("output_file"),
285
                    JOptionPane.OK_CANCEL_OPTION,
286
                    JOptionPane.QUESTION_MESSAGE,
287
                    null,
288
                    null,
289
                    JOptionPane.OK_OPTION);
290
                if (resp == JOptionPane.OK_OPTION){
291
                    this.txtOutputFile.setText(absolutePath);
292
                } else {
293
                    doSelectOuputFile();
294
                }
295
            } else {
296
                this.txtOutputFile.setText(absolutePath);
297
            }
298
        }
299

    
300
    }
301

    
302
    private void doClose() {
303
        this.setVisible(false);
304
    }
305

    
306
    public boolean isCanceled() {
307
        return this.canceled;
308
    }
309

    
310
    public void setVisibleAceptCancel(boolean visible) {
311
        this.btnAccept.setVisible(visible);
312
        this.btnCancel.setVisible(visible);
313
    }
314

    
315
    public boolean getVisibleAceptCancel() {
316
        return this.btnAccept.isVisible();
317
    }
318

    
319
    public JComponent asJComponent() {
320
        return this;
321
    }
322

    
323
    public LrsAlgorithmParams getParams() throws LrsGettingParametersException, LrsNeededParameterException {
324
        I18nManager i18nManager = ToolsLocator.getI18nManager();
325
        FeatureAttributeDescriptor idRouteField = (FeatureAttributeDescriptor) this.cmbIdRouteField.getSelectedItem();
326
        if (idRouteField == null) {
327
            throw new LrsNeededParameterException("need_to_select_a_route_identifier_field", null);
328
        }
329
        String outputLayerPath = this.txtOutputFile.getText();
330
        if(StringUtils.isEmpty(outputLayerPath)){
331
            throw new LrsNeededParameterException("need_to_fill_the_target_path", null);
332
        }
333

    
334

    
335

    
336

    
337
        LrsAlgorithmsManager manager = LrsAlgorithmsLocator.getLrsAlgorithmsManager();
338
        LrsCreateRouteAlgorithmParams params = manager.createLrsCreateRouteAlgorithmParams();
339
        // Recorrer todo del interfaz y rellenar los parametros
340
        FeatureStore sourceFeatureStore = ((FLyrVect) this.cmbInputLayer.getSelectedItem()).getFeatureStore();
341
        params.setSourceFeatureStore(sourceFeatureStore);
342
        params.setIdRouteField((FeatureAttributeDescriptor) this.cmbIdRouteField.getSelectedItem());
343

    
344
        // Crear un SHP a partir de la ruta con el atributo de indentificadores
345
        // de rutas y pasar el featureStore
346
        DataManager dataManager = DALLocator.getDataManager();
347
        FeatureType featureType = dataManager.createFeatureType();
348
        EditableFeatureType editableFeatureType;
349
        if (featureType instanceof EditableFeatureType) {
350
            editableFeatureType = (EditableFeatureType) featureType;
351
        } else {
352
            editableFeatureType = featureType.getEditable();
353
        }
354
        editableFeatureType.add(idRouteField.getName(), idRouteField.getType(), idRouteField.getSize());
355
        editableFeatureType.add("GEOMETRY", DataTypes.GEOMETRY);
356
        editableFeatureType.setDefaultGeometryAttributeName("GEOMETRY");
357
        EditableFeatureAttributeDescriptor geomAttributeDescriptor =
358
            editableFeatureType.getEditableAttributeDescriptor("GEOMETRY");
359
        // FIXME: Cambiar por GEOM2DM;
360
        try {
361
            geomAttributeDescriptor.setGeometryType(GeometryLocator.getGeometryManager().getGeometryType(
362
                TYPES.MULTICURVE, SUBTYPES.GEOM3D));
363
        } catch (GeometryException e2) {
364
            throw new LrsGettingParametersException("Error setting geometry type in attribute descriptor", e2);
365
        } catch (LocatorException e2) {
366
            throw new LrsGettingParametersException("Error getting geometry manager", e2);
367
        }
368

    
369
        FeatureType sourceFeatureType;
370
        try {
371
            sourceFeatureType = sourceFeatureStore.getDefaultFeatureType();
372
        } catch (DataException e1) {
373
            throw new LrsGettingParametersException("Error getting feature type from source feature store", e1);
374
        }
375
        IProjection sourceProjection = sourceFeatureType.getDefaultSRS();
376
        try {
377
            manager.createNewShape(editableFeatureType, TYPES.MULTICURVE, outputLayerPath, sourceProjection);
378
        } catch (Exception e1) {
379
            throw new LrsGettingParametersException(new StringBuilder().append("Error creating a new shape in ")
380
                .append(outputLayerPath).toString(), e1);
381
        }
382
        FeatureStore outputFeatoreStore;
383
        try {
384
            outputFeatoreStore = getFeatureStore(outputLayerPath, sourceProjection);
385
        } catch (Exception e) {
386
            throw new LrsGettingParametersException(new StringBuilder().append("Error getting feature store from ")
387
                .append(outputLayerPath).toString(), e);
388
        }
389
        params.setOutputFeatoreStore(outputFeatoreStore);
390
        // FIN DE Crear un SHP a partir de la ruta y de y pasar el featureStore
391

    
392
        LrsSourceOfMeasures measureSources = (LrsSourceOfMeasures) this.cmbMeasureSource.getSelectedItem();
393
        FeatureAttributeDescriptor fromMeasureField = (FeatureAttributeDescriptor) this.cmbFromMeasureField.getSelectedItem();
394
        FeatureAttributeDescriptor toMeasureField = (FeatureAttributeDescriptor) this.cmbToMeasureField.getSelectedItem();
395
        params.setSourceOfMeasures(measureSources);
396
        switch (measureSources) {
397
        case ONE_FIELD:
398
            if (fromMeasureField == null) {
399
                throw new LrsNeededParameterException("need_to_select_a_from_measure_field", null);
400
            }
401
            params.setFromMeasureField((FeatureAttributeDescriptor) this.cmbFromMeasureField.getSelectedItem());
402
            params.setToMeasureField(null);
403
            break;
404
        case TWO_FIELDS:
405
            if (fromMeasureField == null) {
406
                throw new LrsNeededParameterException("need_to_select_a_from_measure_field", null);
407
            }
408
            params.setFromMeasureField((FeatureAttributeDescriptor) this.cmbFromMeasureField.getSelectedItem());
409
            if (toMeasureField == null) {
410
                throw new LrsNeededParameterException("need_to_select_a_to_measure_field", null);
411
            }
412
            params.setToMeasureField((FeatureAttributeDescriptor) this.cmbToMeasureField.getSelectedItem());
413
            break;
414
        case LENGTH:
415
        default:
416
            params.setFromMeasureField(null);
417
            params.setToMeasureField(null);
418
            break;
419
        }
420
        params.setCoordinatePriority((LrsCoordinatesPriority) this.cmbCoordinatePriority.getSelectedItem());
421

    
422

    
423
        Double measureFactor = (Double) this.txtMeasureFactor.getValue();
424
        params.setMeasureFactor(measureFactor);
425
        Double measureOffset = (Double) this.txtMeasureOffset.getValue();
426
        params.setMeasureOffset(measureOffset);
427
        params.setIgnoreSpatialGaps(this.chkIgnoreSpatialGaps.isSelected());
428

    
429
        return params;
430
    }
431

    
432
    public void setParams(LrsAlgorithmParams params) {
433
        if (params == null) {
434
            clear();
435
            return;
436
        }
437
        // Rellena los campos con los valores de params
438
        LrsCreateRouteAlgorithmParams parameters = (LrsCreateRouteAlgorithmParams) params;
439

    
440
        this.cmbMeasureSource.setSelectedItem(parameters.getSourceOfMeasures());
441
        this.cmbCoordinatePriority.setSelectedItem(parameters.getCoordinatePriority());
442

    
443
        FeatureStore outputFeatoreStore = parameters.getOutputFeatoreStore();
444
        // FIXME: rellenar ?C?mo?
445
        // this.cmbInputLayer.setSelectedItem(parameters.getSourceFeatureStore());
446
        // this.txtOutputFile.setText(outputFeatoreStore);
447

    
448
        this.cmbIdRouteField.setSelectedItem(parameters.getIdRouteField());
449
        this.cmbFromMeasureField.setSelectedItem(parameters.getFromMeasureField());
450
        this.cmbToMeasureField.setSelectedItem(parameters.getToMeasureField());
451
        this.txtMeasureFactor.setValue(parameters.getMeasureFactor());
452
        this.txtMeasureOffset.setValue(parameters.getMeasureOffset());
453

    
454
    }
455

    
456
    public void clear() {
457
        this.txtOutputFile.setText("");
458
        this.txtMeasureFactor.setValue(1.0);
459
        this.txtMeasureOffset.setValue(0.0);
460
        this.cmbMeasureSource.setSelectedIndex(0);
461
        this.cmbFromMeasureField.setEnabled(false);
462
        this.cmbToMeasureField.setEnabled(false);
463
        this.cmbCoordinatePriority.setSelectedIndex(0);
464
        Object inputLayerSelected = this.cmbInputLayer.getSelectedItem();
465
        if (inputLayerSelected != null) {
466
            this.updateLayer((FLyrVect) inputLayerSelected);
467
        }
468
        Object measureSourceSelected = this.cmbMeasureSource.getSelectedItem();
469
        if (measureSourceSelected != null) {
470
            this.updateSourceOfMeasures((LrsSourceOfMeasures) measureSourceSelected);
471
        }
472

    
473
    }
474

    
475
    private void updateLayer(FLyrVect layer) {
476
        logger.info(new StringBuilder().append("Setting layer ").append(layer.getName()).toString());
477
        FeatureStore featureStore = layer.getFeatureStore();
478
        try {
479
            FeatureType type = featureStore.getDefaultFeatureType();
480
            // Se renuevan los combos de attributeDescriptors
481
            FeatureAttributeDescriptorsComboBoxModel idRouteFieldComboBoxModel =
482
                new FeatureAttributeDescriptorsComboBoxModel();
483
            FeatureAttributeDescriptorsComboBoxModel fromMeasureFieldComboBoxModel =
484
                new FeatureAttributeDescriptorsComboBoxModel();
485
            FeatureAttributeDescriptorsComboBoxModel toMeasureFieldComboBoxModel =
486
                new FeatureAttributeDescriptorsComboBoxModel();
487

    
488
            this.cmbIdRouteField.setModel(idRouteFieldComboBoxModel);
489
            this.cmbFromMeasureField.setModel(fromMeasureFieldComboBoxModel);
490
            this.cmbToMeasureField.setModel(toMeasureFieldComboBoxModel);
491

    
492
            FeatureAttributeDescriptor[] attributeDescriptors = type.getAttributeDescriptors();
493
            for (int i = 0; i < attributeDescriptors.length; i++) {
494
                FeatureAttributeDescriptor featureAttributeDescriptor = attributeDescriptors[i];
495
                if (featureAttributeDescriptor.getDataType().getType() != DataTypes.GEOMETRY) {
496
                    logger.info(new StringBuilder().append("Adding field ")
497
                        .append(featureAttributeDescriptor.getName()).toString());
498

    
499
                    JLrsCreateRouteParamsController.this.cmbIdRouteField.addItem(featureAttributeDescriptor);
500
                    if (featureAttributeDescriptor.getDataType().isNumeric()) {
501
                        JLrsCreateRouteParamsController.this.cmbFromMeasureField.addItem(featureAttributeDescriptor);
502
                        JLrsCreateRouteParamsController.this.cmbToMeasureField.addItem(featureAttributeDescriptor);
503
                    }
504
                }
505
            }
506
            this.cmbIdRouteField.invalidate();
507
            this.cmbFromMeasureField.invalidate();
508
            this.cmbToMeasureField.invalidate();
509

    
510
        } catch (DataException e1) {
511
            logger.warn(
512
                new StringBuilder().append("Error getting default feature type from layer ").append(layer.getName())
513
                    .toString(), e1);
514
        }
515
    }
516

    
517
    private void updateSourceOfMeasures(LrsSourceOfMeasures item) {
518
        switch (item) {
519
        case LENGTH:
520
            cmbFromMeasureField.setEnabled(false);
521
            cmbToMeasureField.setEnabled(false);
522
            break;
523
        case ONE_FIELD:
524
            cmbFromMeasureField.setEnabled(true);
525
            cmbToMeasureField.setEnabled(false);
526
            break;
527
        case TWO_FIELDS:
528
            cmbFromMeasureField.setEnabled(true);
529
            cmbToMeasureField.setEnabled(true);
530
            break;
531
        default:
532
            break;
533
        }
534
    }
535

    
536
    protected FeatureStore getFeatureStore(String outputLayerPath, IProjection projection) throws Exception {
537

    
538
        DataManager dataManager = DALLocator.getDataManager();
539
        DataStoreParameters dataStoreParams = dataManager.createStoreParameters("Shape");
540
        dataStoreParams.setDynValue("shpfile", outputLayerPath);
541
        dataStoreParams.setDynValue("CRS", projection);
542
        dataStoreParams.setDynValue("useNullGeometry", false);
543
        dataStoreParams.validate();
544

    
545
        return (FeatureStore) dataManager.openStore("Shape", dataStoreParams);
546
    }
547

    
548
    // private void test() {
549
    // WindowManager winManager = ToolsSwingLocator.getWindowManager();
550
    //
551
    // LrsAlgorithmsSwingManager manager =
552
    // LrsAlgorithmsSwingLocator.getLrsAlgorithmsSwingManager();
553
    //
554
    // JLrsAlgorithmParams panel =
555
    // manager.createJLrsCreateRouteAlgorithmParameters(null, null);
556
    // panel.setVisibleAceptCancel(true);
557
    // winManager.showWindow(panel.asJComponent(), "titulo",
558
    // WindowManager.MODE.DIALOG);
559
    // if (panel.isCanceled()) {
560
    // return;
561
    // }
562
    // LrsAlgorithmParams params = panel.getParams();
563
    // // FIXME: Crear algoritmo con estos parametros
564
    // }
565
    //
566
    // private void test2() {
567
    // final WindowManager winManager = ToolsSwingLocator.getWindowManager();
568
    //
569
    // LrsAlgorithmsSwingManager manager =
570
    // LrsAlgorithmsSwingLocator.getLrsAlgorithmsSwingManager();
571
    //
572
    // JLrsAlgorithmParams panel =
573
    // manager.createJLrsCreateRouteAlgorithmParameters(null, null);
574
    // panel.setVisibleAceptCancel(true);
575
    // panel.addActionListener(new ActionListener() {
576
    //
577
    // public void actionPerformed(ActionEvent e) {
578
    // JLrsAlgorithmParams panel = (JLrsAlgorithmParams) e.getSource();
579
    // if (panel.isCanceled()) {
580
    // return;
581
    // }
582
    // LrsAlgorithmParams params = panel.getParams();
583
    // // FIXME: Crear algoritmo con estos parametros
584
    //
585
    // LrsAlgorithmsManager algorithmsManager =
586
    // LrsAlgorithmsLocator.getLrsAlgorithmsManager();
587
    // final LrsAlgorithm algorithm =
588
    // algorithmsManager.createLrsAlgorithm(params);
589
    // final SimpleTaskStatus taskStatus =
590
    // ToolsLocator.getTaskStatusManager().createDefaultSimpleTaskStatus("");
591
    //
592
    // // FIXME:
593
    // DefaultProgressDialogController progressDialog = new
594
    // DefaultProgressDialogController(taskStatus);
595
    //
596
    // // winManager.showWindow(progressDialog.asJComponent(), "TIT",
597
    // // WindowManager.MODE.WINDOW);
598
    // winManager.showWindow(progressDialog, "TIT", WindowManager.MODE.WINDOW);
599
    //
600
    // Thread task = new Thread(new Runnable() {
601
    //
602
    // public void run() {
603
    // algorithm.execute(taskStatus);
604
    // }
605
    // });
606
    // task.start();
607
    //
608
    // }
609
    // });
610
    // winManager.showWindow(panel.asJComponent(), "titulo",
611
    // WindowManager.MODE.WINDOW);
612
    //
613
    // }
614
}