Browse Source

clipboard paste position finished

Teh-Hai Julian Zheng 8 years ago
parent
commit
737ba62f23

+ 8 - 2
src/ui/controller/ClipboardController.java

@@ -63,6 +63,7 @@ public class ClipboardController {
 	private HashMap<Integer, Integer> eleIDMap;
 	private String sav;
 	private Point point;
+	private Point pp;
 
 	public ClipboardController(Model model, StoreController store, LoadController load, CanvasController cvs,
 			ObjectController obj, NodeController uppC, MultiPurposeController mp) {
@@ -91,6 +92,9 @@ public class ClipboardController {
 		store.initNumeration();
 
 		file.add("SAV", new JsonPrimitive((upperNode == null ? "CVS" : "" + upperNode.getId())));
+		Position pos = uppC.calculatePos(model.getSelectedCpsObjects());
+		file.add("CENTER_X", new JsonPrimitive(pos.x));
+		file.add("CENTER_Y", new JsonPrimitive(pos.y));
 
 		for (AbstractCpsObject abs : model.getSelectedCpsObjects()) {
 			queue.add(abs);
@@ -137,7 +141,6 @@ public class ClipboardController {
 
 		JsonObject json = new JsonObject();
 		Transferable content = clipboard.getContents(null);
-		point = p;
 
 		if (content != null && content.isDataFlavorSupported(DataFlavor.stringFlavor)
 				&& !content.isDataFlavorSupported(DataFlavor.allHtmlFlavor))
@@ -163,6 +166,9 @@ public class ClipboardController {
 		eleIDMap = new HashMap<>();
 		sav = json.get("SAV").getAsString();
 
+		Position old = new Position(json.get("CENTER_X").getAsInt(), json.get("CENTER_Y").getAsInt());
+		point = new Point(old.x - p.x, old.y-p.y);
+
 		forwardObjects(keys, json, objDispatch, eleDispatch, upperNode);
 		forwardEdges(edges, json, objDispatch, upperNode);
 
@@ -449,7 +455,7 @@ public class ClipboardController {
 
 	private void updatePosition(AbstractCpsObject temp) {
 		// TODO Auto-generated method stub
-		temp.setPosition(new Position(temp.getPosition().x + point.x, temp.getPosition().y + point.y));
+		temp.setPosition(new Position(temp.getPosition().x - point.x, temp.getPosition().y - point.y));
 	}
 
 }

+ 1 - 1
src/ui/controller/NodeController.java

@@ -421,7 +421,7 @@ public class NodeController {
 	 * 
 	 * @return
 	 */
-	private Position calculatePos(ArrayList<AbstractCpsObject> toGroup) {
+	public Position calculatePos(ArrayList<AbstractCpsObject> toGroup) {
 
 		Position pos = new Position(0, 0);