Selaa lähdekoodia

copy paste ansatz

Kevin Trometer 7 vuotta sitten
vanhempi
commit
9d5ccef5d9

+ 4 - 0
src/ui/controller/Control.java

@@ -171,6 +171,10 @@ public class Control {
 	public void deleteElementCanvas(HolonObject obj, HolonElement ele) {
 		objectController.deleteElement(obj, ele);
 	}
+	
+	public void setClipboardObjects(ArrayList<CpsObject> list) {
+		MODEL.setClipboradObjects(list);
+	}
 
 	/* Global Operations */
 	public int getScale() {

+ 9 - 0
src/ui/controller/ObjectController.java

@@ -164,4 +164,13 @@ public class ObjectController {
 	public void setSelectedObjectID(int id) {
 		MODEL.setSelectedObjectID(id);
 	}
+	
+	/**
+	 * sets clipBoardObjects
+	 * 
+	 * @param ArrayList of CpsObjects
+	 */
+	public void setClipboardObjects(ArrayList<CpsObject> list) {
+		MODEL.setClipboradObjects(list);
+	}
 }

+ 9 - 0
src/ui/model/Model.java

@@ -26,6 +26,7 @@ public class Model {
 	private HolonElement selectedHolonElement;
 	private CpsEdge selectedEdge;
 	private ArrayList<CpsObject> selectedObjects = new ArrayList<CpsObject>();
+	private ArrayList<CpsObject> clipboardObjects = new ArrayList<CpsObject>();
 
 	private int selectedID = 0;
 	private int autoSaveNr = -1;
@@ -74,6 +75,7 @@ public class Model {
 		setObjectListeners(new LinkedList<ObjectListener>());
 		setCgIdx(new HashMap<String,Integer>());
 		setCvsObjIdx(new HashMap<Integer,Integer>());
+		setClipboradObjects(new ArrayList<CpsObject>());
 	}
 
 	/**
@@ -330,4 +332,11 @@ public class Model {
 		return autoSaveNr;
 	}
 
+	public void setClipboradObjects(ArrayList<CpsObject> c){
+		this.clipboardObjects = c;
+	}
+	
+	public ArrayList<CpsObject> getClipboradObjects(){
+		return clipboardObjects;
+	}
 }

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

@@ -319,31 +319,32 @@ public class GUI<E> implements CategoryListener {
 					controller.delCanvasObject(cps);
 				}
 				model.getSelectedCpsObjects().clear();
-				//controller.setSelectedObjectID(0);
-					for (int i = tableModelHolonElementMulti.getRowCount() - 1; i > -1; i--) {
-						tableModelHolonElementMulti.removeRow(i);
-					}
-					for (int i = tableModelHolonElementSingle.getRowCount() - 1; i > -1; i--) {
-						tableModelHolonElementSingle.removeRow(i);
-					}
-					for (int i = tableModelProperties.getRowCount() - 1; i > -1; i--) {
-						tableModelProperties.removeRow(i);
-					}
+				// controller.setSelectedObjectID(0);
+				for (int i = tableModelHolonElementMulti.getRowCount() - 1; i > -1; i--) {
+					tableModelHolonElementMulti.removeRow(i);
+				}
+				for (int i = tableModelHolonElementSingle.getRowCount() - 1; i > -1; i--) {
+					tableModelHolonElementSingle.removeRow(i);
+				}
+				for (int i = tableModelProperties.getRowCount() - 1; i > -1; i--) {
+					tableModelProperties.removeRow(i);
+				}
 				canvas.repaint();
 				unitGraph.empty();
 			}
 		});
-		
-		String cntrlCDown = "controlZ";
+
+		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.setClipboardObjects((ArrayList<CpsObject>) model.getSelectedCpsObjects().clone());
 			}
 		});
-		
+
 		String cntrlVDown = "controlV";
 		inputMap.put(KeyStroke.getKeyStroke("control V"), cntrlVDown);
 		actionMap.put(cntrlVDown, new AbstractAction() {
@@ -351,9 +352,23 @@ public class GUI<E> implements CategoryListener {
 			@Override
 			public void actionPerformed(ActionEvent e) {
 				System.out.println("paste");
+				model.getSelectedCpsObjects().clear();
+				CpsObject tCps = null;
+				for (CpsObject cps : model.getClipboradObjects()) {
+					if (cps instanceof HolonObject) {
+						tCps = new HolonObject(cps);
+						((HolonObject) tCps).setElements(((HolonObject) cps).getElements());
+					} else if (cps instanceof HolonSwitch) {
+						tCps = new HolonSwitch(cps);
+					}
+					tCps.setPosition(cps.getPosition());
+					controller.addObjectCanvas(tCps);
+					controller.addSelectedObject(tCps);
+				}
+				canvas.repaint();
 			}
 		});
-		
+
 		String cntrlXDown = "controlX";
 		inputMap.put(KeyStroke.getKeyStroke("control X"), cntrlXDown);
 		actionMap.put(cntrlXDown, new AbstractAction() {
@@ -363,7 +378,7 @@ public class GUI<E> implements CategoryListener {
 				System.out.println("cut");
 			}
 		});
-		
+
 		frmCyberPhysical.setJMenuBar(menuBar);
 
 		frmCyberPhysical.setIconImage(new ImageIcon(this.getClass().getResource("/Images/Dummy_House.png")).getImage()