瀏覽代碼

cut, copy, paste mit rechtsclick

Kevin Trometer 8 年之前
父節點
當前提交
cf79d59fb7
共有 2 個文件被更改,包括 56 次插入11 次删除
  1. 6 3
      src/ui/controller/CanvasController.java
  2. 50 8
      src/ui/view/MyCanvas.java

+ 6 - 3
src/ui/controller/CanvasController.java

@@ -116,8 +116,7 @@ public class CanvasController {
 		CpsObject tCps = null;
 		for (CpsObject cps : MODEL.getClipboradObjects()) {
 			if (cps instanceof HolonObject) {
-				tCps = new HolonObject(cps);
-				((HolonObject) tCps).setElements(((HolonObject) cps).getElements());
+				tCps = new HolonObject((HolonObject)cps);
 			} else if (cps instanceof HolonSwitch) {
 				tCps = new HolonSwitch(cps);
 			}
@@ -131,6 +130,10 @@ public class CanvasController {
 	 * Cut all Selected Objects
 	 */
 	public void cutObjects() {
+		MODEL.setClipboradObjects((ArrayList<CpsObject>) MODEL.getSelectedCpsObjects().clone());
+		for (CpsObject cps : MODEL.getSelectedCpsObjects()) {
+			deleteObjectOnCanvas(cps);
+		}
+		MODEL.getSelectedCpsObjects().clear();
 	}
-
 }

+ 50 - 8
src/ui/view/MyCanvas.java

@@ -5,6 +5,7 @@ import java.awt.Color;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
 import java.awt.Image;
+import java.awt.Point;
 import java.awt.Rectangle;
 import java.awt.RenderingHints;
 import java.awt.event.ActionEvent;
@@ -67,7 +68,10 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 
 	// PopUpMenu
 	private JPopupMenu popmenu = new JPopupMenu();
-	private JMenuItem itemDelete = new JMenuItem("Delete Object");
+	private JMenuItem itemDelete = new JMenuItem("Delete");
+	private JMenuItem itemCut = new JMenuItem("Cut");
+	private JMenuItem itemCopy = new JMenuItem("Copy");
+	private JMenuItem itemPaste = new JMenuItem("Paste");
 	private JToolTip objectTT = new JToolTip();
 
 	// contains the value of the Capacity for new created Edges
@@ -81,18 +85,23 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 		showedInformation[0] = true;
 		showedInformation[1] = false;
 		edgeCapacity = 10000;
+
+		popmenu.add(itemCut);
+		popmenu.add(itemCopy);
+		popmenu.add(itemPaste);
 		popmenu.add(itemDelete);
+
 		itemDelete.setEnabled(false);
+		itemCut.setEnabled(false);
+		itemCopy.setEnabled(false);
+		itemPaste.setEnabled(false);
+
 		itemDelete.addActionListener(new ActionListener() {
 			@Override
 			public void actionPerformed(ActionEvent e) {
-				// Remove the selected Object object
-				if (model.getSelectedCpsObjects().size() <= 1) {
-					controller.delCanvasObject(tempCps);
-				} else {
-					for (CpsObject cps : model.getSelectedCpsObjects()) {
-						controller.delCanvasObject(cps);
-					}
+				// Remove the selected Object objects
+				for (CpsObject cps : model.getSelectedCpsObjects()) {
+					controller.delCanvasObject(cps);
 				}
 				model.getSelectedCpsObjects().clear();
 				tempCps = null;
@@ -100,6 +109,32 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 				repaint();
 			}
 		});
+		
+		itemCut.addActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				controller.cutObjects();
+				itemPaste.setEnabled(true);
+				repaint();
+			}
+		});
+		
+		itemCopy.addActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				controller.copyObjects();
+				itemPaste.setEnabled(true);
+				repaint();
+			}
+		});
+		
+		itemPaste.addActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(ActionEvent e) {
+				controller.pasteObjects(new Point(10, 10));
+				repaint();
+			}
+		});
 
 		this.addMouseListener(this);
 		this.addMouseMotionListener(this);
@@ -355,7 +390,14 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 		if (e.getButton() == MouseEvent.BUTTON3) {
 			if (e.getButton() == MouseEvent.BUTTON3 && tempCps != null) {
 				itemDelete.setEnabled(true);
+				itemCut.setEnabled(true);
+				itemCopy.setEnabled(true);
+				if (model.getSelectedCpsObjects().size() == 0) {
+					controller.addSelectedObject(tempCps);
+				}
 			} else {
+				itemCut.setEnabled(false);
+				itemCopy.setEnabled(false);
 				itemDelete.setEnabled(false);
 			}
 			popmenu.show(e.getComponent(), e.getX(), e.getY());