Revision 851 org.gvsig.lrs/trunk/org.gvsig.lrs/org.gvsig.lrs.swing/org.gvsig.lrs.swing.impl/src/main/java/org/gvsig/lrs/swing/impl/JLrsEditRouteCalibrationController.java

View differences:

JLrsEditRouteCalibrationController.java
15 15
import java.util.ArrayList;
16 16
import java.util.List;
17 17
import java.util.Locale;
18
import java.util.logging.Level;
18 19

  
19 20
import javax.swing.ComboBoxModel;
20 21
import javax.swing.DefaultComboBoxModel;
21 22
import javax.swing.JComponent;
23
import javax.swing.SwingUtilities;
22 24
import javax.swing.event.DocumentEvent;
23 25
import javax.swing.event.DocumentListener;
24 26
import javax.swing.event.ListSelectionEvent;
......
34 36
import org.gvsig.fmap.dal.exception.ReadException;
35 37
import org.gvsig.fmap.dal.feature.Feature;
36 38
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
39
import org.gvsig.fmap.dal.feature.FeatureReference;
37 40
import org.gvsig.fmap.dal.feature.FeatureSelection;
38 41
import org.gvsig.fmap.dal.feature.FeatureSet;
39 42
import org.gvsig.fmap.dal.feature.FeatureStore;
......
61 64
import org.gvsig.lrs.swing.api.JLrsAlgorithmParams;
62 65
import org.gvsig.tools.ToolsLocator;
63 66
import org.gvsig.tools.dispose.DisposableIterator;
67
import org.gvsig.tools.dispose.DisposeUtils;
64 68
import org.gvsig.tools.exception.BaseException;
65 69
import org.gvsig.tools.i18n.I18nManager;
66 70
import org.gvsig.tools.swing.api.ActionListenerSupport;
67 71
import org.gvsig.tools.swing.api.ToolsSwingLocator;
72
import org.gvsig.tools.util.LabeledValue;
73
import org.gvsig.tools.util.LabeledValueImpl;
68 74
import org.gvsig.tools.visitor.VisitCanceledException;
69 75
import org.gvsig.tools.visitor.Visitor;
70 76

  
......
85 91
    private ActionListenerSupport listeners =
86 92
        ToolsSwingLocator.getToolsSwingManager().createActionListenerSupport();
87 93

  
88
    private FLayer layer;
94
    private FLyrVect layer;
89 95
    private FeatureAttributeDescriptor fieldIdRoute;
90 96
    private FeatureSet selectedFeatures;
91 97
    private Feature editedFeature;
......
104 110
     * @throws LrsGettingParametersException
105 111
     *
106 112
     */
