Browse Source

Edge Change

Kevin Trometer 8 years ago
parent
commit
091c5404e4
4 changed files with 66 additions and 34 deletions
  1. 1 1
      src/classes/CpsEdge.java
  2. 10 9
      src/classes/CpsObject.java
  3. 6 4
      src/ui/view/GUI.java
  4. 49 20
      src/ui/view/MyCanvas.java

+ 1 - 1
src/classes/CpsEdge.java

@@ -8,7 +8,7 @@ public class CpsEdge {
 	CpsObject A;
 	CpsObject B;
 
-	CpsEdge(CpsObject A, CpsObject B){
+	public CpsEdge(CpsObject A, CpsObject B){
 		setA(A);
 		setB(B);
 		this.maxCapacity = 100;

+ 10 - 9
src/classes/CpsObject.java

@@ -3,6 +3,7 @@ package classes;
 import java.util.ArrayList;
 
 import Interfaces.ComparableObject;
+import javafx.util.Pair;
 import ui.model.idCounter;
 
 public abstract class CpsObject implements ComparableObject {
@@ -15,7 +16,7 @@ public abstract class CpsObject implements ComparableObject {
 	/* Path of the image for the Obj. */
 	String image;
 	/* Array of neighbors */
-	ArrayList<CpsObject> connections;
+	ArrayList<Pair<CpsObject, CpsEdge>> connections;
 	/* Position with a X and Y value */
 	Position position;
 	/* Energy input and output of each object in the grid */
@@ -28,7 +29,7 @@ public abstract class CpsObject implements ComparableObject {
 	public CpsObject(String objName) {
 		setObjName(objName);
 		setName(objName);
-		setConnections(new ArrayList<CpsObject>());
+		setConnections(new ArrayList<Pair<CpsObject, CpsEdge>>());
 		setPosition(new Position());
 		setImage("/Images/Dummy_House.png");
 	}
@@ -36,7 +37,7 @@ public abstract class CpsObject implements ComparableObject {
 	public CpsObject(CpsObject obj) {
 		setObjName(obj.getObjName());
 		setName(obj.getObjName());
-		setConnections(new ArrayList<CpsObject>());
+		setConnections(new ArrayList<Pair<CpsObject, CpsEdge>>());
 		setPosition(new Position());
 		setID(idCounter.nextId());
 		setEnergyIn(obj.getEnergyIn());
@@ -87,24 +88,24 @@ public abstract class CpsObject implements ComparableObject {
 	/**
 	 * @return the connections
 	 */
-	public ArrayList<CpsObject> getConnections() {
+	public ArrayList<Pair<CpsObject, CpsEdge>> getConnections() {
 		return connections;
 	}
 
 	/**
-	 * @param connections
+	 * @param arrayList
 	 *            the connections to set
 	 */
-	public void setConnections(ArrayList<CpsObject> connections) {
-		this.connections = connections;
+	public void setConnections(ArrayList<Pair<CpsObject, CpsEdge>> arrayList) {
+		this.connections = arrayList;
 	}
 
 	/* Neighbors array */
-	public ArrayList<CpsObject> getConnectedTo() {
+	public ArrayList<Pair<CpsObject, CpsEdge>> getConnectedTo() {
 		return connections;
 	}
 
-	public void AddConnection(CpsObject toConnect) {
+	public void AddConnection(Pair<CpsObject, CpsEdge> toConnect) {
 		connections.add(toConnect);
 	}
 

+ 6 - 4
src/ui/view/GUI.java

@@ -54,11 +54,13 @@ import javax.swing.DefaultComboBoxModel;
 import javax.swing.ImageIcon;
 
 import classes.Category;
+import classes.CpsEdge;
 import classes.CpsObject;
 import classes.HolonElement;
 import classes.HolonObject;
 import classes.HolonSwitch;
 import classes.HolonTransformer;
+import javafx.util.Pair;
 import Interfaces.CategoryListener;
 
 import java.awt.event.ActionListener;
@@ -471,17 +473,17 @@ public class GUI implements CategoryListener {
 						Object[] tempEnergy = { "Total Energy", ((HolonObject) canvas.tempCps).getCurrentEnergy() };
 						tableModelProperties.addRow(tempEnergy);
 					}
-					ArrayList<CpsObject> temp_array = canvas.tempCps.getConnectedTo();
+					ArrayList<Pair<CpsObject, CpsEdge>> temp_array = canvas.tempCps.getConnectedTo();
 					if (!temp_array.isEmpty()) {
 						boolean first = true;
-						for (CpsObject temp : temp_array) {
+						for (Pair<CpsObject, CpsEdge> temp : temp_array) {
 							if (first) {
 								first = false;
 								Object[] tempConnection = { canvas.tempCps.getName() + " is connected to",
-										temp.getName() + " with ID: " + temp.getID() };
+										temp.getKey().getName() + " with ID: " + temp.getKey().getID() };
 								tableModelProperties.addRow(tempConnection);
 							} else {
-								Object[] tempConnection = { "", temp.getName() + " with ID: " + temp.getID() };
+								Object[] tempConnection = { "", temp.getKey().getName() + " with ID: " + temp.getKey().getID() };
 								tableModelProperties.addRow(tempConnection);
 							}
 						}

+ 49 - 20
src/ui/view/MyCanvas.java

@@ -24,6 +24,7 @@ import javax.swing.JToolTip;
 
 import com.sun.javafx.geom.Edge;
 
+import classes.CpsEdge;
 import classes.CpsNode;
 import classes.CpsObject;
 import classes.HolonElement;
@@ -106,26 +107,24 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 					tempCps.getPosition().y + controller.getScaleDiv2(), x, y);
 
 		for (CpsObject cps : model.getObjectsOnCanvas()) {
-			for (CpsObject con : cps.getConnectedTo()) {
-				if (con.getID() != model.getSelectedObjectID() && cps.getID() != model.getSelectedObjectID())
+			for (Pair<CpsObject, CpsEdge> con : cps.getConnectedTo()) {
+				if (con.getKey().getID() != model.getSelectedObjectID() && cps.getID() != model.getSelectedObjectID())
 					g2.drawLine(cps.getPosition().x + controller.getScaleDiv2(),
 							cps.getPosition().y + controller.getScaleDiv2(),
-							con.getPosition().x + controller.getScaleDiv2(),
-							con.getPosition().y + controller.getScaleDiv2());
-				g2.drawString("100", (cps.getPosition().x + con.getPosition().x) / 2 + model.getScaleDiv2(),
-						(cps.getPosition().y + con.getPosition().y) / 2 + model.getScaleDiv2());
+							con.getKey().getPosition().x + controller.getScaleDiv2(),
+							con.getKey().getPosition().y + controller.getScaleDiv2());
 			}
 		}
 
 		// Highlighted Edge
 		g2.setColor(Color.GREEN);
 		for (CpsObject cps : model.getObjectsOnCanvas()) {
-			for (CpsObject con : cps.getConnectedTo()) {
-				if (con.getID() == model.getSelectedObjectID())
+			for (Pair<CpsObject, CpsEdge> con : cps.getConnectedTo()) {
+				if (con.getKey().getID() == model.getSelectedObjectID())
 					g2.drawLine(cps.getPosition().x + controller.getScaleDiv2(),
 							cps.getPosition().y + controller.getScaleDiv2(),
-							con.getPosition().x + controller.getScaleDiv2(),
-							con.getPosition().y + controller.getScaleDiv2());
+							con.getKey().getPosition().x + controller.getScaleDiv2(),
+							con.getKey().getPosition().y + controller.getScaleDiv2());
 			}
 		}
 
@@ -208,8 +207,8 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 		}
 
 		// Rightclick List
-		if (e.getButton() == e.BUTTON3) {
-			if (e.getButton() == e.BUTTON3 && tempCps != null) {
+		if (e.getButton() == MouseEvent.BUTTON3) {
+			if (e.getButton() == MouseEvent.BUTTON3 && tempCps != null) {
 				itemDelete.setEnabled(true);
 			} else {
 				itemDelete.setEnabled(false);
@@ -299,19 +298,44 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 	 */
 	private void drawDeleteEdge() {
 		boolean node = true;
+		boolean newEdge = true;
+		CpsEdge e;
 		CpsNode n = null;
+		Pair<CpsObject, CpsEdge> tempPair = null;
+		Pair<CpsObject, CpsEdge>  cpsPair = null;
+		
+		for (Pair<CpsObject, CpsEdge> p: tempCps.getConnections()) {
+			if(p.getKey() == tempCps){
+				cpsPair = p;
+			}
+		}
+		
 		for (CpsObject cps : model.getObjectsOnCanvas()) {
 			cx = cps.getPosition().x;
 			cy = cps.getPosition().y;
 			if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy
 					&& cps != tempCps) {
 				node = false;
-				if (!cps.getConnectedTo().contains(tempCps)) {
-					cps.AddConnection(tempCps);
-					tempCps.AddConnection(cps);
-				} else {
-					cps.getConnectedTo().remove(tempCps);
-					tempCps.getConnectedTo().remove(cps);
+				for (Pair<CpsObject, CpsEdge> p: tempCps.getConnections()) {
+					if(p.getKey() == cps){
+						System.out.println("remove");
+						for (Pair<CpsObject, CpsEdge> pp: tempCps.getConnections()) {
+							if(p.getKey() == tempCps){
+								cpsPair = p;
+								cps.getConnectedTo().remove(tempPair);
+								tempCps.getConnectedTo().remove(cpsPair);
+							}
+						}
+					}
+				}
+				if (newEdge) {
+					e = new CpsEdge(cps, tempCps);
+					tempPair = new Pair<CpsObject, CpsEdge>(tempCps, e);
+					cpsPair = new Pair<CpsObject, CpsEdge>(cps, e);
+					
+					cps.AddConnection(tempPair);
+					tempCps.AddConnection(cpsPair);
+					
 				}
 			}
 		}
@@ -319,8 +343,13 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 			n = new CpsNode("Node");
 			n.setPosition(x - model.getScaleDiv2(), y - model.getScaleDiv2());
 			controller.addObjectCanvas(n);
-			n.AddConnection(tempCps);
-			tempCps.AddConnection(n);
+			
+			e = new CpsEdge(n, tempCps);
+			tempPair = new Pair<CpsObject, CpsEdge>(tempCps, e);
+			cpsPair = new Pair<CpsObject, CpsEdge>(n, e);
+			
+			n.AddConnection(tempPair);
+			tempCps.AddConnection(cpsPair);
 			System.out.println("node ID: " + n.getID());
 		}
 	}