Sfoglia il codice sorgente

select verbessert und drag fix

Kevin Trometer 8 anni fa
parent
commit
73839fa0a4
1 ha cambiato i file con 31 aggiunte e 17 eliminazioni
  1. 31 17
      src/ui/view/MyCanvas.java

+ 31 - 17
src/ui/view/MyCanvas.java

@@ -53,6 +53,7 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 	private int sx, sy; // Mark Coords
 	private int sx, sy; // Mark Coords
 
 
 	ArrayList<HolonElement> dataSelected = new ArrayList<HolonElement>();
 	ArrayList<HolonElement> dataSelected = new ArrayList<HolonElement>();
+	ArrayList<CpsObject> TempSelected = new ArrayList<CpsObject>();
 
 
 	private boolean dragging = false; // for dragging
 	private boolean dragging = false; // for dragging
 	private boolean drawEdge = false; // for drawing edges
 	private boolean drawEdge = false; // for drawing edges
@@ -325,9 +326,19 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 			popmenu.show(e.getComponent(), e.getX(), e.getY());
 			popmenu.show(e.getComponent(), e.getX(), e.getY());
 		}
 		}
 
 
-		doMark = false;
+		if (doMark) {
+			doMark = false;
+			for (CpsObject cps : TempSelected) {
+				if (!model.getSelectedCpsObjects().contains(cps)) {
+					controller.addSelectedObject(cps);
+				}
+			}
+		}
+
 		controller.calculateStateForTimeStep(model.getCurIteration());
 		controller.calculateStateForTimeStep(model.getCurIteration());
+
 		repaint();
 		repaint();
+
 	}
 	}
 
 
 	@Override
 	@Override
@@ -335,6 +346,10 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 		// If Edge is drawn
 		// If Edge is drawn
 		x = e.getX();
 		x = e.getX();
 		y = e.getY();
 		y = e.getY();
+		if (!model.getSelectedCpsObjects().contains(tempCps)) {
+			model.getSelectedCpsObjects().clear();
+		}
+
 		if (dragging) {
 		if (dragging) {
 			try {
 			try {
 				if (model.getSelectedCpsObjects().size() > 0) {
 				if (model.getSelectedCpsObjects().size() > 0) {
@@ -344,8 +359,8 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 							x = e.getX() - controller.getScaleDiv2();
 							x = e.getX() - controller.getScaleDiv2();
 							y = e.getY() - controller.getScaleDiv2();
 							y = e.getY() - controller.getScaleDiv2();
 						} else {
 						} else {
-							x = e.getX() + (cps.getPosition().x - e.getX()) ;
-							y = e.getY() + (cps.getPosition().y - e.getY()) ;
+							x = e.getX() + (cps.getPosition().x - e.getX());
+							y = e.getY() + (cps.getPosition().y - e.getY());
 						}
 						}
 
 
 						if (x < controller.getScaleDiv2())
 						if (x < controller.getScaleDiv2())
@@ -393,24 +408,23 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 		}
 		}
 
 
 		// Mark Objects
 		// Mark Objects
+		TempSelected.clear();
 		if (doMark) {
 		if (doMark) {
 			for (CpsObject cps : model.getObjectsOnCanvas()) {
 			for (CpsObject cps : model.getObjectsOnCanvas()) {
-				if (!model.getSelectedCpsObjects().contains(cps)) {
+				int x1 = sx, x2 = x, y1 = sy, y2 = y;
 
 
-					int x1 = sx, x2 = x, y1 = sy, y2 = y;
+				if (sx >= x) {
+					x1 = x;
+					x2 = sx;
+				}
+				if (sy >= y) {
+					y1 = y;
+					y2 = sy;
+				}
+				if (x1 <= cps.getPosition().x && y1 <= cps.getPosition().y && x2 >= cps.getPosition().x
+						&& y2 >= cps.getPosition().y) {
+					TempSelected.add(cps);
 
 
-					if (sx >= x) {
-						x1 = x;
-						x2 = sx;
-					}
-					if (sy >= y) {
-						y1 = y;
-						y2 = sy;
-					}
-					if (x1 <= cps.getPosition().x && y1 <= cps.getPosition().y && x2 >= cps.getPosition().x
-							&& y2 >= cps.getPosition().y) {
-						controller.addSelectedObject(cps);
-					}
 				}
 				}
 			}
 			}
 		}
 		}