Browse Source

Merge branch 'Ohne_Drag_and_Drop' of https://git.tk.informatik.tu-darmstadt.de/carlos.garcia/praktikum-holons into Ohne_Drag_and_Drop

Edgardo Palza 8 years ago
parent
commit
bcda43ed57

+ 0 - 1
src/tests/praktikumHolonsTestCategoryController.java

@@ -23,7 +23,6 @@ public class praktikumHolonsTestCategoryController {
 		model = new Model();
 		mp = new MultiPurposeController(model);
 		controller = new CategoryController(model, mp);
-
 	}
 
 	@Test

+ 44 - 0
src/tests/praktikumHolonsTestObjectController.java

@@ -0,0 +1,44 @@
+package tests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import classes.HolonObject;
+import ui.controller.CategoryController;
+import ui.controller.MultiPurposeController;
+import ui.controller.ObjectController;
+import ui.model.Model;
+
+public class praktikumHolonsTestObjectController {
+
+	
+	protected praktikumHolonsAdapter adapter;
+	protected Model model;
+	protected MultiPurposeController mp;
+	protected CategoryController cg;
+	protected ObjectController controller;
+
+	@Before
+	public void setUp() {
+		adapter = new praktikumHolonsAdapter();
+		model = new Model();
+		mp = new MultiPurposeController(model);
+		cg = new CategoryController(model, mp);
+		controller = new ObjectController(model, mp);
+	}
+	
+	@Test
+	public void testInitialHolonElements() {
+		assertTrue("Number of Elements does not Match", model.getCategories().size() == 5);
+		assertTrue("Second Category is not Building", model.getCategories().get(1).getName().equals("Building"));
+		assertTrue("Category Building is Empty", !model.getCategories().get(1).getObjects().isEmpty());
+		assertEquals("Object is not a Power Plant", mp.searchCategory("Energy").getObjects().get(0).getObjName(),
+				"Power Plant");
+		assertFalse("A Switch should not be a Holon Object",
+				mp.searchCategoryObject(mp.searchCategory("Component"), "Switch") instanceof HolonObject);
+	}
+}

+ 3 - 0
src/tests/praktikumHolonsTestSuite.java

@@ -6,10 +6,13 @@ import junit.framework.TestSuite;
 
 public class praktikumHolonsTestSuite {
 
+
+	//Test Suite
 	public static Test suite() {
 		TestSuite suite = new TestSuite("Tests for prakikum-holons");
 		suite.addTest(new JUnit4TestAdapter(praktikumHolonsTestCategoryController.class));
 		suite.addTest(new JUnit4TestAdapter(praktikumHolonsTestCanvasController.class));
+		suite.addTest(new JUnit4TestAdapter(praktikumHolonsTestObjectController.class));
 		return suite;
 	}
 }

+ 2 - 0
src/ui/controller/CanvasController.java

