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