Jelajahi Sumber

improves Replacement AutoSave Capabilities

Andreas T. Meyer-Berg 6 tahun lalu
induk
melakukan
3f3ee8d20c

+ 13 - 1
src/ui/controller/Control.java

@@ -330,7 +330,12 @@ public class Control {
      */
     public void replaceCanvasObject(AbstractCpsObject toBeReplaced, AbstractCpsObject by) {
     	canvasController.replaceObjectOnCanvas(toBeReplaced, by);
-    	
+    	try {
+            autoSave();
+        } catch (IOException e) {
+        	System.out.println("Error by Replacing "+toBeReplaced.toString() + " by " + by.toString());
+            e.printStackTrace();
+        }
     }
     
     /**
@@ -835,6 +840,13 @@ public class Control {
 	public void replaceObjUpperNode(AbstractCpsObject toBeReplaced,
 			AbstractCpsObject by, CpsUpperNode upperNode) {
 		nodeController.replaceObjectInUpperNode(toBeReplaced, by, upperNode);
+		try {
+            autoSave();
+        } catch (IOException e) {
+        	System.out.println("Error by Replacing "+toBeReplaced.toString() 
+        			+ " by " + by.toString() + " in UpperNode " + upperNode.toString());
+            e.printStackTrace();
+        }
 	}
 
     public void addEdgeUpperNode(CpsEdge edge, CpsUpperNode upperNode) {

+ 1 - 1
src/ui/view/AbstractCanvas.java

@@ -38,7 +38,7 @@ public abstract class AbstractCanvas extends JPanel {
 	final JMenuItem itemTrack = new JMenuItem(Languages.getLanguage()[101]);
 	final JMenuItem itemUntrack = new JMenuItem(Languages.getLanguage()[102]);
 	final JMenuItem itemCreateTemplate = new JMenuItem(Languages.getLanguage()[Languages.right_click_create_template]);
-	final JMenuItem itemAlignAll = new JMenuItem("AlignAll");
+
 	final int ANIMTIME = 500; // animation Time
 	private final int animFPS = 60;
 	final int animDelay = 1000 / animFPS; // animation Delay

+ 14 - 15
src/ui/view/MyCanvas.java

@@ -61,7 +61,6 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 		popmenu.add(itemTrack);
 		popmenu.add(itemUntrack);
 		popmenu.add(itemCreateTemplate);
-		popmenu.add(itemAlignAll);
 
 		updCon = new UpdateController(mod, control);
 
@@ -73,11 +72,8 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 		itemUngroup.setEnabled(false);
 		itemTrack.setEnabled(false);
 		itemUntrack.setEnabled(false);
-		itemAlignAll.setEnabled(true);
 
 		itemCut.setText(Languages.getLanguage()[95]);
-
-		itemAlignAll.addActionListener(a -> tryToAlignObjects());
 		
 		itemGroup.addActionListener(actionEvent -> {
 			// calculate uppernode pos (taken from the controller)
@@ -605,24 +601,27 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 
 		if (dragged) {
 			try {
-				
 				/**
-				 * check if a unique tempCps could replace an Object on the canvas
+				 * Save before further Dragged interactions happen
 				 */
-				if(model.getSelectedCpsObjects().size()==1 
-						&& checkForReplacement(model.getObjectsOnCanvas(), tempCps, tempCps.getPosition().x, tempCps.getPosition().y)){
-					/**
-					 * replace on canvas
-					 */
-					controller.replaceCanvasObject(mayBeReplaced, tempCps);
-					mayBeReplaced=null;
-				}
-				
 				controller.autoSave();
+				
 			} catch (IOException ex) {
 				System.err.println("AutoSave error by dragging");
 				ex.printStackTrace();
 			}
+			
+			/**
+			 * check if a unique tempCps could replace an Object on the canvas
+			 */
+			if(model.getSelectedCpsObjects().size()==1 
+					&& checkForReplacement(model.getObjectsOnCanvas(), tempCps, tempCps.getPosition().x, tempCps.getPosition().y)){
+				/**
+				 * replace on canvas (will save)
+				 */
+				controller.replaceCanvasObject(mayBeReplaced, tempCps);
+				mayBeReplaced=null;
+			}
 		}
 
 		if (!e.isControlDown() && !dragged && tempCps != null

+ 14 - 16
src/ui/view/UpperNodeCanvas.java

@@ -78,7 +78,6 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
         popmenu.add(itemTrack);
         popmenu.add(itemUntrack);
         popmenu.add(itemCreateTemplate);
-        popmenu.add(itemAlignAll);
         
         itemDelete.setEnabled(false);
         itemCut.setEnabled(false);
@@ -88,11 +87,8 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
         itemUngroup.setEnabled(false);
         itemTrack.setEnabled(false);
         itemUntrack.setEnabled(false);
-        itemAlignAll.setEnabled(true);
         
         updCon = new UpdateController(model, controller);
-
-        itemAlignAll.addActionListener(a -> tryToAlignObjects());
         
         itemGroup.addActionListener(actionEvent -> {
             // calculate uppernode pos (taken from the controller)
@@ -729,22 +725,24 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
 
         if (dragged) {
             try { 
-
-				/**
-				 * check if tempCps could replace an Object on the UpperNodeanvas
-				 */
-				if(model.getSelectedCpsObjects().size() == 1 && checkForReplacement(upperNode.getNodes(), tempCps, tempCps.getPosition().x, tempCps.getPosition().y)){
-					/**
-					 * replace on canvas
-					 */
-					controller.replaceObjUpperNode(mayBeReplaced, tempCps, upperNode);
-					mayBeReplaced=null;
-				}
-				
+            	/**
+            	 * Save State before performing NodePlacement, replacement e.g.
+            	 */
                 controller.autoSave();
             } catch (IOException ex) {
                 ex.printStackTrace();
             }
+            
+            /**
+             * check if tempCps could replace an Object on the UpperNodeanvas
+             */
+            if(model.getSelectedCpsObjects().size() == 1 && checkForReplacement(upperNode.getNodes(), tempCps, tempCps.getPosition().x, tempCps.getPosition().y)){
+            	/**
+            	 * replace on canvas
+            	 */
+            	controller.replaceObjUpperNode(mayBeReplaced, tempCps, upperNode);
+            	mayBeReplaced=null;
+            }
         }
 
         if (!e.isControlDown() && !dragged && tempCps != null && MouseEvent.BUTTON3 != e.getButton()) {