|
@@ -444,6 +444,48 @@ class NodeController {
|
|
object.setSav("" + upperNode.getId());
|
|
object.setSav("" + upperNode.getId());
|
|
upperNode.getNodesIdx().put(object.getId(), upperNode.getNodes().size());
|
|
upperNode.getNodesIdx().put(object.getId(), upperNode.getNodes().size());
|
|
upperNode.getNodes().add(object);
|
|
upperNode.getNodes().add(object);
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * check if we should drag & drop replace
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+ /** x of the dragged Object */
|
|
|
|
+ int x = object.getPosition().x;
|
|
|
|
+
|
|
|
|
+ /** y of the dragged Object */
|
|
|
|
+ int y = object.getPosition().y;
|
|
|
|
+
|
|
|
|
+ /** distance threshold for replacement */
|
|
|
|
+ int treshhold = model.getScale()/4;
|
|
|
|
+
|
|
|
|
+ /** number of Objects that might be replaced (should be 1) */
|
|
|
|
+ int replaceCounter = 0;
|
|
|
|
+
|
|
|
|
+ /** last object that could be replaced */
|
|
|
|
+ AbstractCpsObject toBeReplaced = null;
|
|
|
|
+
|
|
|
|
+ /** for each cps on Canvas */
|
|
|
|
+ for (AbstractCpsObject cps : upperNode.getNodes()){
|
|
|
|
+
|
|
|
|
+ /** same object -> ignore */
|
|
|
|
+ if(cps == object)continue;
|
|
|
|
+
|
|
|
|
+ /** x of object that might get replaced */
|
|
|
|
+ int c_x = cps.getPosition().x;
|
|
|
|
+
|
|
|
|
+ /** y of object that might get replaced */
|
|
|
|
+ int c_y = cps.getPosition().y;
|
|
|
|
+
|
|
|
|
+ /** if near enough */
|
|
|
|
+ if(Math.abs(x-c_x)<treshhold && Math.abs(y-c_y)<treshhold){
|
|
|
|
+ replaceCounter++;
|
|
|
|
+ toBeReplaced = cps;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ /** if replacement of exactly one object possible */
|
|
|
|
+ if(replaceCounter == 1 && toBeReplaced != null){
|
|
|
|
+ replaceObjectInUpperNode(toBeReplaced, object, upperNode);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|