@@ -88,6 +88,8 @@ public class CanvasController {
 	 *            the edge to remove
 	 */
 	public void removeEdgesOnCanvas(CpsEdge edge) {
+		edge.getA().getConnections().remove(edge);
+		edge.getB().getConnections().remove(edge);
 		MODEL.getEdgesOnCanvas().remove(edge);
 	}
 

+ 3 - 1
src/ui/controller/LoadController.java

@@ -72,6 +72,7 @@ public class LoadController {
 		if (mode.equals(MODE.ALL) || mode.equals(MODE.CATEGORY)) {
 			MODEL.setCgIdx(new HashMap<String, Integer>());
 			MODEL.setCategories(new ArrayList<Category>());
+			MODEL.setEdgesOnCanvas(new ArrayList<>());
 		}
 		if (mode.equals(MODE.ALL) || mode.equals(MODE.CATEGORY)) {
 			MODEL.setCvsObjIdx(new HashMap<Integer, Integer>());
@@ -207,8 +208,9 @@ public class LoadController {
 		HolonElement ele = new HolonElement(next(i), Integer.parseInt(next(i)), Float.parseFloat(next(i)));
 
 		if (sav.equals("CVS")) {
+			ele.setSav(sav);
+			ele.setObj(obj);
 			ele.setActive(convert(Integer.parseInt(next(i))));
-			System.out.println(ele.getActive());
 			objC.addElementIntoCanvasObject((HolonObject) mpC.searchByID(Integer.parseInt(obj)), ele);
 		} else
 			objC.addElementIntoCategoryObject(sav, obj, ele);

+ 11 - 10
src/ui/controller/ObjectController.java

@@ -23,11 +23,13 @@ public class ObjectController {
 	 * init default Power supply of the Power Plant
 	 */
 	public void initHolonElements() {
-		addNewElementIntoCategoryObject("Energy", "Power Plant", "Power", 1, 100);
-		addNewElementIntoCategoryObject("Energy", "Power Plant", "Zero", 10, 100);
-		addNewElementIntoCategoryObject("Energy", "Power Plant", "Rehab", 10, 100);
-		addNewElementIntoCategoryObject("Energy", "Power Plant", "The Doctor", 40, 100);
-		addNewElementIntoCategoryObject("Energy", "Power Plant", "Original", 1, 100);
+		addNewElementIntoCategoryObject("Energy", "Power Plant", "Power", 1, 10000);
+		addNewElementIntoCategoryObject("Building", "House", "TV", 2, -250);
+		addNewElementIntoCategoryObject("Building", "House", "Fridge", 1, -500);
+		addNewElementIntoCategoryObject("Building", "House", "Radio", 1, -100);
+		addNewElementIntoCategoryObject("Building", "House", "PC", 3, -250);
+		addNewElementIntoCategoryObject("Building", "House", "Light", 5, -50);
+		addNewElementIntoCategoryObject("Building", "House", "Solar Panels", 1, 300);
 	}
 
 	/**
@@ -46,6 +48,8 @@ public class ObjectController {
 	 * @param type
 	 */
 	public void addElementIntoCanvasObject(HolonObject object, HolonElement element) {
+		element.setSav("CVS");
+		element.setObj(Integer.toString(object.getID()));
 		addElement(object, element);
 	}
 
@@ -60,8 +64,6 @@ public class ObjectController {
 	 */
 	public void addNewElementIntoCanvasObject(int id, String element, int amount, float energy) {
 		HolonElement ele = new HolonElement(element, amount, energy);
-		ele.setSav("CVS");
-		ele.setObj(Integer.toString(id));
 		addElementIntoCanvasObject((HolonObject) mpC.searchByID(id), ele);
 	}
 
@@ -72,6 +74,8 @@ public class ObjectController {
 	 * @param element
 	 */
 	public void addElementIntoCategoryObject(String category, String object, HolonElement element) {
+		element.setSav(category);
+		element.setObj(object);
 		addElement((HolonObject) mpC.searchCategoryObject(mpC.searchCategory(category), object), element);
 	}
 
@@ -88,9 +92,6 @@ public class ObjectController {
 			float energy) {
 
 		HolonElement ele = new HolonElement(element, amount, energy);
-		ele.setSav(category);
-		ele.setObj(object);
-
 		addElementIntoCategoryObject(category, object, ele);
 	}
 

+ 74 - 76
src/ui/view/MyCanvas.java

@@ -53,6 +53,7 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 	private int sx, sy; // Mark Coords
 
 	ArrayList<HolonElement> dataSelected = new ArrayList<HolonElement>();
+	ArrayList<CpsObject> TempSelected = new ArrayList<CpsObject>();
 
 	private boolean dragging = false; // for dragging
 	private boolean drawEdge = false; // for drawing edges
@@ -182,8 +183,8 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 						((HolonSwitch) cps).setState(false);
 					}
 				}
-				if ((cps == tempCps && model.getSelectedCpsObjects().size() == 0)
-						|| model.getSelectedCpsObjects().contains(cps)) {
+				if ((cps == tempCps && model.getSelectedCpsObjects().size() == 0 && TempSelected.size() == 0)
+						|| model.getSelectedCpsObjects().contains(cps) || TempSelected.contains(cps)) {
 					g2.setColor(Color.BLUE);
 					g2.fillRect(cps.getPosition().x - (controller.getScale() / 20),
 							cps.getPosition().y - (controller.getScale() / 20),
@@ -233,15 +234,6 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 				g2.drawRect(sx, y, x - sx, sy - y);
 			}
 		}
-
-		/*
-		 * // Testing for (CpsObject cps : markSelect) {
-		 * g2.setColor(Color.BLUE); g2.fillRect(cps.getPosition().x -
-		 * (controller.getScale() / 20), cps.getPosition().y -
-		 * (controller.getScale() / 20), controller.getScale() +
-		 * ((controller.getScale() / 20) * 2), controller.getScale() +
-		 * ((controller.getScale() / 20) * 2)); }
-		 */
 	}
 
 	@Override
@@ -249,6 +241,7 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 		// clear SelectedObjects
 		if (!e.isControlDown() && dragging == false) {
 			model.getSelectedCpsObjects().clear();
+			TempSelected.clear();
 		}
 	}
 
@@ -325,9 +318,19 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 			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());
+
 		repaint();
+
 	}
 
 	@Override
@@ -335,56 +338,57 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 		// If Edge is drawn
 		x = e.getX();
 		y = e.getY();
+		if (!model.getSelectedCpsObjects().contains(tempCps)) {
+			model.getSelectedCpsObjects().clear();
+			TempSelected.clear();
+		}
+
 		if (dragging) {
 			try {
-				if (model.getSelectedCpsObjects().size() > 0) {
-					for (CpsObject cps : model.getSelectedCpsObjects()) {
-						// Au�erhalb des Randes gedragged?
-						if (cps == tempCps) {
-							x = e.getX() - controller.getScaleDiv2();
-							y = e.getY() - controller.getScaleDiv2();
-						} else {
-							x = e.getX() + (cps.getPosition().x - e.getX()) ;
-							y = e.getY() + (cps.getPosition().y - e.getY()) ;
-						}
-
-						if (x < controller.getScaleDiv2())
+				float xDist, yDist; //Distance
+				
+				x = e.getX() - controller.getScaleDiv2();
+				y = e.getY() - controller.getScaleDiv2();
+
+				//Make sure its in bounds
+				if (e.getX() < controller.getScaleDiv2())
+					x = 0;
+				else if (e.getX() > this.getWidth() - controller.getScaleDiv2())
+					x = this.getWidth() - controller.getScale();
+				if (e.getY() < controller.getScaleDiv2())
+					y = 0;
+				else if (e.getY() > this.getHeight() - controller.getScaleDiv2())
+					y = this.getHeight() - controller.getScale();
+
+				//Distance
+				xDist = x-tempCps.getPosition().x;
+				yDist = y-tempCps.getPosition().y;
+				
+				tempCps.setPosition(x, y); // Drag Position
+				selectRect.setLocation(x - (controller.getScale() / 20), y - (controller.getScale() / 20)); // Highlighting-Position
+				
+				// TipText Position and name
+				objectTT.setTipText(tempCps.getName());
+				objectTT.setLocation(x, y + controller.getScale());
+				
+				//All Selected Objects
+				for (CpsObject cps : model.getSelectedCpsObjects()) {
+					if (cps != tempCps) {
+						x = (int) (cps.getPosition().x+xDist);
+						y = (int) (cps.getPosition().y+yDist);
+
+						//Make sure its in bounds
+						if (x < 0)
 							x = 0;
-						else if (x > this.getWidth() - controller.getScaleDiv2())
+						else if (x > this.getWidth())
 							x = this.getWidth() - controller.getScale();
 						if (y < controller.getScaleDiv2())
 							y = 0;
-						else if (y > this.getHeight() - controller.getScaleDiv2())
+						else if (y > this.getHeight())
 							y = this.getHeight() - controller.getScale();
-
-						System.out.println(x + ", " + y);
-						// Drag Position
+						
 						cps.setPosition(x, y);
-						// TipText Position and name
-						objectTT.setTipText(tempCps.getName());
-						objectTT.setLocation(e.getX() - controller.getScaleDiv2(),
-								e.getY() - controller.getScaleDiv2() + controller.getScale());
 					}
-				} else {
-					// Au�erhalb des Randes gedragged?
-					x = e.getX() - controller.getScaleDiv2();
-					y = e.getY() - controller.getScaleDiv2();
-
-					if (e.getX() < controller.getScaleDiv2())
-						x = 0;
-					else if (e.getX() > this.getWidth() - controller.getScaleDiv2())
-						x = this.getWidth() - controller.getScale();
-					if (e.getY() < controller.getScaleDiv2())
-						y = 0;
-					else if (e.getY() > this.getHeight() - controller.getScaleDiv2())
-						y = this.getHeight() - controller.getScale();
-					// Drag Position
-					tempCps.setPosition(x, y);
-					// Highlighting Position
-					selectRect.setLocation(x - (controller.getScale() / 20), y - (controller.getScale() / 20));
-					// TipText Position and name
-					objectTT.setTipText(tempCps.getName());
-					objectTT.setLocation(x, y + controller.getScale());
 				}
 				repaint();
 			} catch (Exception e2) {
@@ -393,24 +397,25 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 		}
 
 		// Mark Objects
-		if (doMark) {
+		TempSelected.clear();
+		if (doMark)
+
+		{
 			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);
-					}
 				}
 			}
 		}
@@ -485,8 +490,6 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 				}
 				if (!newEdge) {
 					controller.removeEdgesOnCanvas(e);
-					tempCps.getConnections().remove(e);
-					cps.getConnections().remove(e);
 					// Node ohne Edge?
 					if (e.getA().getClass() == CpsNode.class && e.getA().getConnections().isEmpty()) {
 						tempCps = e.getA();
@@ -507,7 +510,6 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 		if (onEdge) {
 			CpsEdge p = mousePositionOnEdge(x, y);
 			if (p != null) {
-				CpsEdge temp = null;
 				CpsEdge e1 = null;
 				CpsEdge e2 = null;
 
@@ -528,11 +530,7 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 
 				e2 = new CpsEdge(n, k, edgeCapacity);
 
-				p.getA().getConnections().remove(p);
-				p.getB().getConnections().remove(p);
-
-				temp = p;
-				controller.removeEdgesOnCanvas(temp);
+				controller.removeEdgesOnCanvas(p);
 				controller.AddEdgeOnCanvas(e);
 				controller.AddEdgeOnCanvas(e1);
 				controller.AddEdgeOnCanvas(e2);