107
    public JLrsEditRouteCalibrationController(FLayer layer, MapContext mapContext, FeatureAttributeDescriptor fieldIdRoute,
113
    public JLrsEditRouteCalibrationController(FLyrVect layer, MapContext mapContext, FeatureAttributeDescriptor fieldIdRoute,
108 114
        LrsAlgorithmParams params) throws LrsNeededParameterException, LrsGettingParametersException {
109 115
        super();
110 116
        this.layer = layer;
......
251 257
        selectedFeatures=getSelectedFeatures(layer);
252 258
        validateSelectedFeatures();
253 259

  
254
        String selectedRouteName=initCmbRoute();
260
        String selectedRouteName = initCombosRouteAndStretch();
255 261

  
256 262
        routeChanged(selectedRouteName);
257 263

  
......
438 444
        this.tblLayerInfo.repaint();
439 445
    }
440 446

  
441
    private String initCmbRoute() {
447
    private String initCombosRouteAndStretch() {
442 448
        final List<String> routeNames=new ArrayList<String>();
443 449
        try {
444 450
            selectedFeatures.accept(new Visitor() {
......
459 465
            logger.error("Impossible to obtain route names to fill ComboBox",e1);
460 466
        }
461 467

  
462
        String[] routeNamesArray=routeNames.toArray(new String[0]);
468
        cmbStretch.addItemListener((ItemEvent event) -> {
469
            if (event.getStateChange() == ItemEvent.SELECTED) {
470
                LabeledValue item = (LabeledValue) event.getItem();
471
                SwingUtilities.invokeLater(() -> {stretchChanged((FeatureReference) item.getValue());});
472
            }
473
        });
474
        
475
        String[] routeNamesArray = routeNames.toArray(new String[0]);
463 476
        ComboBoxModel<String> routeModel =
464 477
            new DefaultComboBoxModel<String>(routeNamesArray);
465 478
        cmbRoute.setModel(routeModel);
......
469 482
            public void itemStateChanged(ItemEvent event) {
470 483
                if (event.getStateChange() == ItemEvent.SELECTED) {
471 484
                    String item = (String) event.getItem();
472
                    routeChanged((String)item);
485
                    SwingUtilities.invokeLater(() -> {routeChanged((String)item);});
473 486
                }
474 487
            }
475 488
        });
489

  
490

  
476 491
        return (String)cmbRoute.getSelectedItem();
477 492
    }
478 493

  
......
481 496

  
482 497
        final String routeName = selectedRouteName;
483 498

  
499
        DefaultComboBoxModel<LabeledValue> stretchComboModel = new DefaultComboBoxModel<>();
500
        I18nManager i18n = ToolsLocator.getI18nManager();
484 501
        DisposableIterator it = null;
485
        editedFeature = null;
502
//        editedFeature = null;
486 503
        try {
487 504
            it = selectedFeatures.fastIterator();
488
            while (it.hasNext() && editedFeature == null) {
505
            int i = 1;
506
            while (it.hasNext()) {
489 507
                Feature feature = (Feature) it.next();
490 508
                if (feature.get(fieldIdRoute.getName()) instanceof String
491 509
                    && routeName.equals((String) feature.get(fieldIdRoute.getName()))) {
492
                    editedFeature = feature.getCopy();
510
                    LabeledValue<FeatureReference> item = new LabeledValueImpl(
511
                            i18n.getTranslation("_Stretch_{0}",new String[] {String.valueOf(i)}),
512
                            feature.getReference()
513
                    );
514
                    stretchComboModel.addElement(item);
515
                    i++;
493 516
                }
494 517
            }
518
            if (stretchComboModel.getSize() > 0) {
519
                cmbStretch.setEnabled(true);
520
                cmbStretch.setModel(stretchComboModel);
521
                cmbStretch.setSelectedIndex(0);
522
                stretchChanged(
523
                        (FeatureReference) ((LabeledValue)(cmbStretch.getItemAt(0))).getValue()
524
                );
525

  
526
            } else {
527
                cmbStretch.setEnabled(false);
528
            }
495 529
        } catch (DataException e) {
496 530
            logger.error("Error getting table info", e);
497 531
        } finally {
......
499 533
                it.dispose();
500 534
            }
501 535
        }
536
        
537
//        reloadTableModel();
538
//        reloadMaxMin((EditRouteCalibrationTableModel) tblLayerInfo.getModel());
539
//
540
//        graphics.removeGraphics(EDIT_ROUTECALIBRATION_GRAPHICS_ID);
541
//        showEditingRoute();
542
//        mapContext.invalidate();
543

  
544
    }
545

  
546
    private void stretchChanged(FeatureReference featRef) {
547

  
548
        
549
        try {
550
            editedFeature = featRef.getFeature().getCopy();
551
        } catch (DataException ex) {
552
            logger.error("Error getting table info", ex);
553
        }
554

  
555
        FeatureStore store = null;
556
        FeatureSelection selection = null;
557
        try {
558
            store = layer.getFeatureStore();
559
            selection = store.createFeatureSelection();
560
            selection.select(editedFeature);
561
            store.setSelection(selection);
562
        } catch (DataException ex) {
563
            logger.warn("Error getting table info", ex);
564
        } finally {
565
//            DisposeUtils.disposeQuietly(selection);
566
//            DisposeUtils.disposeQuietly(store);
567
        }
502 568
        reloadTableModel();
503 569
        reloadMaxMin((EditRouteCalibrationTableModel) tblLayerInfo.getModel());
504 570

  
......
542 608
    }
543 609

  
544 610
    private void doClose() {
611
        DisposeUtils.disposeQuietly(this.selectedFeatures);
545 612
        graphics.removeGraphics(EDIT_ROUTECALIBRATION_GRAPHICS_ID);
546 613
        mapContext.invalidate();
547 614
        this.setVisible(false);
......
740 807
            try {
741 808
                FeatureSelection selectedFeatures= featureStore.getFeatureSelection();
742 809
                if (selectedFeatures!=null && !selectedFeatures.isEmpty()){
810
                    DisposeUtils.bind(selectedFeatures);
743 811
                    return selectedFeatures;
744 812
                }else{
745 813
                    //If there is not selected features, all features are used

Also available in: Unified diff