Revision: 6601
http://sourceforge.net/p/jump-pilot/code/6601
Author: michaudm
Date: 2020-10-24 18:31:05 +0000 (Sat, 24 Oct 2020)
Log Message:
-----------
fix #382 : deleting warping vectors was not possible with incremental mode
Modified Paths:
--------------
core/trunk/ChangeLog
core/trunk/src/com/vividsolutions/jump/workbench/ui/warp/AbstractDeleteVectorTool.java
core/trunk/src/com/vividsolutions/jump/workbench/ui/warp/DeleteIncrementalWarpingVectorTool.java
core/trunk/src/com/vividsolutions/jump/workbench/ui/warp/WarpingPanel.java
Modified: core/trunk/ChangeLog
===================================================================
--- core/trunk/ChangeLog 2020-10-24 10:01:09 UTC (rev 6600)
+++ core/trunk/ChangeLog 2020-10-24 18:31:05 UTC (rev 6601)
@@ -4,6 +4,9 @@
# 3. be concise but convey the change in a way that ordinary users understand
#<-------------------------------- 80 chars ---------------------------------->
+2020-10-24 mmichaud
+ * fix #382 : deleting warping vectors was not possible with incremental mode
+
2020-10-06 ede
* added gdal support for debian/ubuntu, installing package libgdal-java
suffices now to have gdal image loaders up and running, tested on Ubuntu 20
Modified:
core/trunk/src/com/vividsolutions/jump/workbench/ui/warp/AbstractDeleteVectorTool.java
===================================================================
---
core/trunk/src/com/vividsolutions/jump/workbench/ui/warp/AbstractDeleteVectorTool.java
2020-10-24 10:01:09 UTC (rev 6600)
+++
core/trunk/src/com/vividsolutions/jump/workbench/ui/warp/AbstractDeleteVectorTool.java
2020-10-24 18:31:05 UTC (rev 6601)
@@ -42,6 +42,7 @@
import com.vividsolutions.jump.feature.Feature;
import com.vividsolutions.jump.geom.EnvelopeUtil;
import com.vividsolutions.jump.workbench.model.AbstractVectorLayerFinder;
+import com.vividsolutions.jump.workbench.model.Layer;
import com.vividsolutions.jump.workbench.model.LayerManagerProxy;
import com.vividsolutions.jump.workbench.model.UndoableCommand;
import com.vividsolutions.jump.workbench.ui.cursortool.Animations;
@@ -55,7 +56,7 @@
setViewClickBuffer(6);
}
- private void showAnimation(Collection vectorFeatures) {
+ void showAnimation(Collection vectorFeatures) {
try {
Animations.drawExpandingRings(
getPanel().getViewport().toViewPoints(centres(vectorFeatures)),
@@ -66,9 +67,9 @@
} catch (NoninvertibleTransformException e) {
//Eat it. [Jon Aquino]
}
- }
+ }
- private Collection centres(Collection vectorFeatures) {
+ Collection centres(Collection vectorFeatures) {
ArrayList centers = new ArrayList();
for (Iterator i = vectorFeatures.iterator(); i.hasNext();) {
Feature vectorFeature = (Feature) i.next();
@@ -83,27 +84,35 @@
}
protected abstract AbstractVectorLayerFinder
createVectorLayerFinder(LayerManagerProxy layerManagerProxy);
-
+
protected void gestureFinished() throws Exception {
reportNothingToUndoYet();
AbstractVectorLayerFinder finder = createVectorLayerFinder(getPanel());
- if (finder.getLayer() == null) {
+ Layer layer = finder.getLayer();
+ if (layer == null) {
return;
}
+ boolean oldVisible = layer.isVisible();
+ layer.setVisible(true); // next instruction search only in visible
layers
if (!layerToSpecifiedFeaturesMap().containsKey(finder.getLayer())) {
return;
}
+ layer.setVisible(oldVisible);
execute(createCommand());
}
protected UndoableCommand createCommand() throws
NoninvertibleTransformException {
final AbstractVectorLayerFinder finder =
createVectorLayerFinder(getPanel());
+ Layer layer = finder.getLayer();
+ boolean oldVisible = layer.isVisible();
+ layer.setVisible(true); // next instruction search only in visible
layers
final Collection vectorFeaturesToDelete =
- (Collection) layerToSpecifiedFeaturesMap().get(finder.getLayer());
+ (Collection) layerToSpecifiedFeaturesMap().get(layer);
+ layer.setVisible(oldVisible);
Assert.isTrue(vectorFeaturesToDelete != null);
Assert.isTrue(!vectorFeaturesToDelete.isEmpty());
return new UndoableCommand(getName()) {
- public void execute() {
+ public void execute() {
finder.getLayer().getFeatureCollectionWrapper().removeAll(vectorFeaturesToDelete);
showAnimation(vectorFeaturesToDelete);
}
Modified:
core/trunk/src/com/vividsolutions/jump/workbench/ui/warp/DeleteIncrementalWarpingVectorTool.java
===================================================================
---
core/trunk/src/com/vividsolutions/jump/workbench/ui/warp/DeleteIncrementalWarpingVectorTool.java
2020-10-24 10:01:09 UTC (rev 6600)
+++
core/trunk/src/com/vividsolutions/jump/workbench/ui/warp/DeleteIncrementalWarpingVectorTool.java
2020-10-24 18:31:05 UTC (rev 6601)
@@ -34,10 +34,13 @@
import java.awt.Cursor;
import java.awt.geom.NoninvertibleTransformException;
+import java.util.Collection;
import javax.swing.Icon;
+import com.vividsolutions.jts.util.Assert;
import com.vividsolutions.jump.workbench.model.AbstractVectorLayerFinder;
+import com.vividsolutions.jump.workbench.model.Layer;
import com.vividsolutions.jump.workbench.model.LayerManagerProxy;
import com.vividsolutions.jump.workbench.model.UndoableCommand;
import com.vividsolutions.jump.workbench.ui.images.IconLoader;
@@ -51,11 +54,15 @@
private WarpingPanel warpingPanel;
protected AbstractVectorLayerFinder
createVectorLayerFinder(LayerManagerProxy layerManagerProxy) {
+ return new WarpingVectorLayerFinder(layerManagerProxy);
+ }
+
+ protected AbstractVectorLayerFinder
createIncrementalVectorLayerFinder(LayerManagerProxy layerManagerProxy) {
return new IncrementalWarpingVectorLayerFinder(layerManagerProxy);
}
protected UndoableCommand createCommand() throws
NoninvertibleTransformException {
- return
warpingPanel.addWarping(warpingPanel.addWarpingVectorGeneration(super.createCommand()));
+ return
warpingPanel.addWarping(warpingPanel.addWarpingVectorGeneration(createBaseCommand()));
}
public Icon getIcon() {
@@ -66,4 +73,39 @@
return
createCursor(IconLoader.icon("DeleteVectorCursor.gif").getImage());
}
+ /**
+ * The command returned uses super.createCommand to delete the feature in
VectorLayer
+ * and add the deletion of the feature from IncrementalVectorLayer
+ * @return
+ * @throws NoninvertibleTransformException
+ */
+ protected UndoableCommand createBaseCommand() throws
NoninvertibleTransformException {
+ final UndoableCommand superCommand = super.createCommand();
+ final AbstractVectorLayerFinder incrementalVectorLayerFinder =
+ createIncrementalVectorLayerFinder(getPanel());
+ Assert.isTrue(incrementalVectorLayerFinder != null);
+ Layer layer = incrementalVectorLayerFinder.getLayer();
+ Assert.isTrue(layer != null);
+ boolean oldVisible = layer.isVisible();
+ layer.setVisible(true); // next instruction search only in visible
layers
+ final Collection incrementalVectorFeaturesToDelete =
+ (Collection) layerToSpecifiedFeaturesMap().get(layer);
+ layer.setVisible(oldVisible);
+ Assert.isTrue(incrementalVectorFeaturesToDelete != null);
+ Assert.isTrue(!incrementalVectorFeaturesToDelete.isEmpty());
+ return new UndoableCommand(getName()) {
+ public void execute() {
+ superCommand.execute();
+
incrementalVectorLayerFinder.getLayer().getFeatureCollectionWrapper()
+ .removeAll(incrementalVectorFeaturesToDelete);
+ showAnimation(incrementalVectorFeaturesToDelete);
+ }
+ public void unexecute() {
+ superCommand.unexecute();
+ incrementalVectorLayerFinder.getLayer()
+
.getFeatureCollectionWrapper().addAll(incrementalVectorFeaturesToDelete);
+ }
+ };
+ }
+
}
Modified:
core/trunk/src/com/vividsolutions/jump/workbench/ui/warp/WarpingPanel.java
===================================================================
--- core/trunk/src/com/vividsolutions/jump/workbench/ui/warp/WarpingPanel.java
2020-10-24 10:01:09 UTC (rev 6600)
+++ core/trunk/src/com/vividsolutions/jump/workbench/ui/warp/WarpingPanel.java
2020-10-24 18:31:05 UTC (rev 6601)
@@ -150,7 +150,7 @@
});
}
- /*
+ /**
* Method used by Draw/Delete incremental warping vector toos
*/
public UndoableCommand addWarping(final UndoableCommand wrappeeCommand) {
@@ -158,8 +158,7 @@
// Cache warping because user may change #isWarpingIncrementally.
// [Jon Aquino]
// Must cache warping lazily because #warpConditionsMet requires
- // that
- // drawCommand execute first. [Jon Aquino]
+ // that drawCommand execute first. [Jon Aquino]
private Boolean warping = null;
// Must create warpCommand lazily because it requires that
// #warping return true. [Jon Aquino]
@@ -167,13 +166,12 @@
private boolean warping() {
if (warping == null) {
- warping = new Boolean(isWarpingIncrementally()
- && warpConditionsMet());
- if (warping.booleanValue()) {
+ warping = isWarpingIncrementally() && warpConditionsMet();
+ if (warping) {
warpCommand = executeCommand();
}
}
- return warping.booleanValue();
+ return warping;
}
@Override
@@ -288,8 +286,7 @@
@Override
public void unexecute() {
// Triangulation layer undo is handled by
- // ShowTriangulationPlugIn#addUndo. [Jon
- // Aquino]
+ // ShowTriangulationPlugIn#addUndo. [Jon
Aquino]
try {
if (willShowSourceLayer) {
sourceLayer.setVisible(false);
@@ -371,6 +368,13 @@
MODIFIED_OUTSIDE_WARP_KEY) ? new ArrayList()
: (Collection) currentOutputLayer().getBlackboard().get(
RECONSTRUCTION_VECTORS_KEY);
+ // Fix #382 : if we are deleting a vector incrementally, we don't
+ // want to use reconstructionVectors cached from the Blackboard but
+ // an upadated collection where the deleted vector has been removed
+ if (isWarpingIncrementally() && warpingVectorLayerFinder().getLayer()
!= null) {
+ reconstructionVectors = warpingVectorLayerFinder().getLayer()
+ .getFeatureCollectionWrapper().getFeatures();
+ }
final Collection newWarpingVectors = toWarpingVectors(
incrementalWarpingVectorLayerFinder().getLayer()
.getFeatureCollectionWrapper().getFeatures(),
@@ -738,6 +742,7 @@
.getUndoableEditReceiver()
.reportIrreversibleChange();
}
+ System.out.println("main : end");
}
@Override
_______________________________________________
Jump-pilot-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel