Browse Source

paste at mouse location

Kevin Trometer 7 years ago
parent
commit
98180db407
3 changed files with 52 additions and 26 deletions
  1. 18 8
      src/ui/controller/CanvasController.java
  2. 28 15
      src/ui/view/GUI.java
  3. 6 3
      src/ui/view/MyCanvas.java

+ 18 - 8
src/ui/controller/CanvasController.java

@@ -96,36 +96,46 @@ public class CanvasController {
 		edge.getB().getConnections().remove(edge);
 		MODEL.getEdgesOnCanvas().remove(edge);
 	}
-	
+
 	/**
 	 * Copy all Selected Objects
 	 */
 	public void copyObjects() {
 		MODEL.setClipboradObjects((ArrayList<CpsObject>) MODEL.getSelectedCpsObjects().clone());
 	}
-	
+
 	/**
 	 * Paste all Selected Objects
 	 * 
 	 * @param Point
-	 * 					the mouse Position
+	 *            the mouse Position
 	 */
-	public void pasteObjects(Point point) {
+	public void pasteObjects(Point p) {
 		System.out.println("paste");
 		MODEL.getSelectedCpsObjects().clear();
 		CpsObject tCps = null;
+		int x = Integer.MAX_VALUE, y = Integer.MAX_VALUE;
+		for (CpsObject cps : MODEL.getClipboradObjects()) {
+			if (cps.getPosition().x < x) {
+				x = cps.getPosition().x;
+			}
+			if (cps.getPosition().y < y) {
+				y = cps.getPosition().y;
+			}
+		}
+
 		for (CpsObject cps : MODEL.getClipboradObjects()) {
 			if (cps instanceof HolonObject) {
-				tCps = new HolonObject((HolonObject)cps);
+				tCps = new HolonObject((HolonObject) cps);
 			} else if (cps instanceof HolonSwitch) {
-				tCps = new HolonSwitch(cps);
+				tCps = new HolonSwitch((HolonSwitch) cps);
 			}
-			tCps.setPosition(cps.getPosition());
+			tCps.setPosition(new Position(p.x + (cps.getPosition().x-x), p.y + (cps.getPosition().y-y)));
 			addObject(tCps);
 			MODEL.getSelectedCpsObjects().add(tCps);
 		}
 	}
-	
+
 	/**
 	 * Cut all Selected Objects
 	 */

+ 28 - 15
src/ui/view/GUI.java

@@ -321,7 +321,7 @@ public class GUI<E> implements CategoryListener {
 					controller.delCanvasObject(cps);
 				}
 				model.getSelectedCpsObjects().clear();
-				// controller.setSelectedObjectID(0);
+				/* controller.setSelectedObjectID(0);
 				for (int i = tableModelHolonElementMulti.getRowCount() - 1; i > -1; i--) {
 					tableModelHolonElementMulti.removeRow(i);
 				}
@@ -331,19 +331,25 @@ public class GUI<E> implements CategoryListener {
 				for (int i = tableModelProperties.getRowCount() - 1; i > -1; i--) {
 					tableModelProperties.removeRow(i);
 				}
+				*/
 				canvas.repaint();
 				unitGraph.empty();
 			}
 		});
 
-		String cntrlSDown = "controlC";
-		inputMap.put(KeyStroke.getKeyStroke("control C"), cntrlSDown);
-		actionMap.put(cntrlSDown, new AbstractAction() {
+		String cntrlCDown = "controlC";
+		inputMap.put(KeyStroke.getKeyStroke("control C"), cntrlCDown);
+		actionMap.put(cntrlCDown, new AbstractAction() {
 
 			@Override
 			public void actionPerformed(ActionEvent e) {
-				System.out.println("copy");
-				controller.copyObjects();
+				if (!model.getSelectedCpsObjects().isEmpty()) {
+					System.out.println("copy");
+					controller.copyObjects();
+					if (!model.getClipboradObjects().isEmpty()) {
+						canvas.itemPaste.setEnabled(true);
+					}
+				}
 			}
 		});
 
@@ -353,7 +359,7 @@ public class GUI<E> implements CategoryListener {
 
 			@Override
 			public void actionPerformed(ActionEvent e) {
-				controller.pasteObjects(frmCyberPhysical.getMousePosition());
+				controller.pasteObjects(canvas.getMousePosition());
 				canvas.repaint();
 			}
 		});
@@ -364,8 +370,14 @@ public class GUI<E> implements CategoryListener {
 
 			@Override
 			public void actionPerformed(ActionEvent e) {
-				controller.cutObjects();
-				System.out.println("cut");
+				if (!model.getSelectedCpsObjects().isEmpty()) {
+					controller.cutObjects();
+					if (!model.getClipboradObjects().isEmpty()) {
+						canvas.itemPaste.setEnabled(true);
+					}
+					canvas.repaint();
+					System.out.println("cut");
+				}
 			}
 		});
 
@@ -399,7 +411,7 @@ public class GUI<E> implements CategoryListener {
 				}
 			}
 		});
-		
+
 		mnNewMenu_1.add(mntmFindReplace);
 		mntmEditShowedInformation.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent e) {
@@ -412,7 +424,7 @@ public class GUI<E> implements CategoryListener {
 				}
 			}
 		});
-		
+
 		mnNewMenu_1.add(mntmEditShowedInformation);
 
 		menuBar.add(mnNewMenu_2);
@@ -426,15 +438,16 @@ public class GUI<E> implements CategoryListener {
 		});
 
 		mnNewMenu_2.add(mntmEditEdges);
-		
+
 		mnNewMenu_2.add(mntmResetCategory);
 		mntmResetCategory.addActionListener(new ActionListener() {
-			
+
 			@Override
 			public void actionPerformed(ActionEvent e) {
 				ArrayList<Category> cat = model.getCategories();
-				while(!cat.isEmpty()) {
-					controller.deleteCategory(cat.get(0).getName());;
+				while (!cat.isEmpty()) {
+					controller.deleteCategory(cat.get(0).getName());
+					;
 				}
 				controller.resetCategorys();
 				tree.repaint();

+ 6 - 3
src/ui/view/MyCanvas.java

@@ -71,8 +71,10 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 	private JMenuItem itemDelete = new JMenuItem("Delete");
 	private JMenuItem itemCut = new JMenuItem("Cut");
 	private JMenuItem itemCopy = new JMenuItem("Copy");
-	private JMenuItem itemPaste = new JMenuItem("Paste");
+	public JMenuItem itemPaste = new JMenuItem("Paste");
 	private JToolTip objectTT = new JToolTip();
+	
+	private Point mousePosition = new Point();	//Mouse Position when rightclicked
 
 	// contains the value of the Capacity for new created Edges
 	private float edgeCapacity;
@@ -81,7 +83,7 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 		this.add(objectTT);
 		this.controller = control;
 		this.model = model;
-
+		
 		showedInformation[0] = true;
 		showedInformation[1] = false;
 		edgeCapacity = 10000;
@@ -131,7 +133,7 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 		itemPaste.addActionListener(new ActionListener() {
 			@Override
 			public void actionPerformed(ActionEvent e) {
-				controller.pasteObjects(new Point(10, 10));
+				controller.pasteObjects(mousePosition);
 				repaint();
 			}
 		});
@@ -400,6 +402,7 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 				itemCopy.setEnabled(false);
 				itemDelete.setEnabled(false);
 			}
+			mousePosition = this.getMousePosition();
 			popmenu.show(e.getComponent(), e.getX(), e.getY());
 		}