@Override public void changeFigure(Figure figure, Object figureMemento, String presentationName) { Debug.trace("VectorDataFigureEditor.changeFigure " + figure + ", " + presentationName); super.changeFigure(figure, figureMemento, presentationName); if (vectorDataNode != null) { if (figure instanceof SimpleFeatureFigure) { SimpleFeatureFigure featureFigure = (SimpleFeatureFigure) figure; vectorDataNode.fireFeaturesChanged(featureFigure.getSimpleFeature()); } } else { // warn } }
@Override public void collectionChanged(CollectionEvent tce) { if (tce.getEventType() == CollectionEvent.FEATURES_ADDED) { fireFeaturesAdded(tce.getFeatures()); } else if (tce.getEventType() == CollectionEvent.FEATURES_REMOVED) { fireFeaturesRemoved(tce.getFeatures()); } else if (tce.getEventType() == CollectionEvent.FEATURES_CHANGED) { fireFeaturesChanged(tce.getFeatures()); } } };
@Override public void figureChanged(FigureChangeEvent event) { final Figure sourceFigure = event.getSourceFigure(); if (sourceFigure instanceof SimpleFeatureFigure) { SimpleFeatureFigure featureFigure = (SimpleFeatureFigure) sourceFigure; try { final VectorDataNode vectorDataNode = getVectorDataNode(); final SimpleFeature simpleFeature = featureFigure.getSimpleFeature(); Debug.trace("VectorDataLayer$FigureChangeHandler: vectorDataNode=" + vectorDataNode.getName() + ", featureType=" + simpleFeature.getFeatureType().getTypeName()); reactingAgainstFigureChange = true; vectorDataNode.fireFeaturesChanged(simpleFeature); // todo - compute changed modelRegion instead of passing null (nf) fireLayerDataChanged(null); } finally { reactingAgainstFigureChange = false; } } } }
@Test public void movePinByGeometry() { placemark.getFeature().setDefaultGeometry(newPoint(4.0, 2.0)); placemark.getProduct().getVectorDataGroup().get("pins").fireFeaturesChanged(placemark.getFeature()); final Point point = (Point) placemark.getFeature().getDefaultGeometry(); assertEquals(4.0, point.getX(), 0.0); assertEquals(2.0, point.getY(), 0.0); // todo: rq/?? - make asserts successful final double x = placemark.getPixelPos().getX(); final double y = placemark.getPixelPos().getY(); assertEquals(2.0, x, 0.0); assertEquals(1.0, y, 0.0); // todo: rq/?? - make asserts successful final double lon = placemark.getGeoPos().getLon(); final double lat = placemark.getGeoPos().getLat(); assertEquals(4.0, lon, 0.0); assertEquals(2.0, lat, 0.0); }