Browse Source

GroupNode Update

Tom Troppmann 4 years ago
parent
commit
30339950ba
67 changed files with 923 additions and 1333 deletions
  1. BIN
      exampleNetworks/Topologie.holon
  2. 6 6
      src/Connection/ConnectHandheld.java
  3. 6 6
      src/Connection/ConnectPhysical.java
  4. 6 6
      src/DataSets/GraphDataSet.java
  5. 6 6
      src/TypeAdapter/AbstractCpsObjectAdapter.java
  6. 5 5
      src/addOns/RandomPriority.java
  7. 6 6
      src/addOns/Randomizer.java
  8. 6 6
      src/algorithm/binary/BaseLine.java
  9. 10 10
      src/algorithm/example/DemoAlgo.java
  10. 10 10
      src/algorithm/example/FlexExample.java
  11. 6 6
      src/api/AlgorithmFrameworkFlex.java
  12. 18 31
      src/api/TopologieAlgorithmFramework.java
  13. 9 9
      src/classes/AbstractCanvasObject.java
  14. 4 4
      src/classes/Category.java
  15. 10 10
      src/classes/Edge.java
  16. 5 5
      src/classes/ExitCable.java
  17. 16 49
      src/classes/GroupNode.java
  18. 2 2
      src/classes/HolonBattery.java
  19. 2 2
      src/classes/HolonObject.java
  20. 2 2
      src/classes/HolonSwitch.java
  21. 10 10
      src/classes/IntermediateCalculationCable.java
  22. 6 6
      src/classes/Node.java
  23. 5 5
      src/classes/SubNet.java
  24. 3 3
      src/classes/TrackedDataSet.java
  25. 2 2
      src/interfaces/GraphListener.java
  26. 1 1
      src/interfaces/ObjectListener.java
  27. 43 92
      src/ui/controller/CanvasController.java
  28. 3 3
      src/ui/controller/CategoryController.java
  29. 35 51
      src/ui/controller/ClipboardController.java
  30. 38 70
      src/ui/controller/Control.java
  31. 5 5
      src/ui/controller/FlexManager.java
  32. 20 20
      src/ui/controller/HolonCanvasController.java
  33. 20 32
      src/ui/controller/LoadController.java
  34. 12 12
      src/ui/controller/MultiPurposeController.java
  35. 56 313
      src/ui/controller/NodeController.java
  36. 10 10
      src/ui/controller/ObjectController.java
  37. 13 15
      src/ui/controller/SaveController.java
  38. 6 6
      src/ui/controller/SimulationManager.java
  39. 6 6
      src/ui/controller/StatsController.java
  40. 25 25
      src/ui/controller/UpdateController.java
  41. 4 4
      src/ui/model/DecoratedCable.java
  42. 8 8
      src/ui/model/DecoratedGroupNode.java
  43. 4 4
      src/ui/model/IntermediateCableWithState.java
  44. 51 38
      src/ui/model/MinimumModel.java
  45. 3 2
      src/ui/model/MinimumNetwork.java
  46. 43 43
      src/ui/model/Model.java
  47. 63 32
      src/ui/model/VisualRepresentationalState.java
  48. 16 16
      src/ui/view/AbstractCanvas.java
  49. 3 3
      src/ui/view/AddElementPopUp.java
  50. 4 4
      src/ui/view/AddObjectPopUp.java
  51. 2 2
      src/ui/view/BackgroundPopUp.java
  52. 1 1
      src/ui/view/CreateTemplatePopUp.java
  53. 4 22
      src/ui/view/EditEdgesPopUp.java
  54. 10 10
      src/ui/view/FlexWindow.java
  55. 2 2
      src/ui/view/FlexiblePane.java
  56. 32 33
      src/ui/view/GUI.java
  57. 55 55
      src/ui/view/MyCanvas.java
  58. 5 5
      src/ui/view/Outliner.java
  59. 7 7
      src/ui/view/SearchPopUp.java
  60. 28 28
      src/ui/view/StatisticGraph.java
  61. 4 4
      src/ui/view/StatisticPanel.java
  62. 2 2
      src/ui/view/UnitGraph.java
  63. 95 117
      src/ui/view/UpperNodeCanvas.java
  64. 2 2
      tests/tests/PraktikumHolonsAdapter.java
  65. 7 7
      tests/tests/PraktikumHolonsTestCanvasController.java
  66. 11 11
      tests/tests/PraktikumHolonsTestClasses.java
  67. 3 3
      tests/tests/PraktikumHolonsTestObjectController.java

BIN
exampleNetworks/Topologie.holon


+ 6 - 6
src/Connection/ConnectHandheld.java

@@ -23,8 +23,8 @@ import javax.swing.JTextArea;
 import javax.swing.text.NumberFormatter;
 
 import api.AddOn;
-import classes.AbstractCpsObject;
-import classes.CpsUpperNode;
+import classes.AbstractCanvasObject;
+import classes.GroupNode;
 import classes.HolonObject;
 import Connection.ConnectPhysical.HolonObjectStatus;
 import Connection.ConnectPhysical.PhysicalLinkWrapper;
@@ -199,11 +199,11 @@ public class ConnectHandheld implements AddOn{
 
 
 
-		private void addObjectToList(List<AbstractCpsObject> listToSearch, List<HolonObject> listToAdd){
-			for (AbstractCpsObject aCps : listToSearch) {
+		private void addObjectToList(List<AbstractCanvasObject> listToSearch, List<HolonObject> listToAdd){
+			for (AbstractCanvasObject aCps : listToSearch) {
 				if (aCps instanceof HolonObject) listToAdd.add((HolonObject) aCps);
-				else if(aCps instanceof CpsUpperNode) {
-					addObjectToList(((CpsUpperNode)aCps).getNodes(),listToAdd);
+				else if(aCps instanceof GroupNode) {
+					addObjectToList(((GroupNode)aCps).getNodes(),listToAdd);
 				}
 			}
 		}

+ 6 - 6
src/Connection/ConnectPhysical.java

@@ -32,8 +32,8 @@ import javax.swing.JTextArea;
 import javax.swing.text.NumberFormatter;
 
 import api.AddOn;
-import classes.AbstractCpsObject;
-import classes.CpsUpperNode;
+import classes.AbstractCanvasObject;
+import classes.GroupNode;
 import classes.HolonElement;
 import classes.HolonObject;
 import ui.controller.Control;
@@ -467,11 +467,11 @@ public class ConnectPhysical implements AddOn{
 	
 
 	
-	private void addObjectToList(List<AbstractCpsObject> listToSearch, List<HolonObject> listToAdd){
-		for (AbstractCpsObject aCps : listToSearch) {
+	private void addObjectToList(List<AbstractCanvasObject> listToSearch, List<HolonObject> listToAdd){
+		for (AbstractCanvasObject aCps : listToSearch) {
 			if (aCps instanceof HolonObject) listToAdd.add((HolonObject) aCps);
-			else if(aCps instanceof CpsUpperNode) {
-				addObjectToList(((CpsUpperNode)aCps).getNodes(),listToAdd);
+			else if(aCps instanceof GroupNode) {
+				addObjectToList(((GroupNode)aCps).getNodes(),listToAdd);
 			}
 		}
 	}

+ 6 - 6
src/DataSets/GraphDataSet.java

@@ -2,7 +2,7 @@ package DataSets;
 
 import java.util.Hashtable;
 
-import classes.AbstractCpsObject;
+import classes.AbstractCanvasObject;
 
 /*
  * a class which contains one AbstractCpsObject and a corresponding Hashtable
@@ -11,19 +11,19 @@ import classes.AbstractCpsObject;
  */
 public class GraphDataSet {
 	Hashtable<String, PropertyDataSet> propertyTable;
-	AbstractCpsObject cpsObject;
+	AbstractCanvasObject cpsObject;
 	
-	public GraphDataSet(AbstractCpsObject obj){
+	public GraphDataSet(AbstractCanvasObject obj){
 		cpsObject = obj;
 		propertyTable = new Hashtable<String, PropertyDataSet>();
 	}
 	
-	public GraphDataSet(AbstractCpsObject obj, Hashtable<String, PropertyDataSet> ht){
+	public GraphDataSet(AbstractCanvasObject obj, Hashtable<String, PropertyDataSet> ht){
 		cpsObject = obj;
 		propertyTable = ht;
 	}
 	
-	public void setObject(AbstractCpsObject aco){
+	public void setObject(AbstractCanvasObject aco){
 		cpsObject = aco;
 	}
 	
@@ -31,7 +31,7 @@ public class GraphDataSet {
 		propertyTable = ht;
 	}
 	
-	public AbstractCpsObject getObject(){
+	public AbstractCanvasObject getObject(){
 		return cpsObject;
 	}
 	

+ 6 - 6
src/TypeAdapter/AbstractCpsObjectAdapter.java

@@ -11,26 +11,26 @@ import com.google.gson.JsonPrimitive;
 import com.google.gson.JsonSerializationContext;
 import com.google.gson.JsonSerializer;
 
-import classes.AbstractCpsObject;
-import classes.CpsUpperNode;
+import classes.AbstractCanvasObject;
+import classes.GroupNode;
 import ui.view.UpperNodeCanvas;
 
 public class AbstractCpsObjectAdapter
-		implements JsonSerializer<AbstractCpsObject>, JsonDeserializer<AbstractCpsObject> {
+		implements JsonSerializer<AbstractCanvasObject>, JsonDeserializer<AbstractCanvasObject> {
 
 	@Override
-	public JsonElement serialize(AbstractCpsObject arg0, Type arg1, JsonSerializationContext arg2) {
+	public JsonElement serialize(AbstractCanvasObject arg0, Type arg1, JsonSerializationContext arg2) {
 		// TODO Auto-generated method stub
 		JsonObject object = new JsonObject();
 		object.add("type", new JsonPrimitive(arg0.getClass().getSimpleName()));
 		object.add("properties", arg2.serialize(arg0, arg0.getClass()));
-		if (arg0 instanceof CpsUpperNode)
+		if (arg0 instanceof GroupNode)
 			object.add("hash", new JsonPrimitive(arg0.hashCode()));
 		return object;
 	}
 
 	@Override
-	public AbstractCpsObject deserialize(JsonElement arg0, Type arg1, JsonDeserializationContext arg2)
+	public AbstractCanvasObject deserialize(JsonElement arg0, Type arg1, JsonDeserializationContext arg2)
 			throws JsonParseException {
 		// TODO Auto-generated method stub
 		JsonObject object = arg0.getAsJsonObject();

+ 5 - 5
src/addOns/RandomPriority.java

@@ -16,8 +16,8 @@ import javax.swing.JPanel;
 import javax.swing.JSlider;
 
 import api.AddOn;
-import classes.AbstractCpsObject;
-import classes.CpsUpperNode;
+import classes.AbstractCanvasObject;
+import classes.GroupNode;
 import classes.Flexibility;
 import classes.HolonElement;
 import classes.HolonElement.Priority;
@@ -194,11 +194,11 @@ public class RandomPriority implements AddOn {
 	
 	
 
-	private List<HolonObject> createListOfHolonObjects(List<AbstractCpsObject> objectsOnCanvas) {
+	private List<HolonObject> createListOfHolonObjects(List<AbstractCanvasObject> objectsOnCanvas) {
 	List<HolonObject> list = new ArrayList<HolonObject>();
-	for(AbstractCpsObject aCps :  objectsOnCanvas) {
+	for(AbstractCanvasObject aCps :  objectsOnCanvas) {
 		if(aCps instanceof HolonObject) list.add((HolonObject) aCps);
-		else if(aCps instanceof CpsUpperNode)list.addAll(createListOfHolonObjects(((CpsUpperNode)aCps).getNodes()));
+		else if(aCps instanceof GroupNode)list.addAll(createListOfHolonObjects(((GroupNode)aCps).getNodes()));
 	}
 	return list;
 	}

+ 6 - 6
src/addOns/Randomizer.java

@@ -33,9 +33,9 @@ import com.google.gson.annotations.Expose;
 import com.google.gson.annotations.SerializedName;
 
 import api.AddOn;
-import classes.AbstractCpsObject;
+import classes.AbstractCanvasObject;
 import classes.Constrain;
-import classes.CpsUpperNode;
+import classes.GroupNode;
 import classes.Flexibility;
 import classes.HolonElement;
 import classes.HolonElement.Priority;
@@ -141,15 +141,15 @@ public class Randomizer implements AddOn {
 		
 	}
 	
-	private void rollOutNodes(List<AbstractCpsObject> nodes, 	List<HolonObject> consumerList, int timeStep) {
-		for (AbstractCpsObject aCps : nodes) {
+	private void rollOutNodes(List<AbstractCanvasObject> nodes, 	List<HolonObject> consumerList, int timeStep) {
+		for (AbstractCanvasObject aCps : nodes) {
 			if (aCps instanceof HolonObject) {
 				HolonObject hO = (HolonObject) aCps;
 				//if(hO.getEnergyAtTimeStep(control.getModel().getCurIteration()) < 0)
 				consumerList.add(hO);
 			}
-			else if(aCps instanceof CpsUpperNode) {
-				rollOutNodes(((CpsUpperNode)aCps).getNodes(), consumerList ,timeStep );
+			else if(aCps instanceof GroupNode) {
+				rollOutNodes(((GroupNode)aCps).getNodes(), consumerList ,timeStep );
 			}
 		}
 		

+ 6 - 6
src/algorithm/binary/BaseLine.java

@@ -40,8 +40,8 @@ import javax.swing.filechooser.FileNameExtensionFilter;
 import javax.swing.text.NumberFormatter;
 
 import api.AddOn;
-import classes.AbstractCpsObject;
-import classes.CpsUpperNode;
+import classes.AbstractCanvasObject;
+import classes.GroupNode;
 import classes.HolonElement;
 import classes.HolonObject;
 import classes.HolonSwitch;
@@ -379,8 +379,8 @@ public class BaseLine implements AddOn {
 	 * @param positionToInit
 	 * @param timeStep
 	 */
-	private void rollOutNodes(List<AbstractCpsObject> nodes, List<Boolean> positionToInit, int timeStep) {
-		for(AbstractCpsObject aCps : nodes) {
+	private void rollOutNodes(List<AbstractCanvasObject> nodes, List<Boolean> positionToInit, int timeStep) {
+		for(AbstractCanvasObject aCps : nodes) {
 			if (aCps instanceof HolonObject) {
 				for (HolonElement hE : ((HolonObject) aCps).getElements()) {
 					positionToInit.add(hE.isActive());
@@ -394,8 +394,8 @@ public class BaseLine implements AddOn {
 				switchList.add(sw);
 				access.put(positionToInit.size() - 1 , new AccessWrapper(sw));
 			}
-			else if(aCps instanceof CpsUpperNode) {
-				rollOutNodes(((CpsUpperNode)aCps).getNodes(), positionToInit ,timeStep );
+			else if(aCps instanceof GroupNode) {
+				rollOutNodes(((GroupNode)aCps).getNodes(), positionToInit ,timeStep );
 			}
 		}
 	}

+ 10 - 10
src/algorithm/example/DemoAlgo.java

@@ -29,8 +29,8 @@ import javax.swing.JTextArea;
 import javax.swing.text.NumberFormatter;
 
 import api.AddOn;
-import classes.AbstractCpsObject;
-import classes.CpsUpperNode;
+import classes.AbstractCanvasObject;
+import classes.GroupNode;
 import classes.HolonElement;
 import classes.HolonObject;
 import classes.HolonSwitch;
@@ -372,8 +372,8 @@ public class DemoAlgo implements AddOn {
 		 * @param positionToInit
 		 * @param timeStep
 		 */
-		private void rollOutNodes(List<AbstractCpsObject> nodes, List<Boolean> positionToInit, int timeStep) {
-			for(AbstractCpsObject aCps : nodes) {
+		private void rollOutNodes(List<AbstractCanvasObject> nodes, List<Boolean> positionToInit, int timeStep) {
+			for(AbstractCanvasObject aCps : nodes) {
 				if (aCps instanceof HolonObject) {
 					for (HolonElement hE : ((HolonObject) aCps).getElements()) {
 						positionToInit.add(hE.isActive());
@@ -387,8 +387,8 @@ public class DemoAlgo implements AddOn {
 					switchList.add(sw);
 					access.put(positionToInit.size() - 1 , new AccessWrapper(sw));
 				}
-				else if(aCps instanceof CpsUpperNode) {
-					rollOutNodes(((CpsUpperNode)aCps).getNodes(), positionToInit ,timeStep );
+				else if(aCps instanceof GroupNode) {
+					rollOutNodes(((GroupNode)aCps).getNodes(), positionToInit ,timeStep );
 				}
 			}
 		}
@@ -433,11 +433,11 @@ public class DemoAlgo implements AddOn {
 
 
 
-		private void addObjectToList(List<AbstractCpsObject> listToSearch, List<HolonObject> listToAdd){
-			for (AbstractCpsObject aCps : listToSearch) {
+		private void addObjectToList(List<AbstractCanvasObject> listToSearch, List<HolonObject> listToAdd){
+			for (AbstractCanvasObject aCps : listToSearch) {
 				if (aCps instanceof HolonObject) listToAdd.add((HolonObject) aCps);
-				else if(aCps instanceof CpsUpperNode) {
-					addObjectToList(((CpsUpperNode)aCps).getNodes(),listToAdd);
+				else if(aCps instanceof GroupNode) {
+					addObjectToList(((GroupNode)aCps).getNodes(),listToAdd);
 				}
 			}
 		}

+ 10 - 10
src/algorithm/example/FlexExample.java

@@ -32,8 +32,8 @@ import javax.swing.JTextArea;
 import javax.swing.text.NumberFormatter;
 
 import api.AddOn;
-import classes.AbstractCpsObject;
-import classes.CpsUpperNode;
+import classes.AbstractCanvasObject;
+import classes.GroupNode;
 import classes.HolonElement;
 import classes.HolonElement.Priority;
 import classes.HolonObject;
@@ -499,8 +499,8 @@ public class FlexExample implements AddOn {
 		 * @param positionToInit
 		 * @param timeStep
 		 */
-		private void rollOutNodes(List<AbstractCpsObject> nodes, List<Boolean> positionToInit, int timeStep) {
-			for(AbstractCpsObject aCps : nodes) {
+		private void rollOutNodes(List<AbstractCanvasObject> nodes, List<Boolean> positionToInit, int timeStep) {
+			for(AbstractCanvasObject aCps : nodes) {
 				if (aCps instanceof HolonObject) {
 					for (HolonElement hE : ((HolonObject) aCps).getElements()) {
 						positionToInit.add(hE.isActive());
@@ -514,8 +514,8 @@ public class FlexExample implements AddOn {
 					switchList.add(sw);
 					access.put(positionToInit.size() - 1 , new AccessWrapper(sw));
 				}
-				else if(aCps instanceof CpsUpperNode) {
-					rollOutNodes(((CpsUpperNode)aCps).getNodes(), positionToInit ,timeStep );
+				else if(aCps instanceof GroupNode) {
+					rollOutNodes(((GroupNode)aCps).getNodes(), positionToInit ,timeStep );
 				}
 			}
 		}
@@ -547,11 +547,11 @@ public class FlexExample implements AddOn {
 
 
 
-		private void addObjectToList(List<AbstractCpsObject> listToSearch, List<HolonObject> listToAdd){
-			for (AbstractCpsObject aCps : listToSearch) {
+		private void addObjectToList(List<AbstractCanvasObject> listToSearch, List<HolonObject> listToAdd){
+			for (AbstractCanvasObject aCps : listToSearch) {
 				if (aCps instanceof HolonObject) listToAdd.add((HolonObject) aCps);
-				else if(aCps instanceof CpsUpperNode) {
-					addObjectToList(((CpsUpperNode)aCps).getNodes(),listToAdd);
+				else if(aCps instanceof GroupNode) {
+					addObjectToList(((GroupNode)aCps).getNodes(),listToAdd);
 				}
 			}
 		}

+ 6 - 6
src/api/AlgorithmFrameworkFlex.java

@@ -38,8 +38,8 @@ import javax.swing.JScrollPane;
 import javax.swing.JSplitPane;
 import javax.swing.text.NumberFormatter;
 
-import classes.AbstractCpsObject;
-import classes.CpsUpperNode;
+import classes.AbstractCanvasObject;
+import classes.GroupNode;
 import classes.Flexibility;
 import classes.HolonElement;
 import classes.HolonObject;
@@ -740,8 +740,8 @@ public abstract class AlgorithmFrameworkFlex implements AddOn{
 	 * @param positionToInit
 	 * @param timeStep
 	 */
-	private void rollOutNodes(List<AbstractCpsObject> nodes, List<Boolean> positionToInit, int timeStep) {
-		for(AbstractCpsObject aCps : nodes) {
+	private void rollOutNodes(List<AbstractCanvasObject> nodes, List<Boolean> positionToInit, int timeStep) {
+		for(AbstractCanvasObject aCps : nodes) {
 			if (aCps instanceof HolonObject && algoUseElements) {
 				for (HolonElement hE : ((HolonObject) aCps).getElements()) {
 					positionToInit.add(hE.isActive());
@@ -753,8 +753,8 @@ public abstract class AlgorithmFrameworkFlex implements AddOn{
 				positionToInit.add(sw.getState(timeStep));
 				access.add(new AccessWrapper(sw));
 			}
-			else if(aCps instanceof CpsUpperNode) {
-				rollOutNodes(((CpsUpperNode)aCps).getNodes(), positionToInit ,timeStep );
+			else if(aCps instanceof GroupNode) {
+				rollOutNodes(((GroupNode)aCps).getNodes(), positionToInit ,timeStep );
 			}
 		}
 	}

+ 18 - 31
src/api/TopologieAlgorithmFramework.java

@@ -41,10 +41,10 @@ import javax.swing.JProgressBar;
 import javax.swing.JScrollPane;
 import javax.swing.JSplitPane;
 import javax.swing.text.NumberFormatter;
-import classes.AbstractCpsObject;
+import classes.AbstractCanvasObject;
 import classes.Category;
-import classes.CpsEdge;
-import classes.CpsUpperNode;
+import classes.Edge;
+import classes.GroupNode;
 import classes.Flexibility;
 import classes.HolonElement;
 import classes.HolonObject;
@@ -84,9 +84,9 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
 	LinkedList<List<Integer>> resetChain = new LinkedList<List<Integer>>();
 	
 	
-	private HashMap<Integer, AbstractCpsObject> accessIntToObject = new HashMap<Integer, AbstractCpsObject>();
-	private HashMap<AbstractCpsObject, Integer> accessObjectToInt = new HashMap<AbstractCpsObject, Integer>();
-	private HashMap<Integer, AbstractCpsObject> accessIntegerToWildcard = new HashMap<Integer, AbstractCpsObject>();
+	private HashMap<Integer, AbstractCanvasObject> accessIntToObject = new HashMap<Integer, AbstractCanvasObject>();
+	private HashMap<AbstractCanvasObject, Integer> accessObjectToInt = new HashMap<AbstractCanvasObject, Integer>();
+	private HashMap<Integer, AbstractCanvasObject> accessIntegerToWildcard = new HashMap<Integer, AbstractCanvasObject>();
 	
 	
 	private HashSet<IndexCable> cableSet = new HashSet<IndexCable>();
@@ -95,7 +95,7 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
 	private int countForAccessMap = 0;
 	private int amountOfExistingCables = 0;
 	private ArrayList<HolonSwitch> switchList = new ArrayList<HolonSwitch>();
-	private ArrayList<CpsEdge> edgeList = new ArrayList<CpsEdge>();
+	private ArrayList<Edge> edgeList = new ArrayList<Edge>();
 	
 	
 	boolean algoUseElements = false, algoUseSwitches = true, algoUseFlexes = true;
@@ -681,7 +681,6 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
 		generateAccess(model.getObjectsOnCanvas());			
 		addCables(model.getEdgesOnCanvas());
 		model.getEdgesOnCanvas().clear();
-		getCables(model.getObjectsOnCanvas());
 		//New Cables
 		for(int i = 0; i < this.amountOfNewCables; i++) {
 			initialState.add(0);
@@ -713,8 +712,8 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
 	 * @param positionToInit
 	 * @param timeStep
 	 */
-	private void generateAccess(List<AbstractCpsObject> nodes) {
-		for(AbstractCpsObject aCps : nodes) {
+	private void generateAccess(List<AbstractCanvasObject> nodes) {
+		for(AbstractCanvasObject aCps : nodes) {
 			if(aCps instanceof HolonObject) {
 				HolonObject hO = (HolonObject) aCps;
 				accessIntToObject.put(++countForAccessMap, hO);
@@ -723,20 +722,8 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
 					accessWildcards.add(new AccessWrapper(hO));
 				}
 			}
-			else if(aCps instanceof CpsUpperNode) {
-				generateAccess(((CpsUpperNode)aCps).getNodes());
-			}
-		}
-	}
-	private void getCables(List<AbstractCpsObject> nodes) {
-		for(AbstractCpsObject aCps : nodes) {
-			if(aCps instanceof CpsUpperNode) {
-				CpsUpperNode aUpperNode = (CpsUpperNode)aCps;
-				addCables(aUpperNode.getNodeEdges());
-				addCables(aUpperNode.getOldEdges());
-				aUpperNode.getNodeEdges().clear();
-				aUpperNode.getOldEdges().clear();
-				getCables(((CpsUpperNode)aCps).getNodes());
+			else if(aCps instanceof GroupNode) {
+				generateAccess(((GroupNode)aCps).getNodes());
 			}
 		}
 	}
@@ -749,9 +736,9 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
 	 * All Nodes have to be in the access map !!
 	 * @param cables
 	 */
-	private void addCables(List<CpsEdge> edges) {
+	private void addCables(List<Edge> edges) {
 		
-		for (CpsEdge edge : edges) {
+		for (Edge edge : edges) {
 			edge.setUnlimitedCapacity(true);
 			edgeList.add(edge);
 			//console.println("Cable from " + edge.getA().getName() + " to " + edge.getB().getName());
@@ -791,8 +778,8 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
 	private void generateEdgeFromIndexCable(IndexCable cable, boolean switchBetween){
 		if(switchBetween) {
 			//generate Switch
-			AbstractCpsObject fromObject =  accessIntToObject.get(cable.first);
-			AbstractCpsObject toObject =  accessIntToObject.get(cable.second);
+			AbstractCanvasObject fromObject =  accessIntToObject.get(cable.first);
+			AbstractCanvasObject toObject =  accessIntToObject.get(cable.second);
 			int middleX = (fromObject.getPosition().x +   toObject.getPosition().x)/2;
 			int middleY = (fromObject.getPosition().y +   toObject.getPosition().y)/2;
 			HolonSwitch newSwitch = new HolonSwitch("Switch12368");
@@ -801,18 +788,18 @@ public abstract class TopologieAlgorithmFramework implements AddOn{
 			this.switchList.add(newSwitch);
 			
 			//Generate Cable From Object A To Switch
-			CpsEdge edge1 = new CpsEdge(fromObject, newSwitch);
+			Edge edge1 = new Edge(fromObject, newSwitch);
 			edge1.setUnlimitedCapacity(true);
 			control.getModel().getEdgesOnCanvas().add(edge1);
 			edgeList.add(edge1);
 			
 			//Generate Cable From Object B To Switch
-			CpsEdge edge = new CpsEdge(newSwitch, toObject);
+			Edge edge = new Edge(newSwitch, toObject);
 			edge.setUnlimitedCapacity(true);
 			control.getModel().getEdgesOnCanvas().add(edge);
 			edgeList.add(edge);
 			}else {
-			CpsEdge edge = new CpsEdge(accessIntToObject.get(cable.first), accessIntToObject.get(cable.second));
+			Edge edge = new Edge(accessIntToObject.get(cable.first), accessIntToObject.get(cable.second));
 			edge.setUnlimitedCapacity(true);
 			control.getModel().getEdgesOnCanvas().add(edge);
 			edgeList.add(edge);

+ 9 - 9
src/classes/AbstractCpsObject.java → src/classes/AbstractCanvasObject.java

@@ -13,7 +13,7 @@ import java.util.ArrayList;
  * @author Gruppe14
  *
  */
-public abstract class AbstractCpsObject {
+public abstract class AbstractCanvasObject {
 	/* Type of the Object. */
 	@Expose
 	String objName;
@@ -27,7 +27,7 @@ public abstract class AbstractCpsObject {
 	@Expose
 	String image;
 	/* Array of neighbors */
-	ArrayList<CpsEdge> connections;
+	ArrayList<Edge> connections;
 	/* Position with a X and Y value */
 	@Expose
 	Position position;
@@ -51,7 +51,7 @@ public abstract class AbstractCpsObject {
 	 * @param objName
 	 *            of the Object
 	 */
-	public AbstractCpsObject(String objName) {
+	public AbstractCanvasObject(String objName) {
 		setObjName(objName);
 		setName(objName);
 		setImage("/Images/Dummy_House.png");
@@ -68,7 +68,7 @@ public abstract class AbstractCpsObject {
 	 * @param obj
 	 *            Object to be copied
 	 */
-	public AbstractCpsObject(AbstractCpsObject obj) {
+	public AbstractCanvasObject(AbstractCanvasObject obj) {
 		setObjName(obj.getObjName());
 		setName(obj.getObjName());
 		setConnections(new ArrayList<>());
@@ -77,7 +77,7 @@ public abstract class AbstractCpsObject {
 		setImage(obj.getImage());
 	}
 	
-	public abstract AbstractCpsObject makeCopy();
+	public abstract AbstractCanvasObject makeCopy();
 
 	/**
 	 * Getter for the type of the Object.
@@ -160,7 +160,7 @@ public abstract class AbstractCpsObject {
 	 * 
 	 * @return the connections ArrayList
 	 */
-	public ArrayList<CpsEdge> getConnections() {
+	public ArrayList<Edge> getConnections() {
 		return connections;
 	}
 
@@ -170,7 +170,7 @@ public abstract class AbstractCpsObject {
 	 * @param arrayList
 	 *            the connections to set
 	 */
-	public void setConnections(ArrayList<CpsEdge> arrayList) {
+	public void setConnections(ArrayList<Edge> arrayList) {
 		this.connections = arrayList;
 	}
 
@@ -179,7 +179,7 @@ public abstract class AbstractCpsObject {
 	 * 
 	 * @return the connections ArrayList
 	 */
-	public ArrayList<CpsEdge> getConnectedTo() {
+	public ArrayList<Edge> getConnectedTo() {
 		return connections;
 	}
 
@@ -189,7 +189,7 @@ public abstract class AbstractCpsObject {
 	 * @param toConnect
 	 *            Edge
 	 */
-	public void addConnection(CpsEdge toConnect) {
+	public void addConnection(Edge toConnect) {
 		connections.add(toConnect);
 	}
 

+ 4 - 4
src/classes/Category.java

@@ -16,7 +16,7 @@ import com.google.gson.annotations.Expose;
 
 public class Category {
 	// objects: is a ArrayList of all Objects that belongs to the Category
-	private ArrayList<AbstractCpsObject> objects;
+	private ArrayList<AbstractCanvasObject> objects;
 	// name: is a String chosen by the User
 	@Expose
 	private String name; 
@@ -29,7 +29,7 @@ public class Category {
 	 * @param name name of the Category
 	 */
 	public Category(String name) {
-		setObjects(new ArrayList<AbstractCpsObject>());
+		setObjects(new ArrayList<AbstractCanvasObject>());
 		setName(name);
 		setObjIdx(new HashMap<String, Integer>());
 
@@ -40,7 +40,7 @@ public class Category {
 	 * 
 	 * @return the objects
 	 */
-	public ArrayList<AbstractCpsObject> getObjects() {
+	public ArrayList<AbstractCanvasObject> getObjects() {
 		return objects;
 	}
 
@@ -50,7 +50,7 @@ public class Category {
 	 * @param objects
 	 *            the objects to set
 	 */
-	public void setObjects(ArrayList<AbstractCpsObject> objects) {
+	public void setObjects(ArrayList<AbstractCanvasObject> objects) {
 		this.objects = objects;
 	}
 

+ 10 - 10
src/classes/CpsEdge.java → src/classes/Edge.java

@@ -11,7 +11,7 @@ import java.util.ArrayList;
  *
  * @author Gruppe14
  */
-public class CpsEdge {
+public class Edge {
 
     // Max. capacity of the Edge, if flow is greater than the status --> is
     // Working would be false
@@ -21,9 +21,9 @@ public class CpsEdge {
     // for internal use --> flow of electricity (simulation state)
     ArrayList<Integer> pseudoTags;
     // Source
-    AbstractCpsObject a;
+    AbstractCanvasObject a;
     // Destination
-    AbstractCpsObject b;
+    AbstractCanvasObject b;
     
     
     
@@ -51,7 +51,7 @@ public class CpsEdge {
      * @param a Source
      * @param b Destination
      */
-    public CpsEdge(AbstractCpsObject a, AbstractCpsObject b) {
+    public Edge(AbstractCanvasObject a, AbstractCanvasObject b) {
         setA(a);
         setB(b);
         if(a == null) {
@@ -74,7 +74,7 @@ public class CpsEdge {
      * @param b      Destination
      * @param maxCap Maximum Capacity
      */
-    public CpsEdge(AbstractCpsObject a, AbstractCpsObject b, float maxCap) {
+    public Edge(AbstractCanvasObject a, AbstractCanvasObject b, float maxCap) {
         setA(a);
         setB(b);
         this.a.addConnection(this);
@@ -110,7 +110,7 @@ public class CpsEdge {
      *
      * @return the a
      */
-    public AbstractCpsObject getA() {
+    public AbstractCanvasObject getA() {
         return a;
     }
 
@@ -119,7 +119,7 @@ public class CpsEdge {
      *
      * @param a the a to set
      */
-    public void setA(AbstractCpsObject a) {
+    public void setA(AbstractCanvasObject a) {
         this.a = a;
     }
 
@@ -128,7 +128,7 @@ public class CpsEdge {
      *
      * @return the b
      */
-    public AbstractCpsObject getB() {
+    public AbstractCanvasObject getB() {
         return b;
     }
 
@@ -137,7 +137,7 @@ public class CpsEdge {
      *
      * @param b the b to set
      */
-    public void setB(AbstractCpsObject b) {
+    public void setB(AbstractCanvasObject b) {
         this.b = b;
     }
 
@@ -223,7 +223,7 @@ public class CpsEdge {
      * @param holonObject the AbstractCpsObject to check.
      * @return true if either a or b is the AbstractCpsObject to check.
      */
-    public boolean isConnectedTo(AbstractCpsObject holonObject)
+    public boolean isConnectedTo(AbstractCanvasObject holonObject)
     {
     	return (holonObject.equals(a) || holonObject.equals(b));
     }

+ 5 - 5
src/classes/ExitCable.java

@@ -13,11 +13,11 @@ public class ExitCable {
 	}
 	private ExitCableState state;
 	//GroupNode or AbstractCpsObject
-	private AbstractCpsObject start;
-	private AbstractCpsObject finish;
+	private AbstractCanvasObject start;
+	private AbstractCanvasObject finish;
 	private DecoratedCable cable;
 	
-	public ExitCable(ExitCableState state, AbstractCpsObject start, AbstractCpsObject finish, DecoratedCable cable) {
+	public ExitCable(ExitCableState state, AbstractCanvasObject start, AbstractCanvasObject finish, DecoratedCable cable) {
 		this.state = state;
 		this.start = start;
 		this.finish = finish;
@@ -27,10 +27,10 @@ public class ExitCable {
 	public ExitCableState getState() {
 		return state;
 	}
-	public AbstractCpsObject getStart() {
+	public AbstractCanvasObject getStart() {
 		return start;
 	}
-	public AbstractCpsObject getFinish() {
+	public AbstractCanvasObject getFinish() {
 		return finish;
 	}
 	public DecoratedCable getCable() {

+ 16 - 49
src/classes/CpsUpperNode.java → src/classes/GroupNode.java

@@ -5,11 +5,9 @@ import com.google.gson.annotations.Expose;
 import java.util.ArrayList;
 import java.util.HashMap;
 
-public class CpsUpperNode extends AbstractCpsObject {
+public class GroupNode extends AbstractCanvasObject {
 
-	private ArrayList<AbstractCpsObject> nodes;
-	private ArrayList<CpsEdge> nodeEdges;
-	private ArrayList<CpsEdge> oldEdges;
+	private ArrayList<AbstractCanvasObject> nodes;
 	private HashMap<Integer, Integer> nodesIdx;
 	
 	@Expose
@@ -23,22 +21,20 @@ public class CpsUpperNode extends AbstractCpsObject {
 	@Expose
 	private int backgroundHeight = 0;
 
-	public CpsUpperNode(String nodeName) {
+	public GroupNode(String nodeName) {
 		super(nodeName);
 		this.setConnections(new ArrayList<>());
 		this.setImage("/Images/upper_node.png");
 		this.setSav("CVS");
 		this.setId(IdCounter.nextId());
 		this.setNodes(new ArrayList<>());
-		this.setNodeEdges(new ArrayList<>());
-		this.setOldEdges(new ArrayList<>());
 		this.setNodesIdx(new HashMap<>());
 	}
 
 	/**
 	 * @return the nodes
 	 */
-	public ArrayList<AbstractCpsObject> getNodes() {
+	public ArrayList<AbstractCanvasObject> getNodes() {
 		return nodes;
 	}
 
@@ -46,39 +42,10 @@ public class CpsUpperNode extends AbstractCpsObject {
 	 * @param nodes
 	 *            the nodes to set
 	 */
-	public void setNodes(ArrayList<AbstractCpsObject> nodes) {
+	public void setNodes(ArrayList<AbstractCanvasObject> nodes) {
 		this.nodes = nodes;
 	}
 
-	/**
-	 * @return the nodeEdges
-	 */
-	public ArrayList<CpsEdge> getNodeEdges() {
-		return nodeEdges;
-	}
-
-	/**
-	 * @param nodeEdges
-	 *            the nodeEdges to set
-	 */
-	public void setNodeEdges(ArrayList<CpsEdge> nodeEdges) {
-		this.nodeEdges = nodeEdges;
-	}
-
-	/**
-	 * @return the oldEdges
-	 */
-	public ArrayList<CpsEdge> getOldEdges() {
-		return oldEdges;
-	}
-
-	/**
-	 * @param oldEdges
-	 *            the oldEdges to set
-	 */
-	public void setOldEdges(ArrayList<CpsEdge> oldEdges) {
-		this.oldEdges = oldEdges;
-	}
 
 	/**
 	 * @return the nodesIdx
@@ -97,7 +64,7 @@ public class CpsUpperNode extends AbstractCpsObject {
 
 	public ArrayList<HolonObject> getNumHolonObj() {
 		ArrayList<HolonObject> onlyHolonObj = new ArrayList<HolonObject>();
-		for (AbstractCpsObject temp : getNodes()) {
+		for (AbstractCanvasObject temp : getNodes()) {
 			if (temp instanceof HolonObject) {
 				onlyHolonObj.add((HolonObject) temp);
 			}
@@ -107,7 +74,7 @@ public class CpsUpperNode extends AbstractCpsObject {
 
 	public ArrayList<HolonSwitch> getNumSwitches() {
 		ArrayList<HolonSwitch> onlySwitsches = new ArrayList<HolonSwitch>();
-		for (AbstractCpsObject temp : getNodes()) {
+		for (AbstractCanvasObject temp : getNodes()) {
 			if (temp instanceof HolonSwitch) {
 				onlySwitsches.add((HolonSwitch) temp);
 			}
@@ -115,19 +82,19 @@ public class CpsUpperNode extends AbstractCpsObject {
 		return onlySwitsches;
 	}
 
-	public ArrayList<CpsUpperNode> getNumUpperNodes() {
-		ArrayList<CpsUpperNode> onlyUpperNodes = new ArrayList<CpsUpperNode>();
-		for (AbstractCpsObject temp : getNodes()) {
-			if (temp instanceof CpsUpperNode) {
-				onlyUpperNodes.add((CpsUpperNode) temp);
+	public ArrayList<GroupNode> getNumUpperNodes() {
+		ArrayList<GroupNode> onlyUpperNodes = new ArrayList<GroupNode>();
+		for (AbstractCanvasObject temp : getNodes()) {
+			if (temp instanceof GroupNode) {
+				onlyUpperNodes.add((GroupNode) temp);
 			}
 		}
 		return onlyUpperNodes;
 	}
 
-	public AbstractCpsObject searchObj(int ID) {
-		AbstractCpsObject result = null;
-		for (AbstractCpsObject obj : getNodes()) {
+	public AbstractCanvasObject searchObj(int ID) {
+		AbstractCanvasObject result = null;
+		for (AbstractCanvasObject obj : getNodes()) {
 			if (obj.getId() == ID) {
 				result = obj;
 				break;
@@ -206,7 +173,7 @@ public class CpsUpperNode extends AbstractCpsObject {
 	}
 
 	@Override
-	public AbstractCpsObject makeCopy() {
+	public AbstractCanvasObject makeCopy() {
 		return this;
 	}
 

+ 2 - 2
src/classes/HolonBattery.java

@@ -5,7 +5,7 @@ import com.google.gson.annotations.Expose;
 
 import ui.controller.*;
 
-public class HolonBattery extends AbstractCpsObject{
+public class HolonBattery extends AbstractCanvasObject{
 	
 	@Expose
 	private float inRatio;
@@ -36,7 +36,7 @@ public class HolonBattery extends AbstractCpsObject{
 	/** Constructor to Copy a Battery
 	 * @param obj Object to copy.
 	 */
-	public HolonBattery(AbstractCpsObject obj)
+	public HolonBattery(AbstractCanvasObject obj)
 	{
 		super(obj);
 		super.setName(obj.getName());

+ 2 - 2
src/classes/HolonObject.java

@@ -15,7 +15,7 @@ import java.util.ArrayList;
  *
  * @author Gruppe14
  */
-public class HolonObject extends AbstractCpsObject { 
+public class HolonObject extends AbstractCanvasObject { 
     /* Array of all consumers */
     private ArrayList<HolonElement> elements;
     /* Array for tracking Production */
@@ -43,7 +43,7 @@ public class HolonObject extends AbstractCpsObject {
      *
      * @param obj object to be copied
      */
-    public HolonObject(AbstractCpsObject obj) {
+    public HolonObject(AbstractCanvasObject obj) {
         super(obj);
         setElements(copyElements(((HolonObject) obj).getElements()));
         setTrackingProd(new float[100]);

+ 2 - 2
src/classes/HolonSwitch.java

@@ -19,7 +19,7 @@ import ui.view.UnitGraph;
  * @author Gruppe14
  *
  */
-public class HolonSwitch extends AbstractCpsObject implements LocalMode, GraphEditable {
+public class HolonSwitch extends AbstractCanvasObject implements LocalMode, GraphEditable {
 
 	/**
 	 * The class HolonSwitch represents an Object in the system, that has the
@@ -86,7 +86,7 @@ public class HolonSwitch extends AbstractCpsObject implements LocalMode, GraphEd
 	 * @param obj
 	 *            the Object to copy
 	 */
-	public HolonSwitch(AbstractCpsObject obj) {
+	public HolonSwitch(AbstractCanvasObject obj) {
 		super(obj);
 		System.out.println("SwitchCopy?");
 		HolonSwitch copyObj = (HolonSwitch)obj;

+ 10 - 10
src/classes/IntermediateCalculationCable.java

@@ -8,34 +8,34 @@ import ui.model.DecoratedCable;
  *
  */
 public class IntermediateCalculationCable {
-	private AbstractCpsObject outsideObject;
-	private AbstractCpsObject insideObject;
-	private CpsUpperNode getInsideUpperNode;
-	private CpsUpperNode getOutsideUpperNode;
+	private AbstractCanvasObject outsideObject;
+	private AbstractCanvasObject insideObject;
+	private GroupNode getInsideUpperNode;
+	private GroupNode getOutsideUpperNode;
 	private DecoratedCable cable;
-	public IntermediateCalculationCable(DecoratedCable cable, CpsUpperNode getInsideUpperNode,CpsUpperNode getOutsideUpperNode, AbstractCpsObject insideObject, AbstractCpsObject outsideObject){
+	public IntermediateCalculationCable(DecoratedCable cable, GroupNode getInsideUpperNode,GroupNode getOutsideUpperNode, AbstractCanvasObject insideObject, AbstractCanvasObject outsideObject){
 		this.cable = cable;
 		this.getInsideUpperNode = getInsideUpperNode;
 		this.getOutsideUpperNode = getOutsideUpperNode;
 		this.insideObject = insideObject;
 		this.outsideObject = outsideObject;
 	}
-	public AbstractCpsObject getOusideObject() {
+	public AbstractCanvasObject getOusideObject() {
 		return outsideObject;
 	}
-	public AbstractCpsObject getInsideObject() {
+	public AbstractCanvasObject getInsideObject() {
 		return insideObject;
 	}
-	public CpsUpperNode getInsideUpperNode() {
+	public GroupNode getInsideUpperNode() {
 		return getInsideUpperNode;
 	}
 	public DecoratedCable getCable() {
 		return cable;
 	}
-	public CpsEdge getModel() {
+	public Edge getModel() {
 		return cable.getModel();
 	}
-	public CpsUpperNode getOutsideUpperNode() {
+	public GroupNode getOutsideUpperNode() {
 		return getOutsideUpperNode;
 	}
 	public String toString() {

+ 6 - 6
src/classes/CpsNode.java → src/classes/Node.java

@@ -9,7 +9,7 @@ import java.util.ArrayList;
  * @author Gruppe14
  *
  */
-public class CpsNode extends AbstractCpsObject {
+public class Node extends AbstractCanvasObject {
 	
 	/**
 	 * Create a new node in the system with an user-defined name.
@@ -17,15 +17,15 @@ public class CpsNode extends AbstractCpsObject {
 	 * @param objName
 	 *            String
 	 */
-	public CpsNode(String objName) {
+	public Node(String objName) {
 		super(objName);
-		this.setConnections(new ArrayList<CpsEdge>());
+		this.setConnections(new ArrayList<Edge>());
 		this.setImage("/Images/node.png");
 		this.setSav("CVS");
 		this.setId(IdCounter.nextId());
 	}
 	
-	public CpsNode(CpsNode node){
+	public Node(Node node){
 		super(node);
 	}
 	
@@ -34,7 +34,7 @@ public class CpsNode extends AbstractCpsObject {
 	}
 	
 	@Override
-	public AbstractCpsObject makeCopy() {
-		return new CpsNode(this);
+	public AbstractCanvasObject makeCopy() {
+		return new Node(this);
 	}
 }

+ 5 - 5
src/classes/SubNet.java

@@ -10,7 +10,7 @@ import java.util.ArrayList;
  */
 public class SubNet {
 	private ArrayList<HolonObject> subNetObjects;
-	private ArrayList<CpsEdge> subNetEdges;
+	private ArrayList<Edge> subNetEdges;
 	private ArrayList<HolonSwitch> subNetSwitches;
 	private ArrayList<HolonBattery> subNetBatteries;
 	/**
@@ -23,7 +23,7 @@ public class SubNet {
 	 * @param switches
 	 *            Switches in the Subnet
 	 */
-	public SubNet(ArrayList<HolonObject> objects, ArrayList<CpsEdge> edges, ArrayList<HolonSwitch> switches, ArrayList<HolonBattery> batteries) {
+	public SubNet(ArrayList<HolonObject> objects, ArrayList<Edge> edges, ArrayList<HolonSwitch> switches, ArrayList<HolonBattery> batteries) {
 		subNetObjects = objects;
 		subNetEdges = edges;
 		subNetSwitches = switches;
@@ -43,7 +43,7 @@ public class SubNet {
 	 * 
 	 * @return all Edges in the Subnet
 	 */
-	public ArrayList<CpsEdge> getEdges() {
+	public ArrayList<Edge> getEdges() {
 		return subNetEdges;
 	}
 
@@ -69,7 +69,7 @@ public class SubNet {
         }
         sb.append("  Edges:");
         for (int j = 0; j < getEdges().size(); j++) {
-            CpsEdge edge = getEdges().get(j);
+            Edge edge = getEdges().get(j);
             sb.append("     " + edge.getA().getName() + " connected To " + edge.getB().getName());
         }
         sb.append("  Switches:");
@@ -89,7 +89,7 @@ public class SubNet {
             sb.append("    " + hl.getName() + "[ID:" + hl.getId()+ "]");
         }
         sb.append("\nEdges:");
-        for (CpsEdge edge :getEdges()) {
+        for (Edge edge :getEdges()) {
             sb.append("     " + edge.getA().getName() + " connected To " + edge.getB().getName());
         }
         sb.append("\nSwitches:");

+ 3 - 3
src/classes/TrackedDataSet.java

@@ -36,7 +36,7 @@ public class TrackedDataSet {
 	public static final int WASTED_ENERGY = 24;
 	
 	//Variables of the Data Set
-	private AbstractCpsObject cps;
+	private AbstractCanvasObject cps;
 	@Expose
 	private int property;
 	@Expose
@@ -58,7 +58,7 @@ public class TrackedDataSet {
 	 * @param timeStep
 	 * 			  The time steps at the moment this object is created
 	 */
-	public TrackedDataSet(AbstractCpsObject cps, int property, Color color, int timeSteps) {
+	public TrackedDataSet(AbstractCanvasObject cps, int property, Color color, int timeSteps) {
 		this.cps = cps;
 		this.property = property;
 		this.color = color;
@@ -66,7 +66,7 @@ public class TrackedDataSet {
 		resetValues();
 	}
 
-	public AbstractCpsObject getCpsObject() {
+	public AbstractCanvasObject getCpsObject() {
 		return this.cps;
 	}
 

+ 2 - 2
src/interfaces/GraphListener.java

@@ -1,6 +1,6 @@
 package interfaces;
 
-import classes.AbstractCpsObject;
+import classes.AbstractCanvasObject;
 
 import java.util.ArrayList;
 
@@ -8,5 +8,5 @@ public interface GraphListener {
 
     void repaintTree();
 
-    void addTrackedObject(ArrayList<AbstractCpsObject> hlList);
+    void addTrackedObject(ArrayList<AbstractCanvasObject> hlList);
 }

+ 1 - 1
src/interfaces/ObjectListener.java

@@ -14,5 +14,5 @@ public interface ObjectListener {
 	 * @param objects
 	 *            AbstractCpsObject
 	 */
-	public void onChange(ArrayList<classes.AbstractCpsObject> objects);
+	public void onChange(ArrayList<classes.AbstractCanvasObject> objects);
 }

+ 43 - 92
src/ui/controller/CanvasController.java

@@ -4,10 +4,10 @@ import java.awt.Point;
 import java.util.ArrayDeque;
 import java.util.ArrayList;
 
-import classes.CpsEdge;
-import classes.CpsNode;
-import classes.CpsUpperNode;
-import classes.AbstractCpsObject;
+import classes.Edge;
+import classes.Node;
+import classes.GroupNode;
+import classes.AbstractCanvasObject;
 import classes.HolonObject;
 import classes.HolonSwitch;
 import classes.Position;
@@ -44,13 +44,13 @@ public class CanvasController {
 	 *            CpsObject to be added.
 	 * @param replace when true objects could be replaced
 	 */
-	public void addObject(AbstractCpsObject object, boolean replace) {
+	public void addObject(AbstractCanvasObject object, boolean replace) {
 		model.getCvsObjIdx().put(object.getId(), model.getObjectsOnCanvas().size());
 		model.getObjectsOnCanvas().add(object);
 		/**
 		 * check if we should drag & drop replace
 		 */
-		if(!(object instanceof CpsNode) && replace){
+		if(!(object instanceof Node) && replace){
 			/** x of the dragged Object */
 			int x = object.getPosition().x;
 			
@@ -64,10 +64,10 @@ public class CanvasController {
 			int replaceCounter = 0;
 			
 			/** last object that could be replaced */
-			AbstractCpsObject toBeReplaced = null;
+			AbstractCanvasObject toBeReplaced = null;
 			
 			/** for each cps on Canvas */
-			for (AbstractCpsObject cps : model.getObjectsOnCanvas()){
+			for (AbstractCanvasObject cps : model.getObjectsOnCanvas()){
 				
 				/** same object -> ignore */
 				if(cps == object)continue;
@@ -100,7 +100,7 @@ public class CanvasController {
 	 * @param object
 	 *            the Object
 	 */
-	public void addNewObject(AbstractCpsObject object) {
+	public void addNewObject(AbstractCanvasObject object) {
 		object.setSav("CVS");
 		// object.setConnections(new ArrayList<CpsEdge>());
 		addObject(object, true);
@@ -131,10 +131,10 @@ public class CanvasController {
 	 * @param obj
 	 *            AbstractCpsObject
 	 */
-	public void deleteObjectOnCanvas(AbstractCpsObject obj) {
-		CpsEdge e = null;
-		for (AbstractCpsObject cps : model.getObjectsOnCanvas()) {
-			for (CpsEdge p : cps.getConnections()) {
+	public void deleteObjectOnCanvas(AbstractCanvasObject obj) {
+		Edge e = null;
+		for (AbstractCanvasObject cps : model.getObjectsOnCanvas()) {
+			for (Edge p : cps.getConnections()) {
 				if (p.getA() == obj || p.getB() == obj) {
 					e = p;
 				}
@@ -155,9 +155,9 @@ public class CanvasController {
      * @param toBeReplaced the object that will be replaced
      * @param by the object that will replace it
      */
-	public void replaceObjectOnCanvas(AbstractCpsObject toBeReplaced, AbstractCpsObject by) {
+	public void replaceObjectOnCanvas(AbstractCanvasObject toBeReplaced, AbstractCanvasObject by) {
 		/** let all edges of 'toBeReplaced' connect to 'by' */
-		for(CpsEdge e: toBeReplaced.getConnections()){
+		for(Edge e: toBeReplaced.getConnections()){
 			if(e.getA() == toBeReplaced){
 				e.setA(by);
 			}else if(e.getB() == toBeReplaced){
@@ -171,7 +171,7 @@ public class CanvasController {
 				by.addConnection(e);
 		}
 		/** delete 'toBeReplaced' new empty connections, to prevent Nullpointer*/
-		toBeReplaced.setConnections(new ArrayList<CpsEdge>(1));
+		toBeReplaced.setConnections(new ArrayList<Edge>(1));
 		/**
 		 * set Position of by to exactly toBeReplaced
 		 */
@@ -185,7 +185,7 @@ public class CanvasController {
 	 * @param edge
 	 *            the edge
 	 */
-	public void addEdgeOnCanvas(CpsEdge edge) {
+	public void addEdgeOnCanvas(Edge edge) {
 		model.getEdgesOnCanvas().add(edge);
 	}
 
@@ -195,12 +195,10 @@ public class CanvasController {
 	 * @param edge
 	 *            the edge to remove
 	 */
-	public void removeEdgesOnCanvas(CpsEdge edge) {
+	public void removeEdgesOnCanvas(Edge edge) {
 		edge.getA().getConnections().remove(edge);
 		edge.getB().getConnections().remove(edge);
 		model.getEdgesOnCanvas().remove(edge);
-		if (edge.getA() instanceof CpsUpperNode || edge.getB() instanceof CpsUpperNode)
-			handleUpperNodes(edge);
 	}
 
 	/**
@@ -211,11 +209,11 @@ public class CanvasController {
 	 */
 	public void pasteObjects(Point p) {
 		model.getSelectedCpsObjects().clear();
-		AbstractCpsObject tCps = null;
+		AbstractCanvasObject tCps = null;
 		int x = Integer.MAX_VALUE, y = Integer.MAX_VALUE;
 
 		// Location whre to copy the Elements
-		for (AbstractCpsObject cps : model.getClipboradObjects()) {
+		for (AbstractCanvasObject cps : model.getClipboradObjects()) {
 			if (cps.getPosition().x < x) {
 				x = cps.getPosition().x;
 			}
@@ -224,17 +222,17 @@ public class CanvasController {
 			}
 		}
 
-		ArrayList<AbstractCpsObject> tempList = new ArrayList<>();
+		ArrayList<AbstractCanvasObject> tempList = new ArrayList<>();
 		System.out.println("okay copy");
 		// Objects
-		for (AbstractCpsObject cps : model.getClipboradObjects()) {
+		for (AbstractCanvasObject cps : model.getClipboradObjects()) {
 			if (cps instanceof HolonObject) {
 				System.out.println("copy");
 				tCps = new HolonObject((HolonObject) cps);
 			} else if (cps instanceof HolonSwitch) {
 				tCps = new HolonSwitch((HolonSwitch) cps);
 			} else {
-				tCps = new CpsNode("Node");
+				tCps = new Node("Node");
 			}
 			tCps.setPosition(new Position(p.x + (cps.getPosition().x - x), p.y + (cps.getPosition().y - y)));
 			tCps.setSav(cps.getSav());
@@ -244,28 +242,28 @@ public class CanvasController {
 
 		// Edges
 		boolean newEdge = true;
-		for (AbstractCpsObject cps : model.getClipboradObjects()) {
-			for (CpsEdge e : cps.getConnectedTo()) {
+		for (AbstractCanvasObject cps : model.getClipboradObjects()) {
+			for (Edge e : cps.getConnectedTo()) {
 				// A and B of e in the copied Elements?
 				if (model.getClipboradObjects().indexOf(e.getA()) != -1
 						&& model.getClipboradObjects().indexOf(e.getB()) != -1) {
-					AbstractCpsObject a = tempList.get(model.getClipboradObjects().indexOf(e.getA()));
-					AbstractCpsObject b = tempList.get(model.getClipboradObjects().indexOf(e.getB()));
+					AbstractCanvasObject a = tempList.get(model.getClipboradObjects().indexOf(e.getA()));
+					AbstractCanvasObject b = tempList.get(model.getClipboradObjects().indexOf(e.getB()));
 					// was this Edge created or not?
-					for (CpsEdge et : tempList.get(model.getClipboradObjects().indexOf(cps)).getConnectedTo()) {
-						for (CpsEdge etA : et.getA().getConnectedTo()) {
+					for (Edge et : tempList.get(model.getClipboradObjects().indexOf(cps)).getConnectedTo()) {
+						for (Edge etA : et.getA().getConnectedTo()) {
 							if (et.getA() == a && et.getB() == b) {
 								newEdge = false;
 							}
 						}
-						for (CpsEdge etB : et.getB().getConnectedTo()) {
+						for (Edge etB : et.getB().getConnectedTo()) {
 							if (et.getA() == a && et.getB() == b) {
 								newEdge = false;
 							}
 						}
 					}
 					if (newEdge) {
-						CpsEdge tempE = new CpsEdge(tempList.get(model.getClipboradObjects().indexOf(e.getA())), // A
+						Edge tempE = new Edge(tempList.get(model.getClipboradObjects().indexOf(e.getA())), // A
 								tempList.get(model.getClipboradObjects().indexOf(e.getB())), /* B */
 								e.getCapacity());
 						addEdgeOnCanvas(tempE);
@@ -282,63 +280,16 @@ public class CanvasController {
 	 */
 	@SuppressWarnings("unchecked")
 	public void cutObjects() {
-		model.setClipboradObjects((ArrayList<AbstractCpsObject>) model.getSelectedCpsObjects().clone());
+		model.setClipboradObjects((ArrayList<AbstractCanvasObject>) model.getSelectedCpsObjects().clone());
 
-		for (AbstractCpsObject cps : model.getClipboradObjects()) {
+		for (AbstractCanvasObject cps : model.getClipboradObjects()) {
 			deleteObjectOnCanvas(cps);
 		}
 
 		model.getSelectedCpsObjects().clear();
 	}
 
-	/**
-	 * In Case if a One or Both Side of the to Removing Edge is a CpsUpperNode
-	 * 
-	 * @param edge
-	 * @param upperNode
-	 */
-	public void handleUpperNodes(CpsEdge edge) {
-		CpsUpperNode upper = null;
-		ArrayList<CpsEdge> toDelete = new ArrayList<>();
-
-		// wenn A ist upperNOde
-		if (edge.getA() instanceof CpsUpperNode) {
-
-			upper = (CpsUpperNode) edge.getA();
-
-			// wenn in OldEdges eine B enhält
-			for (CpsEdge cpsEdge : upper.getOldEdges()) {
-				if (cpsEdge.getA().equals(edge.getB()) || cpsEdge.getB().equals(edge.getB()))
-					toDelete.add(cpsEdge);
-			}
-			// lösche alle Edges mit B
-			upper.getOldEdges().removeAll(toDelete);
-			// lösche hier alle Connections
-			for (CpsEdge cpsEdge : toDelete) {
-				cpsEdge.getA().getConnections().remove(cpsEdge);
-				cpsEdge.getB().getConnections().remove(cpsEdge);
-			}
-			toDelete.clear();
-		}
-		// Hier analog
-		if (edge.getB() instanceof CpsUpperNode) {
-
-			upper = (CpsUpperNode) edge.getB();
-
-			for (CpsEdge cpsEdge : upper.getOldEdges()) {
-				if (cpsEdge.getA().equals(edge.getA()) || cpsEdge.getB().equals(edge.getA()))
-					toDelete.add(cpsEdge);
-			}
-			upper.getOldEdges().removeAll(toDelete);
-			for (CpsEdge cpsEdge : toDelete) {
-				cpsEdge.getA().getConnections().remove(cpsEdge);
-				cpsEdge.getB().getConnections().remove(cpsEdge);
-			}
-			toDelete.clear();
-		}
-
-	}
-
+	
 	/**
 	 * Some cleaning Algorithm which traverses the UpperNode through BFS Can be
 	 * extended with other cleaning stuff No need for coloring since there tree
@@ -346,18 +297,18 @@ public class CanvasController {
 	 * 
 	 * @param node
 	 */
-	public void bfsNodeCleaner(CpsUpperNode node) {
+	public void bfsNodeCleaner(GroupNode node) {
 
-		ArrayDeque<AbstractCpsObject> queue = new ArrayDeque<>();
-		AbstractCpsObject u = node;
+		ArrayDeque<AbstractCanvasObject> queue = new ArrayDeque<>();
+		AbstractCanvasObject u = node;
 
 		queue.add(u);
 		while (!queue.isEmpty()) {
 			u = queue.pop();
 
 			deleteConnections(u);
-			if (u instanceof CpsUpperNode)
-				for (AbstractCpsObject adjacent : ((CpsUpperNode) u).getNodes()) {
+			if (u instanceof GroupNode)
+				for (AbstractCanvasObject adjacent : ((GroupNode) u).getNodes()) {
 					queue.add(adjacent);
 				}
 		}
@@ -369,12 +320,12 @@ public class CanvasController {
 	 * 
 	 * @param obj
 	 */
-	private void deleteConnections(AbstractCpsObject obj) {
+	private void deleteConnections(AbstractCanvasObject obj) {
 
-		ArrayDeque<CpsEdge> queue = new ArrayDeque<>();
-		CpsEdge e = null;
+		ArrayDeque<Edge> queue = new ArrayDeque<>();
+		Edge e = null;
 
-		for (CpsEdge edge : obj.getConnections()) {
+		for (Edge edge : obj.getConnections()) {
 			queue.add(edge);
 		}
 		while (!queue.isEmpty()) {

+ 3 - 3
src/ui/controller/CategoryController.java

@@ -4,7 +4,7 @@ import java.util.ArrayList;
 
 import classes.Category;
 import classes.HolonBattery;
-import classes.AbstractCpsObject;
+import classes.AbstractCanvasObject;
 import classes.HolonElement;
 import classes.HolonObject;
 import classes.HolonSwitch;
@@ -124,7 +124,7 @@ public class CategoryController {
 	 * @param object
 	 *            Object
 	 */
-	public void addObject(Category category, AbstractCpsObject object) {
+	public void addObject(Category category, AbstractCanvasObject object) {
 		int i = 0;
 		boolean updateElementSaves = false;
 		String name = "";
@@ -214,7 +214,7 @@ public class CategoryController {
 	 * @param category Category
 	 * @param cps the Object
 	 */
-	public void removeObject(Category category, AbstractCpsObject cps) {
+	public void removeObject(Category category, AbstractCanvasObject cps) {
 
 		mpC.decIdx(cps.getObjName(), category.getObjIdx());
 		category.getObjIdx().remove(cps.getObjName());

+ 35 - 51
src/ui/controller/ClipboardController.java

@@ -46,11 +46,11 @@ public class ClipboardController {
     /**
      * Copy marked Objects into Clipboard in Json Format
      */
-    public void copy(CpsUpperNode upperNode) {
+    public void copy(GroupNode upperNode) {
 
         JsonObject file = new JsonObject();
-        ArrayDeque<AbstractCpsObject> queue = new ArrayDeque<>();
-        AbstractCpsObject u = null;
+        ArrayDeque<AbstractCanvasObject> queue = new ArrayDeque<>();
+        AbstractCanvasObject u = null;
 
         store.initNumeration();
 
@@ -58,7 +58,7 @@ public class ClipboardController {
         Position pos = uppC.calculatePos(model.getSelectedCpsObjects());
         file.add("CENTER", model.getGson().toJsonTree(pos, Position.class));
 
-        for (AbstractCpsObject abs : model.getSelectedCpsObjects()) {
+        for (AbstractCanvasObject abs : model.getSelectedCpsObjects()) {
             queue.add(abs);
         }
         System.out.println("heiCopy");
@@ -67,7 +67,7 @@ public class ClipboardController {
             u = queue.pop();
 
             String key = "CVSOBJECT" + store.getNumerator(NUMTYPE.OBJECT);
-            file.add(key, model.getGson().toJsonTree(u, AbstractCpsObject.class));
+            file.add(key, model.getGson().toJsonTree(u, AbstractCanvasObject.class));
             edgeToJson(EDGETYPE.CONNECTION, file, u.getId(), u.getConnections());
 
             if (u instanceof HolonObject)
@@ -77,18 +77,14 @@ public class ClipboardController {
                 if (((HolonSwitch) u).getGraphPoints().size() != 0)
                     store.unitgraphToJson(GRAPHTYPE.SWITCH, file, u.getId(), ((HolonSwitch) u).getGraphPoints());
 
-            if (u instanceof CpsUpperNode) {
-                for (AbstractCpsObject adjacent : ((CpsUpperNode) u).getNodes()) {
+            if (u instanceof GroupNode) {
+                for (AbstractCanvasObject adjacent : ((GroupNode) u).getNodes()) {
                     queue.add(adjacent);
                 }
-                edgeToJson(EDGETYPE.NODE, file, u.getId(), ((CpsUpperNode) u).getNodeEdges());
-                edgeToJson(EDGETYPE.OLD, file, u.getId(), ((CpsUpperNode) u).getOldEdges());
             }
         }
         if (upperNode == null)
             edgeToJson(EDGETYPE.LAYER, file, 0, model.getEdgesOnCanvas());
-        else
-            edgeToJson(EDGETYPE.LAYER, file, upperNode.getId(), upperNode.getNodeEdges());
 
         StringSelection selection = new StringSelection(model.getGson().toJson(file));
         clipboard.setContents(selection, selection);
@@ -98,7 +94,7 @@ public class ClipboardController {
     /**
      * Paste the Copied JsonTree into Canvas
      */
-    void paste(CpsUpperNode upperNode, Point p)
+    void paste(GroupNode upperNode, Point p)
             throws UnsupportedFlavorException, IOException, JsonParseException {
 
         if (p == null)
@@ -124,7 +120,7 @@ public class ClipboardController {
         List<String> edges = keys.stream().filter(key -> key.contains("EDGE"))
                 .collect(Collectors.toCollection(ArrayList::new));
 
-        HashMap<Integer, AbstractCpsObject> objDispatch = new HashMap<>();
+        HashMap<Integer, AbstractCanvasObject> objDispatch = new HashMap<>();
         HashMap<Integer, HolonElement> eleDispatch = new HashMap<>();
         model.getSelectedCpsObjects().clear();
 
@@ -145,22 +141,22 @@ public class ClipboardController {
     /**
      * Cuts the marked Objects out of Canvas and saves them into the Clipboard
      */
-    void cut(CpsUpperNode upperNode) {
+    void cut(GroupNode upperNode) {
         copy(upperNode);
-        for (AbstractCpsObject abs : model.getSelectedCpsObjects()) {
+        for (AbstractCanvasObject abs : model.getSelectedCpsObjects()) {
             if (upperNode == null)
                 cvsC.deleteObjectOnCanvas(abs);
             else
                 uppC.deleteObjectInUpperNode(abs, upperNode);
 
-            if (abs instanceof CpsUpperNode)
-                cvsC.bfsNodeCleaner((CpsUpperNode) abs);
+            if (abs instanceof GroupNode)
+                cvsC.bfsNodeCleaner((GroupNode) abs);
         }
 
     }
 
-    private void forwardEdges(List<String> keys, JsonObject json, HashMap<Integer, AbstractCpsObject> objDispatch,
-                              CpsUpperNode upperNode) {
+    private void forwardEdges(List<String> keys, JsonObject json, HashMap<Integer, AbstractCanvasObject> objDispatch,
+                              GroupNode upperNode) {
         List<String> conn = new ArrayList<>();
 
         for (String edge : keys) {
@@ -180,8 +176,8 @@ public class ClipboardController {
 
     }
 
-    private void forwardObjects(List<String> keys, JsonObject json, HashMap<Integer, AbstractCpsObject> objDispatch,
-                                HashMap<Integer, HolonElement> eleDispatch, CpsUpperNode upperNode) {
+    private void forwardObjects(List<String> keys, JsonObject json, HashMap<Integer, AbstractCanvasObject> objDispatch,
+                                HashMap<Integer, HolonElement> eleDispatch, GroupNode upperNode) {
 
         for (String key : keys) {
             if (key.contains("CVSOBJECT"))
@@ -197,9 +193,9 @@ public class ClipboardController {
         }
     }
 
-    private void loadCanvasObject(JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch,
-                                  CpsUpperNode upperNode) {
-        AbstractCpsObject temp = model.getGson().fromJson(jsonElement.getAsJsonObject(), AbstractCpsObject.class);
+    private void loadCanvasObject(JsonElement jsonElement, HashMap<Integer, AbstractCanvasObject> objDispatch,
+                                  GroupNode upperNode) {
+        AbstractCanvasObject temp = model.getGson().fromJson(jsonElement.getAsJsonObject(), AbstractCanvasObject.class);
         load.initObjects(temp);
         objIDMapper(temp);
         updatePosition(temp, upperNode);
@@ -214,7 +210,7 @@ public class ClipboardController {
             model.getSelectedCpsObjects().add(temp);
         } else {
             // else look up the table and put it into the right Uppernode
-            CpsUpperNode temp2 = (CpsUpperNode) objDispatch.get(objIDMap.get(Integer.parseInt(temp.getSav())));
+            GroupNode temp2 = (GroupNode) objDispatch.get(objIDMap.get(Integer.parseInt(temp.getSav())));
             if(temp2!=null)
             	uppC.addObjectInUpperNode(temp, temp2, false);
             else{
@@ -232,7 +228,7 @@ public class ClipboardController {
         objDispatch.put(temp.getId(), temp);
     }
 
-    private void loadCanvasElements(JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch,
+    private void loadCanvasElements(JsonElement jsonElement, HashMap<Integer, AbstractCanvasObject> objDispatch,
                                     HashMap<Integer, HolonElement> eleDispatch) {
         JsonObject object = jsonElement.getAsJsonObject();
 
@@ -250,7 +246,7 @@ public class ClipboardController {
 
     }
 
-    private void loadUnitGraph(GRAPHTYPE type, JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch,
+    private void loadUnitGraph(GRAPHTYPE type, JsonElement jsonElement, HashMap<Integer, AbstractCanvasObject> objDispatch,
                                HashMap<Integer, HolonElement> eleDispatch) {
         JsonObject object = jsonElement.getAsJsonObject();
         List<String> keys = load.getKeys(object);
@@ -297,21 +293,19 @@ public class ClipboardController {
     /**
      * loads an edge from json
      */
-    private void loadEdge(EDGETYPE type, JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch,
-                          CpsUpperNode upperNode) {
+    private void loadEdge(EDGETYPE type, JsonElement jsonElement, HashMap<Integer, AbstractCanvasObject> objDispatch,
+                          GroupNode upperNode) {
         JsonObject object = jsonElement.getAsJsonObject();
-        CpsEdge temp = model.getGson().fromJson(object.get("properties"), CpsEdge.class);
+        Edge temp = model.getGson().fromJson(object.get("properties"), Edge.class);
         load.initCpsEdge(temp);
         // look for A and B inside the Table
         temp.setA(objDispatch.get(objIDMap.get(object.get("A").getAsInt())));
         temp.setB(objDispatch.get(objIDMap.get(object.get("B").getAsInt())));
 
-        int sav;
-
         switch (type) {
             case LAYER:
                 // if in canvas add it into the canvas but delete connection before
-                (upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges()).add(temp);
+                model.getEdgesOnCanvas().add(temp);
                 break;
             case CONNECTION:
                 // if no duplicates in connection store them into the given A and B
@@ -320,16 +314,6 @@ public class ClipboardController {
                 if (!uppC.lookforDuplicates(temp.getA(), temp.getB(), temp.getB().getConnections()))
                     temp.getB().getConnections().add(temp);
                 break;
-            case NODE:
-                // put it into given nodeofnode
-                sav = objIDMap.get(object.get("ID").getAsInt());
-                ((CpsUpperNode) objDispatch.get(sav)).getNodeEdges().add(temp);
-                break;
-            case OLD:
-                // same as above
-                sav = objIDMap.get(object.get("ID").getAsInt());
-                ((CpsUpperNode) objDispatch.get(sav)).getOldEdges().add(temp);
-                break;
             default:
                 break;
         }
@@ -344,12 +328,12 @@ public class ClipboardController {
     /**
      * Modified Method from LoadController. Slightly different
      */
-    private void edgeToJson(EDGETYPE type, JsonObject file, int id, ArrayList<CpsEdge> arr) {
+    private void edgeToJson(EDGETYPE type, JsonObject file, int id, ArrayList<Edge> arr) {
         String k = null;
         boolean b = false;
         JsonObject temp = new JsonObject();
 
-        for (CpsEdge edge : arr) {
+        for (Edge edge : arr) {
             if (model.getClipboradObjects().contains(edge.getA())
                     && model.getClipboradObjects().contains(edge.getB())) {
                 // add properties and only the ids from a and b
@@ -393,7 +377,7 @@ public class ClipboardController {
      */
     void getObjectsInDepth() {
         model.setClipboradObjects(new ArrayList<>());
-        for (AbstractCpsObject obj : model.getSelectedCpsObjects()) {
+        for (AbstractCanvasObject obj : model.getSelectedCpsObjects()) {
             clipboadDepth(obj);
         }
     }
@@ -401,13 +385,13 @@ public class ClipboardController {
     /**
      * Get all Objects inside the Currentobject and add them into ClipboardObjects
      */
-    private void clipboadDepth(AbstractCpsObject obj) {
+    private void clipboadDepth(AbstractCanvasObject obj) {
         //modified backtracking Algorithm no True/False
-        if (!(obj instanceof CpsUpperNode)) {
+        if (!(obj instanceof GroupNode)) {
             model.getClipboradObjects().add(obj);
         } else {
             model.getClipboradObjects().add(obj);
-            for (AbstractCpsObject abs : ((CpsUpperNode) obj).getNodes()) {
+            for (AbstractCanvasObject abs : ((GroupNode) obj).getNodes()) {
                 clipboadDepth(abs);
             }
         }
@@ -417,7 +401,7 @@ public class ClipboardController {
     /**
      * Map the Copied Object ID into a new One
      */
-    private void objIDMapper(AbstractCpsObject temp) {
+    private void objIDMapper(AbstractCanvasObject temp) {
         int id = temp.getId();
         temp.setId(IdCounter.nextId());
         // oldID -> currentID
@@ -435,7 +419,7 @@ public class ClipboardController {
 
     }
 
-    private void updatePosition(AbstractCpsObject temp, CpsUpperNode upperNode) {
+    private void updatePosition(AbstractCanvasObject temp, GroupNode upperNode) {
         int x = temp.getPosition().x - point.x;
         int y = temp.getPosition().y - point.y;
 

+ 38 - 70
src/ui/controller/Control.java

@@ -137,7 +137,7 @@ public class Control {
      * @param id the id of the Object
      * @return the CpsObject
      */
-    public AbstractCpsObject searchByID(int id) {
+    public AbstractCanvasObject searchByID(int id) {
         return multiPurposeController.searchByID(id);
     }
 
@@ -147,11 +147,11 @@ public class Control {
      * @param id the id of the Object
      * @return the CpsObject
      */
-    public AbstractCpsObject searchByIDUpperNode(int id, CpsUpperNode upperNode) {
+    public AbstractCanvasObject searchByIDUpperNode(int id, GroupNode upperNode) {
         return multiPurposeController.searchByIDUpperNode(id, upperNode);
     }
 
-    public AbstractCpsObject searchTracked(int id) {
+    public AbstractCanvasObject searchTracked(int id) {
         return multiPurposeController.searchByID(id);
     }
 
@@ -162,7 +162,7 @@ public class Control {
      * @param object   Name of the Object
      * @return The Object
      */
-    public AbstractCpsObject searchCategoryObject(String category, String object) {
+    public AbstractCanvasObject searchCategoryObject(String category, String object) {
         return multiPurposeController.searchCatObj(multiPurposeController.searchCat(category), object);
     }
 
@@ -279,7 +279,7 @@ public class Control {
      *
      * @param obj Cpsobject
      */
-    public void deleteSelectedObject(AbstractCpsObject obj) {
+    public void deleteSelectedObject(AbstractCanvasObject obj) {
         objectController.deleteSelectedObject(obj);
     }
 
@@ -288,7 +288,7 @@ public class Control {
      *
      * @param obj AbstractCpsobject
      */
-    public void addSelectedObject(AbstractCpsObject obj) {
+    public void addSelectedObject(AbstractCanvasObject obj) {
         objectController.addSelectedObject(obj);
     }
 
@@ -299,10 +299,10 @@ public class Control {
      *
      * @param object the Object
      */
-    public void addObjectCanvas(AbstractCpsObject object) {
+    public void addObjectCanvas(AbstractCanvasObject object) {
         canvasController.addNewObject(object);
         calculateStateAndVisualForTimeStep(model.getCurIteration());
-        if (!(object instanceof CpsNode)) {
+        if (!(object instanceof Node)) {
             try {
                 autoSave();
             } catch (IOException e) {
@@ -317,11 +317,11 @@ public class Control {
      * @param obj  AbstractCpsObject
      * @param save
      */
-    public void delCanvasObject(AbstractCpsObject obj, boolean save) {
+    public void delCanvasObject(AbstractCanvasObject obj, boolean save) {
         canvasController.deleteObjectOnCanvas(obj);
         calculateStateAndVisualForCurrentTimeStep();
-        if (obj instanceof CpsUpperNode)
-            canvasController.bfsNodeCleaner((CpsUpperNode) obj);
+        if (obj instanceof GroupNode)
+            canvasController.bfsNodeCleaner((GroupNode) obj);
         if (save)
             try {
                 autoSave();
@@ -335,7 +335,7 @@ public class Control {
      * @param toBeReplaced the object that will be replaced
      * @param by the object that will replace it
      */
-    public void replaceCanvasObject(AbstractCpsObject toBeReplaced, AbstractCpsObject by) {
+    public void replaceCanvasObject(AbstractCanvasObject toBeReplaced, AbstractCanvasObject by) {
     	canvasController.replaceObjectOnCanvas(toBeReplaced, by);
     	try {
             autoSave();
@@ -350,7 +350,7 @@ public class Control {
      *
      * @param edge the edge
      */
-    public void addEdgeOnCanvas(CpsEdge edge) {
+    public void addEdgeOnCanvas(Edge edge) {
         canvasController.addEdgeOnCanvas(edge);
         try {
             autoSave();
@@ -364,7 +364,7 @@ public class Control {
      *
      * @param edge the edge to remove
      */
-    public void removeEdgesOnCanvas(CpsEdge edge) {
+    public void removeEdgesOnCanvas(Edge edge) {
         canvasController.removeEdgesOnCanvas(edge);
         try {
             autoSave();
@@ -378,7 +378,7 @@ public class Control {
      *
      * @param edge that is selected
      */
-    public void setSelecteEdge(CpsEdge edge) {
+    public void setSelecteEdge(Edge edge) {
         model.setSelectedEdge(edge);
     }
 
@@ -735,15 +735,15 @@ public class Control {
 
     // ========================= MANAGING TRACKED OBJECTS ====================
 
-    public ArrayList<AbstractCpsObject> getTrackingObj() {
+    public ArrayList<AbstractCanvasObject> getTrackingObj() {
         return statsController.getTrackingObj();
     }
 
-    public void setTrackingObj(ArrayList<AbstractCpsObject> objArr) {
+    public void setTrackingObj(ArrayList<AbstractCanvasObject> objArr) {
         statsController.setTrackingObj(objArr);
     }
 
-    public void addTrackingObj(AbstractCpsObject obj) {
+    public void addTrackingObj(AbstractCanvasObject obj) {
         statsController.addTrackingObj(obj);
         try {
             autoSave();
@@ -752,7 +752,7 @@ public class Control {
         }
     }
 
-    public void removeTrackingObj(AbstractCpsObject obj) {
+    public void removeTrackingObj(AbstractCanvasObject obj) {
         statsController.removeTrackingObj(obj);
         try {
             autoSave();
@@ -767,7 +767,7 @@ public class Control {
      * Controlling Nodes of Nodes
      */
 
-    public void addUpperNode(String nodeName, CpsUpperNode upperNode, ArrayList<AbstractCpsObject> toGroup) {
+    public void addUpperNode(String nodeName, GroupNode upperNode, ArrayList<AbstractCanvasObject> toGroup) {
         nodeController.doUpperNode(nodeName, upperNode, toGroup);
         try {
             autoSave();
@@ -776,7 +776,7 @@ public class Control {
         }
     }
 
-    public void delUpperNode(CpsUpperNode node, CpsUpperNode upperNode) {
+    public void delUpperNode(GroupNode node, GroupNode upperNode) {
         nodeController.undoUpperNode(node, upperNode);
         try {
             autoSave();
@@ -785,7 +785,7 @@ public class Control {
         }
     }
 
-    public void addObjUpperNode(AbstractCpsObject object, CpsUpperNode upperNode) {
+    public void addObjUpperNode(AbstractCanvasObject object, GroupNode upperNode) {
     	nodeController.addObjectInUpperNode(object, upperNode, true);
         try {
             autoSave();
@@ -794,10 +794,10 @@ public class Control {
         }
     }
 
-    public void delObjUpperNode(AbstractCpsObject object, CpsUpperNode upperNode) {
+    public void delObjUpperNode(AbstractCanvasObject object, GroupNode upperNode) {
         nodeController.deleteObjectInUpperNode(object, upperNode);
-        if (object instanceof CpsUpperNode)
-            canvasController.bfsNodeCleaner((CpsUpperNode) object);
+        if (object instanceof GroupNode)
+            canvasController.bfsNodeCleaner((GroupNode) object);
         try {
             autoSave();
         } catch (IOException e) {
@@ -812,8 +812,8 @@ public class Control {
      * @param by
      * @param upperNode
      */
-	public void replaceObjUpperNode(AbstractCpsObject toBeReplaced,
-			AbstractCpsObject by, CpsUpperNode upperNode) {
+	public void replaceObjUpperNode(AbstractCanvasObject toBeReplaced,
+			AbstractCanvasObject by, GroupNode upperNode) {
 		nodeController.replaceObjectInUpperNode(toBeReplaced, by, upperNode);
 		try {
             autoSave();
@@ -824,48 +824,16 @@ public class Control {
         }
 	}
 
-    public void addEdgeUpperNode(CpsEdge edge, CpsUpperNode upperNode) {
-        nodeController.addEdge(edge, upperNode);
-        try {
-            autoSave();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-
-    public void delEdgeUpperNode(CpsEdge edge, CpsUpperNode upperNode) {
-        nodeController.deleteEdge(edge, upperNode);
-        try {
-            autoSave();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
 
-    public void connectNodes(CpsEdge edge, CpsUpperNode upperNode) {
-        nodeController.connectNodes(edge, upperNode);
-        try {
-            autoSave();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
 
-    public void disconnectNodes(CpsEdge edge, CpsUpperNode upperNode) {
-        nodeController.disconnectNodes(edge, upperNode);
-        try {
-            autoSave();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
+  
 
     /**
      * Get the number of HolonObjects in the given List
      *
      * @param list
      */
-    public int getNumberHolonObjects(ArrayList<AbstractCpsObject> list) {
+    public int getNumberHolonObjects(ArrayList<AbstractCanvasObject> list) {
         return objectController.getNumberHolonObjects(list);
     }
     
@@ -874,7 +842,7 @@ public class Control {
      *
      * @param list
      */
-    public ArrayList<HolonObject> getAllHolonObjects(ArrayList<AbstractCpsObject> list) {
+    public ArrayList<HolonObject> getAllHolonObjects(ArrayList<AbstractCanvasObject> list) {
         return objectController.getAllHolonObjects(list);
     }
 
@@ -909,11 +877,11 @@ public class Control {
     /**
      * Copy all Selected Objects.
      */
-    public void copy(CpsUpperNode upperNode) {
+    public void copy(GroupNode upperNode) {
         clipboardController.copy(upperNode);
     }
 
-    public void paste(CpsUpperNode upperNode, Point point)
+    public void paste(GroupNode upperNode, Point point)
             throws JsonParseException, UnsupportedFlavorException, IOException {
         clipboardController.paste(upperNode, point);
         try {
@@ -923,7 +891,7 @@ public class Control {
         }
     }
 
-    public void cut(CpsUpperNode upperNode) {
+    public void cut(GroupNode upperNode) {
         clipboardController.cut(upperNode);
         try {
             autoSave();
@@ -946,23 +914,23 @@ public class Control {
         clipboardController.getObjectsInDepth();
     }
 
-    public float getTotalProduction(ArrayList<AbstractCpsObject> arrayList) {
+    public float getTotalProduction(ArrayList<AbstractCanvasObject> arrayList) {
         return holonCanvasController.getTotalProduction(arrayList);
     }
 
-    public float getTotalConsumption(ArrayList<AbstractCpsObject> arrayList) {
+    public float getTotalConsumption(ArrayList<AbstractCanvasObject> arrayList) {
         return holonCanvasController.getTotalConsumption(arrayList);
     }
 
-    public int getTotalElements(ArrayList<AbstractCpsObject> arrayList) {
+    public int getTotalElements(ArrayList<AbstractCanvasObject> arrayList) {
         return holonCanvasController.getTotalElements(arrayList);
     }
 
-    public int getTotalProducers(ArrayList<AbstractCpsObject> arrayList) {
+    public int getTotalProducers(ArrayList<AbstractCanvasObject> arrayList) {
         return holonCanvasController.getTotalProducers(arrayList);
     }
 
-    public int getActiveElements(ArrayList<AbstractCpsObject> arrayList) {
+    public int getActiveElements(ArrayList<AbstractCanvasObject> arrayList) {
         return holonCanvasController.getActiveElements(arrayList);
     }
 

+ 5 - 5
src/ui/controller/FlexManager.java

@@ -5,8 +5,8 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import classes.AbstractCpsObject;
-import classes.CpsUpperNode;
+import classes.AbstractCanvasObject;
+import classes.GroupNode;
 import classes.Flexibility;
 import classes.HolonElement;
 import classes.HolonObject;
@@ -66,11 +66,11 @@ public class FlexManager {
 		return createListOfHolonObjects(model.getObjectsOnCanvas()).stream().flatMap(hObject -> hObject.getElements().stream()).flatMap(hElement -> hElement.flexList.stream()).collect(Collectors.toList());
 	}
 
-	private List<HolonObject> createListOfHolonObjects(List<AbstractCpsObject> objectsOnCanvas) {
+	private List<HolonObject> createListOfHolonObjects(List<AbstractCanvasObject> objectsOnCanvas) {
 		List<HolonObject> list = new ArrayList<HolonObject>();
-		for(AbstractCpsObject aCps :  objectsOnCanvas) {
+		for(AbstractCanvasObject aCps :  objectsOnCanvas) {
 			if(aCps instanceof HolonObject) list.add((HolonObject) aCps);
-			else if(aCps instanceof CpsUpperNode)list.addAll(createListOfHolonObjects(((CpsUpperNode)aCps).getNodes()));
+			else if(aCps instanceof GroupNode)list.addAll(createListOfHolonObjects(((GroupNode)aCps).getNodes()));
 		}
 		return list;
 	}

+ 20 - 20
src/ui/controller/HolonCanvasController.java

@@ -80,27 +80,27 @@ public class HolonCanvasController {
 		}
 	}
 
-	public int getActiveElements(ArrayList<AbstractCpsObject> objects) {
+	public int getActiveElements(ArrayList<AbstractCanvasObject> objects) {
 		int val = 0;
-		for (AbstractCpsObject obj : objects) {
+		for (AbstractCanvasObject obj : objects) {
 			if (obj instanceof HolonObject) {
 				for (HolonElement ele : ((HolonObject) obj).getElements()) {
                     if (ele.isActive()) {
                         val += 1;
 					}
 				}
-			} else if (obj instanceof CpsUpperNode) {
-				val += getTotalProduction(((CpsUpperNode) obj).getNodes());
+			} else if (obj instanceof GroupNode) {
+				val += getTotalProduction(((GroupNode) obj).getNodes());
 			}
 		}
 		return val;
 	}
 
-	public int getTotalProducers(ArrayList<AbstractCpsObject> objects) {
+	public int getTotalProducers(ArrayList<AbstractCanvasObject> objects) {
 		float val = 0;
 		int prod = 0;
 		int tStep = model.getCurIteration();
-		for (AbstractCpsObject obj : objects) {
+		for (AbstractCanvasObject obj : objects) {
 			if (obj instanceof HolonObject) {
 				for (HolonElement ele : ((HolonObject) obj).getElements()) {
                     if (ele.getEnergyAtTimeStep(tStep) > 0 && ele.isActive()) {
@@ -109,54 +109,54 @@ public class HolonCanvasController {
                 }
 				if (val > 0)
 					prod += 1;
-			} else if (obj instanceof CpsUpperNode) {
-				val += getTotalProduction(((CpsUpperNode) obj).getNodes());
+			} else if (obj instanceof GroupNode) {
+				val += getTotalProduction(((GroupNode) obj).getNodes());
 			}
 		}
 		return prod;
 	}
 
-	public int getTotalElements(ArrayList<AbstractCpsObject> objects) {
+	public int getTotalElements(ArrayList<AbstractCanvasObject> objects) {
 		int val = 0;
-		for (AbstractCpsObject obj : objects) {
+		for (AbstractCanvasObject obj : objects) {
 			if (obj instanceof HolonObject) {
 				val += ((HolonObject) obj).getElements().size();
-			} else if (obj instanceof CpsUpperNode) {
-				val += getTotalConsumption(((CpsUpperNode) obj).getNodes());
+			} else if (obj instanceof GroupNode) {
+				val += getTotalConsumption(((GroupNode) obj).getNodes());
 			}
 		}
 		return val;
 	}
 
-	public float getTotalConsumption(ArrayList<AbstractCpsObject> objects) {
+	public float getTotalConsumption(ArrayList<AbstractCanvasObject> objects) {
 		float val = 0;
 		int tStep = model.getCurIteration();
-		for (AbstractCpsObject obj : objects) {
+		for (AbstractCanvasObject obj : objects) {
 			if (obj instanceof HolonObject) {
 				for (HolonElement ele : ((HolonObject) obj).getElements()) {
                     if (ele.getEnergyAtTimeStep(tStep) < 0 && ele.isActive()) {
                         val += ele.getEnergyAtTimeStep(tStep) * ele.getAmount();
                     }
                 }
-			} else if (obj instanceof CpsUpperNode) {
-				val += getTotalConsumption(((CpsUpperNode) obj).getNodes());
+			} else if (obj instanceof GroupNode) {
+				val += getTotalConsumption(((GroupNode) obj).getNodes());
 			}
 		}
 		return val;
 	}
 
-	public float getTotalProduction(ArrayList<AbstractCpsObject> objects) {
+	public float getTotalProduction(ArrayList<AbstractCanvasObject> objects) {
 		float val = 0;
 		int tStep = model.getCurIteration();
-		for (AbstractCpsObject obj : objects) {
+		for (AbstractCanvasObject obj : objects) {
 			if (obj instanceof HolonObject) {
 				for (HolonElement ele : ((HolonObject) obj).getElements()) {
                     if (ele.getEnergyAtTimeStep(tStep) > 0 && ele.isActive()) {
                         val += ele.getEnergyAtTimeStep(tStep) * ele.getAmount();
                     }
                 }
-			} else if (obj instanceof CpsUpperNode) {
-				val += getTotalProduction(((CpsUpperNode) obj).getNodes());
+			} else if (obj instanceof GroupNode) {
+				val += getTotalProduction(((GroupNode) obj).getNodes());
 			}
 		}
 		return val;

+ 20 - 32
src/ui/controller/LoadController.java

@@ -102,7 +102,7 @@ public class LoadController {
         List<String> edges = keys.stream().filter(key -> key.contains("EDGE"))
                 .collect(Collectors.toCollection(ArrayList::new));
 
-        HashMap<Integer, AbstractCpsObject> objDispatch = new HashMap<>();
+        HashMap<Integer, AbstractCanvasObject> objDispatch = new HashMap<>();
         HashMap<Integer, HolonElement> eleDispatch = new HashMap<>();
 
         initialize(json);
@@ -137,7 +137,7 @@ public class LoadController {
     /**
      * distribute the Edges
      */
-    private void forwardEdges(List<String> edges, JsonObject json, HashMap<Integer, AbstractCpsObject> objDispatch) {
+    private void forwardEdges(List<String> edges, JsonObject json, HashMap<Integer, AbstractCanvasObject> objDispatch) {
 
         List<String> conn = new ArrayList<>();
 
@@ -161,7 +161,7 @@ public class LoadController {
     /**
      * Distribute the given keys for right processing
      */
-    private void forwardObjects(List<String> keys, JsonObject json, HashMap<Integer, AbstractCpsObject> objDispatch,
+    private void forwardObjects(List<String> keys, JsonObject json, HashMap<Integer, AbstractCanvasObject> objDispatch,
                                 HashMap<Integer, HolonElement> eleDispatch) {
         for (String key : keys) {
             if (key.contains("CATEGORY"))
@@ -238,7 +238,7 @@ public class LoadController {
      * Load a given Object in Category by Deserialization
      */
     private void loadCategoryObject(JsonElement jsonElement) {
-        AbstractCpsObject temp = model.getGson().fromJson(jsonElement.getAsJsonObject(), AbstractCpsObject.class);
+        AbstractCanvasObject temp = model.getGson().fromJson(jsonElement.getAsJsonObject(), AbstractCanvasObject.class);
         temp.setImage(checkOS(temp.getImage()));
         initObjects(temp);
         if (mpC.searchCatObj(mpC.searchCat(temp.getSav()), temp.getObjName()) != null)
@@ -262,13 +262,13 @@ public class LoadController {
     /**
      * Load a given Object in Canvas by Deserialization
      */
-    private void loadCanvasObject(JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch) {
-        AbstractCpsObject temp = model.getGson().fromJson(jsonElement.getAsJsonObject(), AbstractCpsObject.class);
+    private void loadCanvasObject(JsonElement jsonElement, HashMap<Integer, AbstractCanvasObject> objDispatch) {
+        AbstractCanvasObject temp = model.getGson().fromJson(jsonElement.getAsJsonObject(), AbstractCanvasObject.class);
         initObjects(temp);
         temp.setImage(checkOS(temp.getImage()));
-        if (temp instanceof CpsUpperNode) {
-            model.getHashcodeMap().put(jsonElement.getAsJsonObject().get("hash").getAsInt(), (CpsUpperNode) temp);
-            ((CpsUpperNode) temp).setLeftBorder(jsonElement.getAsJsonObject().get("properties").getAsJsonObject().get("leftBorder").getAsInt());
+        if (temp instanceof GroupNode) {
+            model.getHashcodeMap().put(jsonElement.getAsJsonObject().get("hash").getAsInt(), (GroupNode) temp);
+            ((GroupNode) temp).setLeftBorder(jsonElement.getAsJsonObject().get("properties").getAsJsonObject().get("leftBorder").getAsInt());
         }
         // if its stored before on the canvas just put it there
         if (temp.getSav().equals("CVS")) {
@@ -276,7 +276,7 @@ public class LoadController {
 
         } else {
             // else look up the table and put it into the right Uppernode
-            CpsUpperNode temp2 = (CpsUpperNode) objDispatch.get(Integer.parseInt(temp.getSav()));
+            GroupNode temp2 = (GroupNode) objDispatch.get(Integer.parseInt(temp.getSav()));
             if(temp2 != null)
             	uppC.addObjectInUpperNode(temp, temp2, false);
             else{
@@ -295,7 +295,7 @@ public class LoadController {
     /**
      * Load a given Element in Canvas by Deserialization
      */
-    private void loadCanvasElements(JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch,
+    private void loadCanvasElements(JsonElement jsonElement, HashMap<Integer, AbstractCanvasObject> objDispatch,
                                     HashMap<Integer, HolonElement> eleDispatch) {
 
         JsonObject object = jsonElement.getAsJsonObject();
@@ -324,9 +324,9 @@ public class LoadController {
     /**
      * Load a given Edge by Deserialization
      */
-    private void loadEdge(EDGETYPE type, JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch) {
+    private void loadEdge(EDGETYPE type, JsonElement jsonElement, HashMap<Integer, AbstractCanvasObject> objDispatch) {
         JsonObject object = jsonElement.getAsJsonObject();
-        CpsEdge temp = model.getGson().fromJson(object.get("properties"), CpsEdge.class);
+        Edge temp = model.getGson().fromJson(object.get("properties"), Edge.class);
         initCpsEdge(temp);
         // look for A and B inside the Table
         temp.setA(objDispatch.get(object.get("A").getAsInt()));
@@ -351,16 +351,6 @@ public class LoadController {
                 if (!uppC.lookforDuplicates(temp.getA(), temp.getB(), temp.getB().getConnections()))
                     temp.getB().getConnections().add(temp);
                 break;
-            case NODE:
-                // put it into given nodeofnode
-                sav = object.get("ID").getAsInt();
-                ((CpsUpperNode) objDispatch.get(sav)).getNodeEdges().add(temp);
-                break;
-            case OLD:
-                // same as above
-                sav = object.get("ID").getAsInt();
-                ((CpsUpperNode) objDispatch.get(sav)).getOldEdges().add(temp);
-                break;
             default:
                 break;
         }
@@ -380,7 +370,7 @@ public class LoadController {
     /**
      * Load a Unitgraph by Deserialization
      */
-    private void loadUnitGraph(GRAPHTYPE type, JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch,
+    private void loadUnitGraph(GRAPHTYPE type, JsonElement jsonElement, HashMap<Integer, AbstractCanvasObject> objDispatch,
                                HashMap<Integer, HolonElement> eleDispatch) {
     	//TODO Make UnitGraph unterscheidung hinf�llig!!!!
         JsonObject object = jsonElement.getAsJsonObject();
@@ -429,7 +419,7 @@ public class LoadController {
         model.getStatisticData().add(object);
     }
 
-    private void loadTracked(JsonElement jsonElement, HashMap<Integer, AbstractCpsObject> objDispatch) {
+    private void loadTracked(JsonElement jsonElement, HashMap<Integer, AbstractCanvasObject> objDispatch) {
         JsonObject object = jsonElement.getAsJsonObject();
         List<String> keys = getKeys(object);
 
@@ -502,7 +492,7 @@ public class LoadController {
     /**
      * Init new Arrays which haven't been serialized along the object
      */
-    void initObjects(AbstractCpsObject obj) {
+    void initObjects(AbstractCanvasObject obj) {
 
         obj.setConnections(new ArrayList<>());
         obj.setTags(new ArrayList<>());
@@ -522,11 +512,9 @@ public class LoadController {
             ((HolonSwitch) obj).sampleGraph();
         }
 
-        if (obj instanceof CpsUpperNode) {
-            ((CpsUpperNode) obj).setNodes(new ArrayList<>());
-            ((CpsUpperNode) obj).setNodeEdges(new ArrayList<>());
-            ((CpsUpperNode) obj).setOldEdges(new ArrayList<>());
-            ((CpsUpperNode) obj).setNodesIdx(new HashMap<>());
+        if (obj instanceof GroupNode) {
+            ((GroupNode) obj).setNodes(new ArrayList<>());
+            ((GroupNode) obj).setNodesIdx(new HashMap<>());
         }
     }
 
@@ -546,7 +534,7 @@ public class LoadController {
      *
      * @param edge the edge to be initialized
      */
-    void initCpsEdge(CpsEdge edge) {
+    void initCpsEdge(Edge edge) {
         edge.setTags(new ArrayList<>());
         edge.setPseudoTag(new ArrayList<>());
         edge.setA(null);

+ 12 - 12
src/ui/controller/MultiPurposeController.java

@@ -4,9 +4,9 @@ import java.util.HashMap;
 import java.util.Map.Entry;
 
 import classes.Category;
-import classes.CpsEdge;
-import classes.CpsUpperNode;
-import classes.AbstractCpsObject;
+import classes.Edge;
+import classes.GroupNode;
+import classes.AbstractCanvasObject;
 import classes.HolonElement;
 import classes.HolonObject;
 import ui.model.Model;
@@ -57,7 +57,7 @@ public class MultiPurposeController {
 	 *            Name of the Object
 	 * @return The Object
 	 */
-	public AbstractCpsObject searchCatObj(Category category, String object) {
+	public AbstractCanvasObject searchCatObj(Category category, String object) {
 
 		Integer idx;
 
@@ -74,7 +74,7 @@ public class MultiPurposeController {
 	 *            the ID of the Object
 	 * @return the CpsObject
 	 */
-	public AbstractCpsObject searchByID(int id) {
+	public AbstractCanvasObject searchByID(int id) {
 
 		Integer idx;
 
@@ -90,7 +90,7 @@ public class MultiPurposeController {
 	 * @param id
 	 * @return
 	 */
-	public AbstractCpsObject searchByIDUpperNode(int id, CpsUpperNode upperNode) {
+	public AbstractCanvasObject searchByIDUpperNode(int id, GroupNode upperNode) {
 	
 		Integer idx;
 	
@@ -118,9 +118,9 @@ public class MultiPurposeController {
 	 * @param id
 	 * @return
 	 */
-	public AbstractCpsObject searchTracked(int id) {
+	public AbstractCanvasObject searchTracked(int id) {
 
-		for (AbstractCpsObject cps : model.getTrackingObj()) {
+		for (AbstractCanvasObject cps : model.getTrackingObj()) {
 			if (cps.getId() == id)
 				return cps;
 		}
@@ -136,12 +136,12 @@ public class MultiPurposeController {
 	 *            ID of Object b
 	 * @return The Edge
 	 */
-	public CpsEdge searchEdge(int a, int b) {
+	public Edge searchEdge(int a, int b) {
 
-		AbstractCpsObject objA = searchByID(a);
-		AbstractCpsObject objB = searchByID(b);
+		AbstractCanvasObject objA = searchByID(a);
+		AbstractCanvasObject objB = searchByID(b);
 
-		for (CpsEdge edge : model.getEdgesOnCanvas()) {
+		for (Edge edge : model.getEdgesOnCanvas()) {
 			// if (edge.getA().getObjName().equals(A.getObjName()) &&
 			// (edge.getB().getObjName().equals(B.getObjName()))
 			// || edge.getB().getObjName().equals(A.getObjName())

+ 56 - 313
src/ui/controller/NodeController.java

@@ -1,9 +1,9 @@
 package ui.controller;
 
-import classes.AbstractCpsObject;
-import classes.CpsEdge;
-import classes.CpsNode;
-import classes.CpsUpperNode;
+import classes.AbstractCanvasObject;
+import classes.Edge;
+import classes.Node;
+import classes.GroupNode;
 import classes.Position;
 import classes.IntermediateCalculationCable;
 import ui.model.Model;
@@ -11,6 +11,7 @@ import ui.model.Model;
 import java.awt.*;
 import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.LinkedList;
 
 
 class NodeController {
@@ -29,12 +30,11 @@ class NodeController {
 	/**
 	 * Add a CpsUpperNode into Canvas
 	 */
-    void doUpperNode(String nodeName, CpsUpperNode upperNode, ArrayList<AbstractCpsObject> toGroup) {
-		CpsUpperNode node = new CpsUpperNode(nodeName);
+    void doUpperNode(String nodeName, GroupNode upperNode, ArrayList<AbstractCanvasObject> toGroup) {
+		GroupNode node = new GroupNode(nodeName);
 		node.setPosition(calculatePos(toGroup));
 		makeAdjacent(node, upperNode, toGroup);
 		makeNodeOfNodes(node, upperNode, toGroup);
-		backupOldEdges(node, upperNode);
 		if (upperNode == null)
 			cvs.addNewObject(node);
 		else
@@ -45,15 +45,17 @@ class NodeController {
 	/**
 	 * Delete a CpsUpperNode from the Canvas
 	 */
-    void undoUpperNode(CpsUpperNode node, CpsUpperNode upperNode) {
+    void undoUpperNode(GroupNode node, GroupNode upperNode) {
 
+    	if(node.getNodes().size() == 0) {
+    		cvs.deleteObjectOnCanvas(node);
+    		return;
+    	}
 		Position old = calculatePos(node.getNodes());
 		Position p = node.getPosition();
 		point = new Point(old.x - p.x, old.y - p.y);
 
-		restoreOldEdges(node, upperNode);
 		unmakeNodesOfNodes(node, upperNode);
-		unmakeAdjacent(node, upperNode);
 		if (upperNode == null)
 			cvs.deleteObjectOnCanvas(node);
 		else
@@ -63,32 +65,18 @@ class NodeController {
 	/**
 	 * Put selected Nodes inside the Upper Node
 	 */
-	private void makeNodeOfNodes(CpsUpperNode node, CpsUpperNode upperNode, ArrayList<AbstractCpsObject> toGroup) {
+	private void makeNodeOfNodes(GroupNode node, GroupNode upperNode, ArrayList<AbstractCanvasObject> toGroup) {
 
-		ArrayList<AbstractCpsObject> nodes = node.getNodes();
-		ArrayList<CpsEdge> toDelete = new ArrayList<>();
+		ArrayList<AbstractCanvasObject> nodes = node.getNodes();
+	
 
 		// Put all selected Nodes into the Upper Node
-        for (AbstractCpsObject obj : toGroup) {
+        for (AbstractCanvasObject obj : toGroup) {
             // füge Neue Objecte in Neuen Node hinzu
 			addObjectInUpperNode(obj, node, false);
 		}
 
-		// Füge die Edges die Alle Objekte vorher verbunden hat in neuen Node
-        for (CpsEdge edge : (upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges())) {
-
-			// kopiere edge in UpperNode
-			if (nodes.contains(edge.getA()) && nodes.contains(edge.getB())) {
-				toDelete.add(edge);
-				addEdge(edge, node);
-			}
-
-		}
-		// Lösche dann die Edges aus der nächst höheren schicht
-		(upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges()).removeAll(toDelete);
-		
-		
-		for (AbstractCpsObject abs : toGroup) {
+		for (AbstractCanvasObject abs : toGroup) {
 			if (upperNode == null)
 				removeForNodeOfNode(abs, null);
 			else
@@ -101,17 +89,17 @@ class NodeController {
 	 * Transfer all relevant data from Node into the next higher layer of Node
 	 * (upperNode)
 	 */
-	private void unmakeNodesOfNodes(CpsUpperNode node, CpsUpperNode upperNode) {
+	private void unmakeNodesOfNodes(GroupNode node, GroupNode upperNode) {
 		// add all nodes into upperNode
 
-		for (CpsEdge edge : node.getConnections()) {
+		for (Edge edge : node.getConnections()) {
 			if (edge.getA().equals(node))
 				edge.getB().getConnections().remove(edge);
 			if (edge.getB().equals(node))
 				edge.getA().getConnections().remove(edge);
 		}
 
-		for (AbstractCpsObject obj : node.getNodes()) {
+		for (AbstractCanvasObject obj : node.getNodes()) {
 			updatePosition(obj, upperNode);
 			if (upperNode == null)
 				obj.setSav("CVS");
@@ -125,165 +113,26 @@ class NodeController {
 				node.getNodesIdx());
 		// add all indices of nodes into upperNode
 		(upperNode == null ? model.getCvsObjIdx() : upperNode.getNodesIdx()).putAll(node.getNodesIdx());
-		// add all Edges of node into upperNode
-		(upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges()).addAll(node.getNodeEdges());
+
 	}
 
 	/**
 	 * Look for adjacent Nodes connected with the new CpsUpperNode and make
 	 * Connections
 	 */
-	private void makeAdjacent(CpsUpperNode node, CpsUpperNode upperNode, ArrayList<AbstractCpsObject> toGroup) {
+	private void makeAdjacent(GroupNode node, GroupNode upperNode, ArrayList<AbstractCanvasObject> toGroup) {
 
-		ArrayList<AbstractCpsObject> adj = new ArrayList<>();
+		ArrayList<AbstractCanvasObject> adj = new ArrayList<>();
 		ArrayList<Float> maxCapacity = new ArrayList<>();
 
-		ArrayList<CpsEdge> oldEdges = node.getOldEdges();
-		ArrayList<CpsEdge> toDelete = new ArrayList<>();
-
-		// für alle Edges auf dem Canvas
-		for (Iterator<CpsEdge> it = (upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges())
-				.iterator(); it.hasNext();) {
-
-			CpsEdge edge = it.next();
-
-			// wenn ausgewählte Objekte in edge und andere auserhalb
-			if (toGroup.contains(edge.getA()) && !toGroup.contains(edge.getB())) {
-				// und wenn in der adj noch nicht vorhanden und füg
-				if (!adj.contains(edge.getB())) {
-					adj.add(edge.getB());
-					maxCapacity.add(edge.getCapacity());
-				}
-				// wenn vorhanden teste maxCapacity
-				else if (maxCapacity.get(adj.indexOf(edge.getB())) < edge.getCapacity()) {
-					maxCapacity.set(adj.indexOf(edge.getB()), edge.getCapacity());
-				}
-				// speichere alte edge
-				oldEdges.add(edge);
-				toDelete.add(edge);
-
-			}
-
-			// Analog
-			else if (!toGroup.contains(edge.getA()) && toGroup.contains(edge.getB())) {
-				if (!adj.contains(edge.getA())) {
-					adj.add(edge.getA());
-					maxCapacity.add(edge.getCapacity());
-				} else if (maxCapacity.get(adj.indexOf(edge.getA())) < edge.getCapacity()) {
-					maxCapacity.set(adj.indexOf(edge.getA()), edge.getCapacity());
-
-				}
-				oldEdges.add(edge);
-				toDelete.add(edge);
-			}
-		}
-
-		(upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges()).removeAll(toDelete);
 		
 	}
 
-	/**
-	 * Restore the Old Connections from the adjacent Object
-	 */
-	private void unmakeAdjacent(CpsUpperNode node, CpsUpperNode upperNode) {
-		ArrayList<CpsEdge> toDelete = new ArrayList<>();
-		ArrayList<CpsEdge> lostEdges = new ArrayList<>();
-		ArrayList<CpsEdge> foundEdges = (upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges());
-		ArrayList<AbstractCpsObject> lostChildren = new ArrayList<>();
-		ArrayList<AbstractCpsObject> foundChildren = (upperNode == null ? model.getObjectsOnCanvas()
-				: upperNode.getNodes());
-
-		// für jede Edge aus upperNode die Node enthält tu sie in toDelete
-        for (CpsEdge edge : foundEdges) {
-            if (edge.getA().equals(node) || edge.getB().equals(node))
-				toDelete.add(edge);
-
-		}
-		// mark all object that arent in the restored oldEdges
-		for (CpsEdge edge : node.getOldEdges()) {
-			if (node.getNodes().contains(edge.getA()) && !foundChildren.contains(edge.getB())
-					&& !lostEdges.contains(edge)) {
-				lostChildren.add(edge.getA());
-				lostEdges.add(edge);
-			}
-
-			else if (node.getNodes().contains(edge.getB()) && !foundChildren.contains(edge.getA())
-					&& !lostEdges.contains(edge)) {
-				lostChildren.add(edge.getB());
-				lostEdges.add(edge);
-			}
-		}
-		node.getOldEdges().removeAll(lostEdges);
-
-		// für alle Edges für die nix passendes gefunden ist
-		for (CpsEdge edge : lostEdges) {
-			AbstractCpsObject toSearch = null;
-			AbstractCpsObject lost = null;
-			boolean foundCps = false;
-
-			// bestimmung welcher verloren ist und wen man suchen muss
-			if (lostChildren.contains(edge.getA())) {
-				toSearch = edge.getB();
-				lost = edge.getA();
-			} else if (lostChildren.contains(edge.getB())) {
-				toSearch = edge.getA();
-				lost = edge.getB();
-			}
-			// wenn der zu suchende ein CpsUpperNode war
-			if (toSearch instanceof CpsUpperNode) {
-
-				System.out.println("UpperNode!");
-				// guck einfach in den Connections des Verlorenen nach Edges die
-				// auf der Canvas sind.
-				for (CpsEdge e : lost.getConnections()) {
-					if (foundChildren.contains(e.getA()) && foundChildren.contains(e.getB())
-							&& !node.getOldEdges().contains(e) && !foundEdges.contains(e)) {
-						node.getOldEdges().add(e);
-						foundCps = true;
-					}
-
-				}
-
-			}
-			// wenn das verlorene Object nicht gefunden
-			if (!foundCps)
-				// für alle auf der Ebene liegende Objekte
-				outerLoop: for (AbstractCpsObject cps : foundChildren) {
-				if (!cps.equals(node) && !lostChildren.contains(cps))
-					// such per Backtracking Algorithmus ob der enthalten ist
-					if (backtrackLostChild(cps, toSearch, lost)) {
-					// wenns stimmt dann überspringe den aktuellen Loop
-					for (CpsEdge f : node.getOldEdges())
-					if ((f.getA().equals(cps) && f.getB().equals(toSearch)) || (f.getB().equals(cps) && f.getA().equals(toSearch)))
-					continue outerLoop;
-					// guck nach duplikaten in den Old Edges
-					if (!lookforDuplicates(cps, lost, node.getOldEdges())) {
-					// wenn es keine gibt erzeuge eine neue Oldedge
-					CpsEdge temp = new CpsEdge(cps, lost, edge.getCapacity());
-					node.getOldEdges().add(temp);
-					}
-					// falls das Objekt ein CpsUpperNode gewesen ist verschiebe
-					// bitte die OldEdge dahin
-					if (cps instanceof CpsUpperNode) {
-					((CpsUpperNode) cps).getOldEdges().add(edge);
-					}
-
-					}
-				}
-
-		}
-
-		// lösch alle Edges die in toDelete sind und wiederherstell alte Edges
-		(upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges()).removeAll(toDelete);
-		(upperNode == null ? model.getEdgesOnCanvas() : upperNode.getNodeEdges()).addAll(node.getOldEdges());
-
-	}
-
 	/**
 	 * Just checking if an Egde already exists
 	 */
-    boolean lookforDuplicates(AbstractCpsObject a, AbstractCpsObject b, ArrayList<CpsEdge> list) {
-        for (CpsEdge cpsEdge : list) {
+    boolean lookforDuplicates(AbstractCanvasObject a, AbstractCanvasObject b, ArrayList<Edge> list) {
+        for (Edge cpsEdge : list) {
 			if ((a.equals(cpsEdge.getA()) && b.equals(cpsEdge.getB()))
 					|| (b.equals(cpsEdge.getA()) && a.equals(cpsEdge.getB())))
 				return true;
@@ -291,95 +140,17 @@ class NodeController {
 		return false;
 	}
 
-	/**
-	 * Backups Old Edges into next lower layer in Current UpperNode anymore
-	 */
-	private void backupOldEdges(CpsUpperNode node, CpsUpperNode upperNode) {
-
-		ArrayList<CpsEdge> backup = new ArrayList<>();
-		ArrayList<AbstractCpsObject> adj = new ArrayList<>();
-		ArrayList<Float> maxCapacity = new ArrayList<>();
-
-		// wenn upperNode in UpperNode erzeugt wird
-		if (upperNode != null) {
-			// für alle oldEdges die die zu gruppierenden nodes enthält werden
-			// in die neuen upperNOde verschoben
-			for (CpsEdge edge : upperNode.getOldEdges()) {
-				if (!upperNode.getNodes().contains(edge.getA()) && !upperNode.getNodes().contains(edge.getB()))
-					backup.add(edge);
-			}
-			// hier wird verschoben
-			node.getOldEdges().addAll(backup);
-
-			// neue adjazent muss hergestellt werden in den alten oldEdges
-//			for (CpsEdge edge : upperNode.getOldEdges()) {
-//
-//				if (node.getNodes().contains(edge.getA()))
-//					if (!adj.contains(edge.getB())) {
-//						adj.add(edge.getB());
-//						maxCapacity.add(edge.getCapacity());
-//					} else if (maxCapacity.get(adj.indexOf(edge.getB())) < edge.getCapacity()) {
-//						maxCapacity.set(adj.indexOf(edge.getB()), edge.getCapacity());
-//
-//					}
-//				if (node.getNodes().contains(edge.getB()))
-//					if (!adj.contains(edge.getA())) {
-//						adj.add(edge.getA());
-//						maxCapacity.add(edge.getCapacity());
-//					} else if (maxCapacity.get(adj.indexOf(edge.getA())) < edge.getCapacity()) {
-//						maxCapacity.set(adj.indexOf(edge.getA()), edge.getCapacity());
-//
-//					}
-//			}
-			// alle übertragenen Edges werden gelöscht
-			upperNode.getOldEdges().removeAll(backup);
-			// neue edges werden erzeugt
-			for (AbstractCpsObject cps : adj)
-				upperNode.getOldEdges().add(new CpsEdge(cps, node, maxCapacity.get(adj.indexOf(cps))));
-
-		}
-	}
-
-	/**
-	 * Restore Old Edges into next higher layer of UpperNode
-	 */
-	private void restoreOldEdges(CpsUpperNode node, CpsUpperNode upperNode) {
-
-		ArrayList<CpsEdge> toDelete = new ArrayList<>();
-
-		if (upperNode != null) {
-			for (CpsEdge edge : node.getOldEdges()) {
-				// wenn upperNode weder A oder B von von den OldEdges enthält
-				if (!upperNode.getNodes().contains(edge.getA()) && !upperNode.getNodes().contains(edge.getB()))
-					// Übertrage die OldEdges eine Schicht höher *
-					toDelete.add(edge);
-			}
-			// *übertrage sie hier
-			upperNode.getOldEdges().addAll(toDelete);
-			// lösch sie aus den zu löschenden node, da sonst durch unmake
-			// Adjacent probleme auftauchen
-			node.getOldEdges().removeAll(toDelete);
-			toDelete.clear();
-			// lösche alle OldEdges aus der höheren schicht die zu den zu
-			// löschenden Node vorher führten
-			for (CpsEdge edge : upperNode.getOldEdges()) {
-				if (edge.getA().equals(node) || edge.getB().equals(node))
-					toDelete.add(edge);
-			}
-			upperNode.getOldEdges().removeAll(toDelete);
-		}
 
-	}
 
 	/**
 	 * Calculate new Position of the Upper Node
 	 */
-    Position calculatePos(ArrayList<AbstractCpsObject> toGroup) {
+    Position calculatePos(ArrayList<AbstractCanvasObject> toGroup) {
 
 		Position pos = new Position(0, 0);
 
 		// sum(x0 .. xn) / numOfPos, y analog
-		for (AbstractCpsObject abs : toGroup) {
+		for (AbstractCanvasObject abs : toGroup) {
 			pos.x += abs.getPosition().x;
 			pos.y += abs.getPosition().y;
 		}
@@ -392,7 +163,7 @@ class NodeController {
 	/**
 	 * Removes the Given Obj from current Layer and adjusts the idx
 	 */
-	private void removeForNodeOfNode(AbstractCpsObject obj, CpsUpperNode upperNode) {
+	private void removeForNodeOfNode(AbstractCanvasObject obj, GroupNode upperNode) {
 
 		mpC.decIdx(obj.getId(), (upperNode == null ? model.getCvsObjIdx() : upperNode.getNodesIdx()));
 		(upperNode == null ? model.getCvsObjIdx() : upperNode.getNodesIdx()).remove(obj.getId());
@@ -410,11 +181,11 @@ class NodeController {
 	 *            other part of the Edge
 	 * @return boolean if found
 	 */
-	private boolean backtrackLostChild(AbstractCpsObject object, AbstractCpsObject find, AbstractCpsObject lost) {
+	private boolean backtrackLostChild(AbstractCanvasObject object, AbstractCanvasObject find, AbstractCanvasObject lost) {
 		//if not instance of CpsUpperNode
-		if (!(object instanceof CpsUpperNode)) {
+		if (!(object instanceof GroupNode)) {
 			//forEach connection look if lost and found inside
-			for (CpsEdge edge : object.getConnections()) {
+			for (Edge edge : object.getConnections()) {
 				if (edge.getA().equals(find) && edge.getB().equals(lost)
 						|| edge.getA().equals(lost) && edge.getB().equals(find))
 					return true;
@@ -422,7 +193,7 @@ class NodeController {
 			return false;
 		} else {
 			//if instance of Uppernode Call again
-			for (AbstractCpsObject cps : ((CpsUpperNode) object).getNodes()) {
+			for (AbstractCanvasObject cps : ((GroupNode) object).getNodes()) {
 				if (backtrackLostChild(cps, find, lost))
 					return true;
 			}
@@ -437,7 +208,7 @@ class NodeController {
 	 * @param upperNode
 	 * @param replace
 	 */
-    void addObjectInUpperNode(AbstractCpsObject object, CpsUpperNode upperNode, boolean replace) {
+    void addObjectInUpperNode(AbstractCanvasObject object, GroupNode upperNode, boolean replace) {
         if(object == null){
         		new Error("object == null while adding to "+upperNode.toString()).printStackTrace();
         		return;
@@ -453,7 +224,7 @@ class NodeController {
 		/**
 		 * check if we should drag & drop replace
 		 */
-		if(replace && !(object instanceof CpsNode) ){
+		if(replace && !(object instanceof Node) ){
 			/** x of the dragged Object */
 			int x = object.getPosition().x;
 		
@@ -467,10 +238,10 @@ class NodeController {
 			int replaceCounter = 0;
 		
 			/** last object that could be replaced */
-			AbstractCpsObject toBeReplaced = null;
+			AbstractCanvasObject toBeReplaced = null;
 			
 			/** for each cps on Canvas */
-			for (AbstractCpsObject cps : upperNode.getNodes()){
+			for (AbstractCanvasObject cps : upperNode.getNodes()){
 				
 				/** same object -> ignore */
 				if(cps == object)continue;
@@ -497,20 +268,27 @@ class NodeController {
 	/**
 	 * Delete a AbstactCpsObject from CPSUpperNode
 	 */
-    void deleteObjectInUpperNode(AbstractCpsObject object, CpsUpperNode upperNode) {
-        CpsEdge e = null;
-		for (AbstractCpsObject cps : upperNode.getNodes()) {
-			for (CpsEdge p : cps.getConnections()) {
+    void deleteObjectInUpperNode(AbstractCanvasObject object, GroupNode upperNode) {
+        Edge e = null;
+        System.out.println("Deleeeete Object in deleteObjectInUpperNode");
+		for (AbstractCanvasObject cps : upperNode.getNodes()) {
+			for (Edge p : cps.getConnections()) {
 				if (p.getA() == object || p.getB() == object) {
 					e = p;
 				}
 			}
-			if (!model.getClipboradObjects().contains(cps) && !(cps instanceof CpsUpperNode)) {
+			if (!model.getClipboradObjects().contains(cps) && !(cps instanceof GroupNode)) {
 				cps.getConnectedTo().remove(e);
 			}
-			upperNode.getNodeEdges().remove(e);
 		}
-
+		LinkedList<Edge> edgesToDelete = new LinkedList<Edge>();
+		for (Edge p : model.getEdgesOnCanvas()) {
+			if(p.isConnectedTo(object)) {
+				edgesToDelete.add(p);
+				System.out.println("Remove Edge!");
+			}
+		}
+		model.getEdgesOnCanvas().removeAll(edgesToDelete);				
 		mpC.decIdx(object.getId(), upperNode.getNodesIdx());
 		upperNode.getNodesIdx().remove(object.getId());
 		upperNode.getNodes().remove(object);
@@ -522,10 +300,10 @@ class NodeController {
      * @param by
      * @param upperNode
      */
-	public void replaceObjectInUpperNode(AbstractCpsObject toBeReplaced,
-			AbstractCpsObject by, CpsUpperNode upperNode) {
+	public void replaceObjectInUpperNode(AbstractCanvasObject toBeReplaced,
+			AbstractCanvasObject by, GroupNode upperNode) {
 		/** let all edges of 'toBeReplaced' connect to 'by' */
-		for(CpsEdge e: toBeReplaced.getConnections()){
+		for(Edge e: toBeReplaced.getConnections()){
 			if(e.getA() == toBeReplaced){
 				e.setA(by);
 			}else if(e.getB() == toBeReplaced){
@@ -534,12 +312,12 @@ class NodeController {
 			
 			/** if edge from an object to itself -> remove it */
 			if(e.getA() == e.getB())
-				deleteEdge(e, upperNode);
+				;//TODO Delte me if not nessesary
 			else/** else add edge to 'by' */
 				by.addConnection(e);
 		}
 		/** delete 'toBeReplaced' new empty connections, to prevent Nullpointer*/
-		toBeReplaced.setConnections(new ArrayList<CpsEdge>(1));
+		toBeReplaced.setConnections(new ArrayList<Edge>(1));
 		/**
 		 * set Position of by to exactly toBeReplaced
 		 */
@@ -547,47 +325,12 @@ class NodeController {
 		deleteObjectInUpperNode(toBeReplaced, upperNode);
 	}
 
-	/**
-	 * Add Edge in UpperNode
-	 */
-    void addEdge(CpsEdge edge, CpsUpperNode upperNode) {
-        upperNode.getNodeEdges().add(edge);
-	}
-
-	/**
-	 * Delete Edge in UpperNode
-	 */
-    void deleteEdge(CpsEdge edge, CpsUpperNode upperNode) {
-        edge.getA().getConnections().remove(edge);
-		edge.getB().getConnections().remove(edge);
-		upperNode.getNodeEdges().remove(edge);
-		if (edge.getA() instanceof CpsUpperNode || edge.getB() instanceof CpsUpperNode)
-			cvs.handleUpperNodes(edge);
-	}
-
-	/**
-	 * Connect Objects outside of current Layer to Objects inside the Layer
-	 */
-    void connectNodes(CpsEdge edge, CpsUpperNode upperNode) {
-        // keine Connections nötig, da automatisch erzeugt bei Instanziierung
-		// mache diese Edge auch in OldEdges rein des aktuellen CpsUpperNodes
-		upperNode.getOldEdges().add(edge);
-	}
 	
-	/**
-	 * Disconnect Objects outside of current Layer to Objects inside the Layer
-	 */
-    void disconnectNodes(CpsEdge edge, CpsUpperNode upperNode) {
-        edge.getA().getConnections().remove(edge);
-		edge.getB().getConnections().remove(edge);
-		if (upperNode != null)
-			upperNode.getOldEdges().remove(edge);
-	}
 	
 	/**
 	 * If Position is out of boundaries adjust it
 	 */
-	private void updatePosition(AbstractCpsObject temp, CpsUpperNode upperNode) {
+	private void updatePosition(AbstractCanvasObject temp, GroupNode upperNode) {
 		int x = temp.getPosition().x - point.x;
 		int y = temp.getPosition().y - point.y;
 

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

@@ -122,7 +122,7 @@ public class ObjectController {
      *
      * @param obj Cpsobject
      */
-    public void deleteSelectedObject(AbstractCpsObject obj) {
+    public void deleteSelectedObject(AbstractCanvasObject obj) {
         model.getSelectedCpsObjects().remove(obj);
     }
 
@@ -131,7 +131,7 @@ public class ObjectController {
      *
      * @param obj AbstractCpsobject
      */
-    public void addSelectedObject(AbstractCpsObject obj) {
+    public void addSelectedObject(AbstractCanvasObject obj) {
         model.getSelectedCpsObjects().add(obj);
     }
 
@@ -164,14 +164,14 @@ public class ObjectController {
      *
      * @param list
      */
-    public int getNumberHolonObjects(ArrayList<AbstractCpsObject> list) {
+    public int getNumberHolonObjects(ArrayList<AbstractCanvasObject> list) {
         int val = 0;
 
-        for (AbstractCpsObject obj : list) {
+        for (AbstractCanvasObject obj : list) {
             if (obj instanceof HolonObject) {
                 val++;
-            } else if (obj instanceof CpsUpperNode) {
-                val += getNumberHolonObjects(((CpsUpperNode) obj).getNodes());
+            } else if (obj instanceof GroupNode) {
+                val += getNumberHolonObjects(((GroupNode) obj).getNodes());
             }
         }
         return val;
@@ -179,14 +179,14 @@ public class ObjectController {
 /**
  * Helper added by Rolf TODO: macht hier vll keinen Sinn...
  */
-    public ArrayList<HolonObject> getAllHolonObjects(ArrayList<AbstractCpsObject> list){
+    public ArrayList<HolonObject> getAllHolonObjects(ArrayList<AbstractCanvasObject> list){
     	ArrayList<HolonObject> allObj = new ArrayList<HolonObject>();
     	
-    	for (AbstractCpsObject obj : list) {
+    	for (AbstractCanvasObject obj : list) {
             if (obj instanceof HolonObject) {
                 allObj.add((HolonObject)obj);
-            } else if (obj instanceof CpsUpperNode) {
-                 allObj.addAll(getAllHolonObjects(((CpsUpperNode) obj).getNodes()));
+            } else if (obj instanceof GroupNode) {
+                 allObj.addAll(getAllHolonObjects(((GroupNode) obj).getNodes()));
             }
         }
     	

+ 13 - 15
src/ui/controller/SaveController.java

@@ -170,9 +170,9 @@ public class SaveController {
 
             file.add(key, new JsonPrimitive(cat.getName()));
             // forall object in the category store them into the jsontree
-            for (AbstractCpsObject obj : cat.getObjects()) {
+            for (AbstractCanvasObject obj : cat.getObjects()) {
                 file.add("CGOBJECT" + getNumerator(NUMTYPE.OBJECT),
-                        model.getGson().toJsonTree(obj, AbstractCpsObject.class));
+                        model.getGson().toJsonTree(obj, AbstractCanvasObject.class));
                 // if its a holonobject add elements too
                 if (obj instanceof HolonObject)
                     elementsToJson(TYPE.CATEGORY, file, obj);
@@ -192,10 +192,10 @@ public class SaveController {
      * Travers through all Objects via BFS and Stores everything relevant
      */
     private void storeCanvas(JsonObject file) {
-        ArrayDeque<AbstractCpsObject> queue = new ArrayDeque<>();
-        AbstractCpsObject u = null;
+        ArrayDeque<AbstractCanvasObject> queue = new ArrayDeque<>();
+        AbstractCanvasObject u = null;
         // put all objects into queue since there is not starting object
-        for (AbstractCpsObject cps : model.getObjectsOnCanvas()) {
+        for (AbstractCanvasObject cps : model.getObjectsOnCanvas()) {
             queue.add(cps);
         }
         // while quene not empty
@@ -205,7 +205,7 @@ public class SaveController {
             u = queue.pop();
             // add currentnode into jsontree
             String key = "CVSOBJECT" + getNumerator(NUMTYPE.OBJECT);
-            file.add(key, model.getGson().toJsonTree(u, AbstractCpsObject.class));
+            file.add(key, model.getGson().toJsonTree(u, AbstractCanvasObject.class));
             // and its connections too
             edgeToJson(EDGETYPE.CONNECTION, file, u.getId(), u.getConnections());
             // if holonobject elements too
@@ -216,13 +216,11 @@ public class SaveController {
                 if (((HolonSwitch) u).getGraphPoints().size() != 0)
                     unitgraphToJson(GRAPHTYPE.SWITCH, file, u.getId(), ((HolonSwitch) u).getGraphPoints());
             // if uppernode put all nodes inside the uppernode into queue
-            if (u instanceof CpsUpperNode) {
-                for (AbstractCpsObject adjacent : ((CpsUpperNode) u).getNodes()) {
+            if (u instanceof GroupNode) {
+                for (AbstractCanvasObject adjacent : ((GroupNode) u).getNodes()) {
                     queue.add(adjacent);
                 }
-                // dont forget to add the nodeedges and oldedges
-                edgeToJson(EDGETYPE.NODE, file, u.getId(), ((CpsUpperNode) u).getNodeEdges());
-                edgeToJson(EDGETYPE.OLD, file, u.getId(), ((CpsUpperNode) u).getOldEdges());
+
             }
         }
         // lastly add canvasedges into json
@@ -249,7 +247,7 @@ public class SaveController {
     /**
      * Stores Category or Canvas Elements into Json
      */
-    void elementsToJson(TYPE type, JsonObject file, AbstractCpsObject obj) {
+    void elementsToJson(TYPE type, JsonObject file, AbstractCanvasObject obj) {
         JsonObject temp = new JsonObject();
         String key = null;
         // forall elements store them into json and include the id of the object
@@ -328,12 +326,12 @@ public class SaveController {
     /**
      * Canvas-Edge, Connections, Node-Edge and Old-Edges to json
      */
-    private void edgeToJson(EDGETYPE type, JsonObject file, int id, ArrayList<CpsEdge> arr) {
+    private void edgeToJson(EDGETYPE type, JsonObject file, int id, ArrayList<Edge> arr) {
         String k = null;
         boolean b = false;
         JsonObject temp = new JsonObject();
 
-        for (CpsEdge edge : arr) {
+        for (Edge edge : arr) {
             // add properties and only the ids from a and b
             temp.add("properties", model.getGson().toJsonTree(edge));
             temp.add("A", new JsonPrimitive(edge.getA().getId()));
@@ -389,7 +387,7 @@ public class SaveController {
             JsonObject dataSet = new JsonObject();
             for (int i = 0; i < model.getGraphTable().get(k).getStatGraph().getDataSets().size(); i++) {
                 TrackedDataSet set = model.getGraphTable().get(k).getStatGraph().getDataSets().get(i);
-                AbstractCpsObject cps = set.getCpsObject();
+                AbstractCanvasObject cps = set.getCpsObject();
 
                 dataSet.add("ID", (cps == null ? null : new JsonPrimitive(cps.getId())));
                 dataSet.add("COLOR", model.getGson().toJsonTree(set.getColor(), Color.class));

+ 6 - 6
src/ui/controller/SimulationManager.java

@@ -87,7 +87,7 @@ public class SimulationManager {
 		
 		
 		
-		HashMap<CpsEdge, CableState> map = new HashMap<CpsEdge, CableState>();
+		HashMap<Edge, CableState> map = new HashMap<Edge, CableState>();
 		if(timestep > 0 && saves.containsKey(timestep-1)) //if the state before exist
 		{
 			//make cable hastmap
@@ -194,10 +194,10 @@ public class SimulationManager {
 			MinimumNetwork actualNetwork = new MinimumNetwork(new ArrayList<HolonObject>(), new ArrayList<IntermediateCableWithState>());
 			actualNetwork.getHolonObjectList().add(lookAtObject);
 			//create List of neighbors
-			LinkedList<AbstractCpsObject> neighbors = new LinkedList<AbstractCpsObject>();
+			LinkedList<AbstractCanvasObject> neighbors = new LinkedList<AbstractCanvasObject>();
 			populateListOfNeighbors(edgeList, lookAtObject, actualNetwork, neighbors);
 			while(!neighbors.isEmpty()) {
-				AbstractCpsObject lookAtNeighbor = neighbors.getFirst();
+				AbstractCanvasObject lookAtNeighbor = neighbors.getFirst();
 				if(lookAtNeighbor instanceof HolonObject) {
 					actualNetwork.getHolonObjectList().add((HolonObject) lookAtNeighbor);
 					holonObjectList.remove(lookAtNeighbor);
@@ -228,8 +228,8 @@ public class SimulationManager {
 	 * @param actualNetwork
 	 * @param neighbors
 	 */
-	void populateListOfNeighbors(ArrayList<IntermediateCableWithState> edgeList, AbstractCpsObject lookAtObject,
-			MinimumNetwork actualNetwork, LinkedList<AbstractCpsObject> neighbors) {
+	void populateListOfNeighbors(ArrayList<IntermediateCableWithState> edgeList, AbstractCanvasObject lookAtObject,
+			MinimumNetwork actualNetwork, LinkedList<AbstractCanvasObject> neighbors) {
 		ListIterator<IntermediateCableWithState> iter = edgeList.listIterator();
 		while(iter.hasNext())
 		{
@@ -239,7 +239,7 @@ public class SimulationManager {
 				actualNetwork.getEdgeList().add(lookAtEdge);
 				
 				//Add neighbar
-				AbstractCpsObject edgeNeighbor;
+				AbstractCanvasObject edgeNeighbor;
 				if(lookAtEdge.getModel().getA().equals(lookAtObject)) {
 					edgeNeighbor = lookAtEdge.getModel().getB();
 					

+ 6 - 6
src/ui/controller/StatsController.java

@@ -2,7 +2,7 @@ package ui.controller;
 
 import java.util.ArrayList;
 
-import classes.AbstractCpsObject;
+import classes.AbstractCanvasObject;
 import classes.TrackedDataSet;
 import ui.model.Model;
 import ui.view.StatisticGraphPanel;
@@ -16,21 +16,21 @@ public class StatsController {
 
 	}
 
-	public void setTrackingObj(ArrayList<AbstractCpsObject> objArr) {
+	public void setTrackingObj(ArrayList<AbstractCanvasObject> objArr) {
 		model.setTrackingObj(objArr);
 	}
 
-	public ArrayList<AbstractCpsObject> getTrackingObj() {
+	public ArrayList<AbstractCanvasObject> getTrackingObj() {
 		return model.getTrackingObj();
 	}
 
-	public void addTrackingObj(AbstractCpsObject obj) {
+	public void addTrackingObj(AbstractCanvasObject obj) {
 		model.getTrackingObj().add(obj);
 		model.addObjectsToGraphListeners();
 	}
 
-	public void removeTrackingObj(AbstractCpsObject obj) {
-		ArrayList<AbstractCpsObject> objArr = model.getTrackingObj();
+	public void removeTrackingObj(AbstractCanvasObject obj) {
+		ArrayList<AbstractCanvasObject> objArr = model.getTrackingObj();
 		objArr.remove(obj);
 		model.setTrackingObj(objArr);
 		model.addObjectsToGraphListeners();

+ 25 - 25
src/ui/controller/UpdateController.java

@@ -44,7 +44,7 @@ public class UpdateController {
 	 */
 	public void refreshTableProperties(DefaulTable table) {
 		if (model.getSelectedCpsObjects().size() == 1) {
-			AbstractCpsObject tempCps = model.getSelectedCpsObjects().get(0);
+			AbstractCanvasObject tempCps = model.getSelectedCpsObjects().get(0);
 			if (tempCps != null && tempCps.getClass() == HolonObject.class) {
 				if (table.getRowCount() != 0) {
 					table.removeRow(2);
@@ -66,11 +66,11 @@ public class UpdateController {
 	 * @param objects
 	 *            ArrayList to be displayed
 	 */
-	public void fillElementTable(ArrayList<AbstractCpsObject> objects, PropertyTable table) {
+	public void fillElementTable(ArrayList<AbstractCanvasObject> objects, PropertyTable table) {
 		LinkedList<HolonElement> elemList = new LinkedList<HolonElement>();
 		
 		if (objects.size() > 1) {
-			for (AbstractCpsObject o : objects) {
+			for (AbstractCanvasObject o : objects) {
 				if (o instanceof HolonObject) {
 					for (HolonElement he : ((HolonObject) o).getElements()) {
 						he.setObjName(o.getName() + ", " + o.getId());
@@ -86,7 +86,7 @@ public class UpdateController {
 			}
 
 		} else if (objects.size() == 1) {
-			AbstractCpsObject o = objects.get(0);
+			AbstractCanvasObject o = objects.get(0);
 			if (o instanceof HolonObject) {
 				for (HolonElement he : ((HolonObject) o).getElements()) {
 					elemList.add(he);
@@ -263,8 +263,8 @@ public class UpdateController {
 	 * 
 	 * @return selected CpsObject
 	 */
-	public AbstractCpsObject getActualCps() {
-        AbstractCpsObject tempCps;
+	public AbstractCanvasObject getActualCps() {
+        AbstractCanvasObject tempCps;
         if (model.getSelectedCpsObjects().size() == 1) {
 			tempCps = model.getSelectedCpsObjects().get(0);
 		} else {
@@ -279,13 +279,13 @@ public class UpdateController {
 	 * 
 	 * @return selected CpsObject
 	 */
-	public AbstractCpsObject getActualCpsUpperNode(UpperNodeCanvas canvas) {
+	public AbstractCanvasObject getActualCpsUpperNode(UpperNodeCanvas canvas) {
 		int tempID = model.getSelectedObjectID();
-		AbstractCpsObject tempCps = controller.searchByIDUpperNode(tempID, canvas.upperNode);
+		AbstractCanvasObject tempCps = controller.searchByIDUpperNode(tempID, canvas.upperNode);
 		return tempCps;
 	}
 
-	public void paintProperties(AbstractCpsObject obj) {
+	public void paintProperties(AbstractCanvasObject obj) {
 		if (obj != null) {
 			// Name of the CpsObject
 			Object[] tempName = { Languages.getLanguage()[72], obj.getName() };
@@ -326,17 +326,17 @@ public class UpdateController {
 				// elementGraph.setText(obj.getName());
 				model.getPropertyTable().setCellEditable(0, 1, true);
 				model.getPropertyTable().setCellEditable(2, 1, true);
-			} else if (obj instanceof CpsUpperNode) {
+			} else if (obj instanceof GroupNode) {
 				deleteRows(model.getSingleTable());
 				deleteRows(model.getMultiTable());
 				//short fix please make me new
-				DecoratedGroupNode dGroupNode = controller.getSimManager().getVisualRepresentationalState(model.getCurIteration()).getCreatedGroupNodes().get((CpsUpperNode) obj);
+				DecoratedGroupNode dGroupNode = controller.getSimManager().getVisualRepresentationalState(model.getCurIteration()).getCreatedGroupNodes().get((GroupNode) obj);
 				Object[] info = { "Statistics:", "" };
 				
-				Object[] numEle = { "Number of Objects (total)", ((CpsUpperNode) obj).getNodes().size() };
-				Object[] numObj = { "Number of HolonObjects", ((CpsUpperNode) obj).getNumHolonObj().size() };
-				Object[] numSwi = { "Number of HolonSwitches", ((CpsUpperNode) obj).getNumSwitches().size() };
-				Object[] numUpp = { "Number of GroupNodes", ((CpsUpperNode) obj).getNumUpperNodes().size() };
+				Object[] numEle = { "Number of Objects (total)", ((GroupNode) obj).getNodes().size() };
+				Object[] numObj = { "Number of HolonObjects", ((GroupNode) obj).getNumHolonObj().size() };
+				Object[] numSwi = { "Number of HolonSwitches", ((GroupNode) obj).getNumSwitches().size() };
+				Object[] numUpp = { "Number of GroupNodes", ((GroupNode) obj).getNumUpperNodes().size() };
 				model.getPropertyTable().addRow(info);
 				model.getPropertyTable().addRow(numEle);
 				model.getPropertyTable().addRow(numObj);
@@ -405,11 +405,11 @@ public class UpdateController {
 				deleteRows(model.getMultiTable());
 			}
 			// For Objects the only editable cell is the name
-			ArrayList<CpsEdge> tempArray = obj.getConnections();
+			ArrayList<Edge> tempArray = obj.getConnections();
 			// If the clicked object has connections
 			if (!tempArray.isEmpty()) {
 				boolean first = true;
-				for (CpsEdge temp2 : tempArray) {
+				for (Edge temp2 : tempArray) {
 					if (first) {
 						first = false;
 						if (obj.getId() != temp2.getA().getId()) {
@@ -467,9 +467,9 @@ public class UpdateController {
 		}
 	}
 
-	public AbstractCpsObject getHolonObjSelected(int id) {
-		AbstractCpsObject obj = null;
-		for (AbstractCpsObject o : model.getSelectedCpsObjects()) {
+	public AbstractCanvasObject getHolonObjSelected(int id) {
+		AbstractCanvasObject obj = null;
+		for (AbstractCanvasObject o : model.getSelectedCpsObjects()) {
 			if (o.getId() == id) {
 				obj = o;
 				break;
@@ -499,19 +499,19 @@ public class UpdateController {
 				Object[] tempSwi = { "Nr. of Switches", sub.getSwitches().size() };
 				model.getPropertyTable().addRow(tempSwi);
 				Object[] tempProd = { "Total Production",
-						"" + controller.getTotalProduction(new ArrayList<AbstractCpsObject>(sub.getObjects())) };
+						"" + controller.getTotalProduction(new ArrayList<AbstractCanvasObject>(sub.getObjects())) };
 				model.getPropertyTable().addRow(tempProd);
 				Object[] tempCons = { "Total Consumption",
-						"" + controller.getTotalConsumption(new ArrayList<AbstractCpsObject>(sub.getObjects())) };
+						"" + controller.getTotalConsumption(new ArrayList<AbstractCanvasObject>(sub.getObjects())) };
 				model.getPropertyTable().addRow(tempCons);
 				Object[] tempEle = { "Nr. of Elements",
-						"" + controller.getTotalElements(new ArrayList<AbstractCpsObject>(sub.getObjects())) };
+						"" + controller.getTotalElements(new ArrayList<AbstractCanvasObject>(sub.getObjects())) };
 				model.getPropertyTable().addRow(tempEle);
 				Object[] tempProds = { "Nr. of Producers",
-						"" + controller.getTotalProducers(new ArrayList<AbstractCpsObject>(sub.getObjects())) };
+						"" + controller.getTotalProducers(new ArrayList<AbstractCanvasObject>(sub.getObjects())) };
 				model.getPropertyTable().addRow(tempProds);
 				Object[] tempAct = { "Nr. of active Elements",
-						"" + controller.getActiveElements(new ArrayList<AbstractCpsObject>(sub.getObjects())) };
+						"" + controller.getActiveElements(new ArrayList<AbstractCanvasObject>(sub.getObjects())) };
 				model.getPropertyTable().addRow(tempAct);
 			}
 		}

+ 4 - 4
src/ui/model/DecoratedCable.java

@@ -1,20 +1,20 @@
 package ui.model;
 
-import classes.CpsEdge;
+import classes.Edge;
 
 public class DecoratedCable {
 	public enum CableState{
 		Working, Burned
 	}
-	private CpsEdge model;
+	private Edge model;
 	private CableState state;
 	private float flowEnergy;
-	public DecoratedCable(CpsEdge edge, CableState state, float flowEnergy){
+	public DecoratedCable(Edge edge, CableState state, float flowEnergy){
 		this.model = edge;
 		this.state = state;
 		this.flowEnergy = flowEnergy;
 	}
-	public CpsEdge getModel() {
+	public Edge getModel() {
 		return model;
 	}
 	public CableState getState() {

+ 8 - 8
src/ui/model/DecoratedGroupNode.java

@@ -5,8 +5,8 @@ import java.util.List;
 import java.util.stream.Collector;
 import java.util.stream.Collectors;
 
-import classes.CpsNode;
-import classes.CpsUpperNode;
+import classes.Node;
+import classes.GroupNode;
 import classes.IntermediateCalculationCable;
 import ui.model.DecoratedHolonObject.HolonObjectState;
 import classes.ExitCable;
@@ -16,11 +16,11 @@ import classes.ExitCable;
  *
  */
 public class DecoratedGroupNode {
-	private CpsUpperNode model;
+	private GroupNode model;
 	private ArrayList<Supplier> supplierList;
 	private ArrayList<Passiv> passivList;
 	private ArrayList<Consumer> consumerList;
-	private ArrayList<CpsNode> nodeList;
+	private ArrayList<Node> nodeList;
 	/**
 	 * Cables that only exist on that group node. From a object in that group node to a object in that group Node.
 	 * Not exit the group node (a layer down).
@@ -35,18 +35,18 @@ public class DecoratedGroupNode {
 
 
 
-	public DecoratedGroupNode(CpsUpperNode model) {
+	public DecoratedGroupNode(GroupNode model) {
 		this.model = model;
 		this.supplierList = new ArrayList<Supplier>();
 		this.passivList = new ArrayList<Passiv>();
 		this.consumerList = new ArrayList<Consumer>();
-		this.nodeList = new ArrayList<CpsNode>();
+		this.nodeList = new ArrayList<Node>();
 		this.internCableList = new ArrayList<DecoratedCable>();
 		this.exitCableList = new ArrayList<ExitCable>();
 		this.switchList = new ArrayList<DecoratedSwitch>();
 		this.groupNodeList = new ArrayList<DecoratedGroupNode>();
 	}
-	public CpsUpperNode getModel() {
+	public GroupNode getModel() {
 		return model;
 	}
 	public ArrayList<Supplier> getSupplierList() {
@@ -58,7 +58,7 @@ public class DecoratedGroupNode {
 	public ArrayList<Consumer> getConsumerList() {
 		return consumerList;
 	}
-	public ArrayList<CpsNode> getNodeList() {
+	public ArrayList<Node> getNodeList() {
 		return nodeList;
 	}
 	public ArrayList<DecoratedCable> getInternCableList() {

+ 4 - 4
src/ui/model/IntermediateCableWithState.java

@@ -1,6 +1,6 @@
 package ui.model;
 
-import classes.CpsEdge;
+import classes.Edge;
 import classes.HolonObject;
 import ui.controller.FlexManager;
 import ui.model.DecoratedCable.CableState;
@@ -12,8 +12,8 @@ import ui.model.DecoratedCable.CableState;
  */
 public class IntermediateCableWithState {
 	private CableState state;
-	private CpsEdge model;
-	public IntermediateCableWithState(CpsEdge model,CableState state)
+	private Edge model;
+	public IntermediateCableWithState(Edge model,CableState state)
 	{
 		this.model = model;
 		this.state = state;
@@ -24,7 +24,7 @@ public class IntermediateCableWithState {
 	public void setState(CableState state) {
 		this.state = state;
 	}
-	public CpsEdge getModel() {
+	public Edge getModel() {
 		return model;
 	}
 	//ugly

+ 51 - 38
src/ui/model/MinimumModel.java

@@ -3,10 +3,10 @@ package ui.model;
 import java.util.ArrayList;
 import java.util.HashMap;
 
-import classes.AbstractCpsObject;
-import classes.CpsEdge;
-import classes.CpsNode;
-import classes.CpsUpperNode;
+import classes.AbstractCanvasObject;
+import classes.Edge;
+import classes.Node;
+import classes.GroupNode;
 import classes.HolonObject;
 import classes.HolonSwitch;
 import ui.model.DecoratedCable.CableState;
@@ -18,51 +18,67 @@ import ui.model.DecoratedCable.CableState;
  */
 public class MinimumModel {
 	
+	
+	
+	
 	private ArrayList<HolonObject> holonObjectList = new ArrayList<HolonObject>();
 	private ArrayList<IntermediateCableWithState> cableList = new ArrayList<IntermediateCableWithState>();
-	private ArrayList<CpsNode> nodeList = new ArrayList<CpsNode>();
+	private ArrayList<Node> nodeList = new ArrayList<Node>();
 	private ArrayList<HolonSwitch> switchList = new ArrayList<HolonSwitch>();
-	
 	//-->Only for Visual:
-	private ArrayList<CpsUpperNode> uppderNodeList = new ArrayList<CpsUpperNode>();
-	private HashMap<AbstractCpsObject, CpsUpperNode> inGroupObjects = new HashMap<>();
-	private HashMap<CpsEdge, CpsUpperNode> inGroupEdges = new HashMap<>();
+	private ArrayList<GroupNode> uppderNodeList = new ArrayList<GroupNode>();
+	private HashMap<AbstractCanvasObject, GroupNode> inGroupObjects = new HashMap<>();
+	HashMap<Edge, ArrayList<GroupNode>> inGroupEdges = new HashMap<Edge, ArrayList<GroupNode>>();
 	//<--
 	
-	public MinimumModel(ArrayList<AbstractCpsObject> abstractObjectList, ArrayList<CpsEdge> edgeList) {// Constructor because of old Model
-		for (AbstractCpsObject aCps : abstractObjectList) {
-			if (aCps instanceof HolonObject) holonObjectList.add((HolonObject) aCps);
-			else if (aCps instanceof CpsNode) nodeList.add((CpsNode) aCps);
+	
+	
+	
+	
+	public HashMap<Edge, ArrayList<GroupNode>> getInGroupEdges() {
+		return inGroupEdges;
+	}
+
+	public MinimumModel(ArrayList<AbstractCanvasObject> abstractObjectList, ArrayList<Edge> edgeList) {// Constructor because of old Model
+		for (AbstractCanvasObject aCps : abstractObjectList) {
+			if (aCps instanceof HolonObject) {
+				holonObjectList.add((HolonObject) aCps);
+			}
+			else if (aCps instanceof Node) nodeList.add((Node) aCps);
 			else if (aCps instanceof HolonSwitch) switchList.add((HolonSwitch) aCps);
-			else if(aCps instanceof CpsUpperNode) {
-				addUpperObjects((CpsUpperNode)aCps);
-				uppderNodeList.add((CpsUpperNode)aCps);
+			else if(aCps instanceof GroupNode) {
+				addUpperObjects((GroupNode)aCps);
+				uppderNodeList.add((GroupNode)aCps);
 			}
 		}
-		for (CpsEdge edge : edgeList) {
+		for (Edge edge : edgeList) {
 			this.cableList.add(new IntermediateCableWithState(edge, CableState.Working));
+			AbstractCanvasObject objectA = edge.getA();
+			AbstractCanvasObject objectB = edge.getB();
+			if(inGroupObjects.containsKey(objectA) || inGroupObjects.containsKey(objectB)){
+				ArrayList<GroupNode> list = new ArrayList<GroupNode>(); 
+				if(inGroupObjects.containsKey(objectA)) {
+					list.add(inGroupObjects.get(objectA));
+				}
+				if(inGroupObjects.containsKey(objectB)) {
+					list.add(inGroupObjects.get(objectB));					
+				}
+				inGroupEdges.put(edge, list);
+			}
 		}
 	}
 
-	private void addUpperObjects(CpsUpperNode aUpperNode) {
-		for(AbstractCpsObject aCps : aUpperNode.getNodes()) {
+	private void addUpperObjects(GroupNode aUpperNode) {
+		for(AbstractCanvasObject aCps : aUpperNode.getNodes()) {
 			if (aCps instanceof HolonObject) holonObjectList.add((HolonObject) aCps);
-			else if (aCps instanceof CpsNode) nodeList.add((CpsNode) aCps);
+			else if (aCps instanceof Node) nodeList.add((Node) aCps);
 			else if (aCps instanceof HolonSwitch) switchList.add((HolonSwitch) aCps);
-			else if(aCps instanceof CpsUpperNode) {
-				addUpperObjects((CpsUpperNode)aCps);
-				uppderNodeList.add((CpsUpperNode)aCps);
+			else if(aCps instanceof GroupNode) {
+				addUpperObjects((GroupNode)aCps);
+				uppderNodeList.add((GroupNode)aCps);
 			}
 			inGroupObjects.put(aCps, aUpperNode);
 		}
-		for (CpsEdge edge : aUpperNode.getNodeEdges()) {
-			this.cableList.add(new IntermediateCableWithState(edge, CableState.Working));
-			inGroupEdges.put(edge, aUpperNode);
-		}
-		for (CpsEdge edge : aUpperNode.getOldEdges()) {
-			this.cableList.add(new IntermediateCableWithState(edge, CableState.Working));
-			inGroupEdges.put(edge, aUpperNode);
-		}
 	}
 	
 	public ArrayList<HolonObject> getHolonObjectList() {
@@ -77,10 +93,10 @@ public class MinimumModel {
 	public void setEdgeList(ArrayList<IntermediateCableWithState> cableList) {
 		this.cableList = cableList;
 	}
-	public ArrayList<CpsNode> getNodeList() {
+	public ArrayList<Node> getNodeList() {
 		return nodeList;
 	}
-	public void setNodeList(ArrayList<CpsNode> nodeList) {
+	public void setNodeList(ArrayList<Node> nodeList) {
 		this.nodeList = nodeList;
 	}
 	public ArrayList<HolonSwitch> getSwitchList() {
@@ -90,16 +106,13 @@ public class MinimumModel {
 		this.switchList = switchList;
 	}
 
-	public ArrayList<CpsUpperNode> getUppderNodeList() {
+	public ArrayList<GroupNode> getUppderNodeList() {
 		return uppderNodeList;
 	}
 
-	public HashMap<AbstractCpsObject, CpsUpperNode> getInGroupObjects() {
+	public HashMap<AbstractCanvasObject, GroupNode> getInGroupObjects() {
 		return inGroupObjects;
 	}
 
-	public HashMap<CpsEdge, CpsUpperNode> getInGroupEdges() {
-		return inGroupEdges;
-	}
 	
 }

+ 3 - 2
src/ui/model/MinimumNetwork.java

@@ -2,6 +2,7 @@ package ui.model;
 
 import java.util.ArrayList;
 
+import classes.AbstractCanvasObject;
 import classes.AbstractCpsObject;
 import classes.HolonObject;
 
@@ -9,7 +10,7 @@ public class MinimumNetwork {
 	private ArrayList<HolonObject> holonObjectList = new ArrayList<HolonObject>();
 	private ArrayList<IntermediateCableWithState> edgeList = new ArrayList<IntermediateCableWithState>();
 	//ToCalculate average path
-	private ArrayList<AbstractCpsObject> nodeAndSwitches = new ArrayList<AbstractCpsObject>();
+	private ArrayList<AbstractCanvasObject> nodeAndSwitches = new ArrayList<AbstractCanvasObject>();
 	public MinimumNetwork(ArrayList<HolonObject> holonObjectList, ArrayList<IntermediateCableWithState> edgeList){
 		this.holonObjectList = holonObjectList;
 		this.edgeList = edgeList;
@@ -34,7 +35,7 @@ public class MinimumNetwork {
 		edges += "]";
 		return objecte + edges;
 	}
-	public ArrayList<AbstractCpsObject> getNodeAndSwitches() {
+	public ArrayList<AbstractCanvasObject> getNodeAndSwitches() {
 		return nodeAndSwitches;
 	}
 }

+ 43 - 43
src/ui/model/Model.java

@@ -46,11 +46,11 @@ public class Model {
     private int curIteration = 0;
     private LinkedList<Color> subNetColors = new LinkedList<>();
     // ID of the Selected Object
-    private AbstractCpsObject selectedCpsObject = null;
+    private AbstractCanvasObject selectedCpsObject = null;
     private HolonElement selectedHolonElement;
-    private CpsEdge selectedEdge;
-    private ArrayList<AbstractCpsObject> selectedObjects = new ArrayList<>();
-    private ArrayList<AbstractCpsObject> clipboardObjects = new ArrayList<>();
+    private Edge selectedEdge;
+    private ArrayList<AbstractCanvasObject> selectedObjects = new ArrayList<>();
+    private ArrayList<AbstractCanvasObject> clipboardObjects = new ArrayList<>();
     private HashMap<Integer, ArrayList<HolonElement>> eleToDelete;
     // Capacity for Edge
     private float maxCapacity;
@@ -107,23 +107,23 @@ public class Model {
      * Array of all HolonObj and HolonSwitches, that should be tracked through
      * out the statistics tab
      */
-    private ArrayList<AbstractCpsObject> trackedObjects;
+    private ArrayList<AbstractCanvasObject> trackedObjects;
     /*
      * Array of all CpsObjects in our canvas. It is set by default as an empty
      * list.
      */
-    private ArrayList<AbstractCpsObject> objectsOnCanvas;
+    private ArrayList<AbstractCanvasObject> objectsOnCanvas;
     private HashMap<String, Integer> cgIdx;
     private HashMap<Integer, Integer> cvsObjIdx;
     /*
      * Array of all CpsObjects in our canvas. It is set by default as an empty
      * list.
      */
-    private ArrayList<CpsEdge> edgesOnCanvas;
+    private ArrayList<Edge> edgesOnCanvas;
     
     
     private ArrayList<HolonObject> holonObjectsOnCanvas = new ArrayList<HolonObject>();
-    private ArrayList<CpsNode> nodesOnCanvas= new ArrayList<CpsNode>();
+    private ArrayList<Node> nodesOnCanvas= new ArrayList<Node>();
     private ArrayList<HolonSwitch> switchsOnCanvas= new ArrayList<HolonSwitch>();
     
     
@@ -150,7 +150,7 @@ public class Model {
 
     // Statistic Graph Data
     private Hashtable<String, StatisticGraphPanel> statisticGraphTable = new Hashtable<>();
-    private HashMap<Integer, CpsUpperNode> hashcodeMap = new HashMap<>();
+    private HashMap<Integer, GroupNode> hashcodeMap = new HashMap<>();
     private ArrayList<JsonObject> statisticData = new ArrayList<>();
 
     private Gson gson;
@@ -222,7 +222,7 @@ public class Model {
      *
      * @return the objectsOnCanvas
      */
-    public ArrayList<AbstractCpsObject> getObjectsOnCanvas() {
+    public ArrayList<AbstractCanvasObject> getObjectsOnCanvas() {
         return objectsOnCanvas;
     }
 
@@ -231,7 +231,7 @@ public class Model {
      *
      * @param objectsOnCanvas the objectsOnCanvas to set
      */
-    public void setObjectsOnCanvas(ArrayList<AbstractCpsObject> objectsOnCanvas) {
+    public void setObjectsOnCanvas(ArrayList<AbstractCanvasObject> objectsOnCanvas) {
         this.objectsOnCanvas = objectsOnCanvas;
     }
 
@@ -240,7 +240,7 @@ public class Model {
      *
      * @return the edgesOnCanvas
      */
-    public ArrayList<CpsEdge> getEdgesOnCanvas() {
+    public ArrayList<Edge> getEdgesOnCanvas() {
         return edgesOnCanvas;
     }
 
@@ -249,7 +249,7 @@ public class Model {
      *
      * @param arrayList the edgesOnCanvas to set
      */
-    public void setEdgesOnCanvas(ArrayList<CpsEdge> arrayList) {
+    public void setEdgesOnCanvas(ArrayList<Edge> arrayList) {
         this.edgesOnCanvas = arrayList;
     }
 
@@ -258,7 +258,7 @@ public class Model {
      *
      * @param edge the edgesOnCanvas to add
      */
-    public void addEdgeOnCanvas(CpsEdge edge) {
+    public void addEdgeOnCanvas(Edge edge) {
         this.edgesOnCanvas.add(edge);
     }
 
@@ -267,7 +267,7 @@ public class Model {
      *
      * @param edge the edge to remove
      */
-    public void removeEdgesOnCanvas(CpsEdge edge) {
+    public void removeEdgesOnCanvas(Edge edge) {
         this.edgesOnCanvas.remove(edge);
     }
 
@@ -330,7 +330,7 @@ public class Model {
      *
      * @return selected Cps Object
      */
-    public AbstractCpsObject getSelectedCpsObject() {
+    public AbstractCanvasObject getSelectedCpsObject() {
         return selectedCpsObject;
     }
 
@@ -339,7 +339,7 @@ public class Model {
      *
      * @param selectedCpsObject Objects that are selected
      */
-    public void setSelectedCpsObject(AbstractCpsObject selectedCpsObject) {
+    public void setSelectedCpsObject(AbstractCanvasObject selectedCpsObject) {
         this.selectedCpsObject = selectedCpsObject;
     }
 
@@ -348,7 +348,7 @@ public class Model {
      *
      * @return The selected Objects
      */
-    public ArrayList<AbstractCpsObject> getSelectedCpsObjects() {
+    public ArrayList<AbstractCanvasObject> getSelectedCpsObjects() {
         return selectedObjects;
     }
 
@@ -357,7 +357,7 @@ public class Model {
      *
      * @return The selected Objects
      */
-    public void setSelectedCpsObjects(ArrayList<AbstractCpsObject> arr) {
+    public void setSelectedCpsObjects(ArrayList<AbstractCanvasObject> arr) {
         this.selectedObjects = arr;
     }
 
@@ -450,7 +450,7 @@ public class Model {
      *
      * @return selectedEdge
      */
-    public CpsEdge getSelectedEdge() {
+    public Edge getSelectedEdge() {
         return selectedEdge;
     }
 
@@ -459,7 +459,7 @@ public class Model {
      *
      * @param edge that is selected
      */
-    public void setSelectedEdge(CpsEdge edge) {
+    public void setSelectedEdge(Edge edge) {
         this.selectedEdge = edge;
     }
 
@@ -540,7 +540,7 @@ public class Model {
      *
      * @return Objects in the Clipboard
      */
-    public ArrayList<AbstractCpsObject> getClipboradObjects() {
+    public ArrayList<AbstractCanvasObject> getClipboradObjects() {
         return clipboardObjects;
     }
 
@@ -549,7 +549,7 @@ public class Model {
      *
      * @param c Array of Objects
      */
-    public void setClipboradObjects(ArrayList<AbstractCpsObject> c) {
+    public void setClipboradObjects(ArrayList<AbstractCanvasObject> c) {
         this.clipboardObjects = c;
     }
 
@@ -659,11 +659,11 @@ public class Model {
         return this.subNetColors;
     }
 
-    public ArrayList<AbstractCpsObject> getTrackingObj() {
+    public ArrayList<AbstractCanvasObject> getTrackingObj() {
         return trackedObjects;
     }
 
-    public void setTrackingObj(ArrayList<AbstractCpsObject> toTrack) {
+    public void setTrackingObj(ArrayList<AbstractCanvasObject> toTrack) {
         trackedObjects = toTrack;
     }
 
@@ -776,12 +776,12 @@ public class Model {
     	return objectToReturn;
     }
     
-    private void getAllHolonObjectsRecursive(ArrayList<HolonObject> addObjectsToThisList, List<AbstractCpsObject> listOfObjectsToSearch){
-    	for(AbstractCpsObject aCps : listOfObjectsToSearch) {
+    private void getAllHolonObjectsRecursive(ArrayList<HolonObject> addObjectsToThisList, List<AbstractCanvasObject> listOfObjectsToSearch){
+    	for(AbstractCanvasObject aCps : listOfObjectsToSearch) {
     		if(aCps instanceof HolonObject) {
     			addObjectsToThisList.add((HolonObject) aCps);
-    		}else if(aCps instanceof CpsUpperNode){
-    			getAllHolonObjectsRecursive(addObjectsToThisList, ((CpsUpperNode)aCps).getNodes());
+    		}else if(aCps instanceof GroupNode){
+    			getAllHolonObjectsRecursive(addObjectsToThisList, ((GroupNode)aCps).getNodes());
     		}
     	}
     }
@@ -792,11 +792,11 @@ public class Model {
      */
     public ArrayList<HolonSwitch> getSwitches() {
         ArrayList<HolonSwitch> switches = new ArrayList<>();
-        for (AbstractCpsObject obj : getObjectsOnCanvas()) {
+        for (AbstractCanvasObject obj : getObjectsOnCanvas()) {
             if (obj instanceof HolonSwitch) {
                 switches.add((HolonSwitch) obj);
-            } else if (obj instanceof CpsUpperNode) {
-                getSwitchesRec(((CpsUpperNode) obj).getNodes(), switches);
+            } else if (obj instanceof GroupNode) {
+                getSwitchesRec(((GroupNode) obj).getNodes(), switches);
             }
         }
         return switches;
@@ -808,13 +808,13 @@ public class Model {
      * @param objects  objects
      * @param switches List of switches
      */
-    private ArrayList<HolonSwitch> getSwitchesRec(ArrayList<AbstractCpsObject> objects,
+    private ArrayList<HolonSwitch> getSwitchesRec(ArrayList<AbstractCanvasObject> objects,
                                                   ArrayList<HolonSwitch> switches) {
-        for (AbstractCpsObject obj : objects) {
+        for (AbstractCanvasObject obj : objects) {
             if (obj instanceof HolonSwitch) {
                 switches.add((HolonSwitch) obj);
-            } else if (obj instanceof CpsUpperNode) {
-                getSwitchesRec(((CpsUpperNode) obj).getNodes(), switches);
+            } else if (obj instanceof GroupNode) {
+                getSwitchesRec(((GroupNode) obj).getNodes(), switches);
             }
         }
         return switches;
@@ -1012,7 +1012,7 @@ public class Model {
         builder.serializeNulls();
         builder.excludeFieldsWithoutExposeAnnotation();
         builder.setPrettyPrinting();
-        builder.registerTypeAdapter(AbstractCpsObject.class, new AbstractCpsObjectAdapter());
+        builder.registerTypeAdapter(AbstractCanvasObject.class, new AbstractCpsObjectAdapter());
         builder.registerTypeAdapter(Position.class, new PositionAdapter());
         builder.registerTypeAdapter(Color.class, new ColorAdapter());
         builder.registerTypeAdapter(Pair.class, new PairAdapter());
@@ -1046,14 +1046,14 @@ public class Model {
     /**
      * @return the hashcodeMap
      */
-    public HashMap<Integer, CpsUpperNode> getHashcodeMap() {
+    public HashMap<Integer, GroupNode> getHashcodeMap() {
         return hashcodeMap;
     }
 
     /**
      * @param hashcodeMap the hashcodeMap to set
      */
-    public void setHashcodeMap(HashMap<Integer, CpsUpperNode> hashcodeMap) {
+    public void setHashcodeMap(HashMap<Integer, GroupNode> hashcodeMap) {
         this.hashcodeMap = hashcodeMap;
     }
 
@@ -1070,11 +1070,11 @@ public class Model {
 		this.switchsOnCanvas = switchsOnCanvas;
 	}
 
-	public ArrayList<CpsNode> getNodesOnCanvas() {
+	public ArrayList<Node> getNodesOnCanvas() {
 		return nodesOnCanvas;
 	}
 
-	public void setNodesOnCanvas(ArrayList<CpsNode> nodesOnCanvas) {
+	public void setNodesOnCanvas(ArrayList<Node> nodesOnCanvas) {
 		this.nodesOnCanvas = nodesOnCanvas;
 	}
 
@@ -1090,9 +1090,9 @@ public class Model {
 		switchsOnCanvas.clear();
 		nodesOnCanvas.clear();
 		holonObjectsOnCanvas.clear();
-		for(AbstractCpsObject aCps : this.objectsOnCanvas) {
+		for(AbstractCanvasObject aCps : this.objectsOnCanvas) {
 			if(aCps instanceof HolonObject)holonObjectsOnCanvas.add((HolonObject) aCps);
-			else if(aCps instanceof CpsNode)nodesOnCanvas.add((CpsNode) aCps);
+			else if(aCps instanceof Node)nodesOnCanvas.add((Node) aCps);
 			else if(aCps instanceof HolonSwitch)switchsOnCanvas.add((HolonSwitch) aCps);
 		}
 	}

+ 63 - 32
src/ui/model/VisualRepresentationalState.java

@@ -7,10 +7,10 @@ import java.util.List;
 import java.util.ListIterator;
 import java.util.stream.Collectors;
 
-import classes.AbstractCpsObject;
-import classes.CpsEdge;
-import classes.CpsNode;
-import classes.CpsUpperNode;
+import classes.AbstractCanvasObject;
+import classes.Edge;
+import classes.Node;
+import classes.GroupNode;
 import classes.IntermediateCalculationCable;
 import classes.ExitCable;
 import classes.ExitCable.ExitCableState;
@@ -19,14 +19,14 @@ public class VisualRepresentationalState {
 	private ArrayList<Supplier> supplierList = new ArrayList<Supplier>();
 	private ArrayList<Passiv> passivList= new ArrayList<Passiv>();
 	private ArrayList<Consumer> consumerList= new ArrayList<Consumer>();
-	private ArrayList<CpsNode> nodeList= new ArrayList<CpsNode>();
+	private ArrayList<Node> nodeList= new ArrayList<Node>();
 	private ArrayList<DecoratedCable> cableList= new ArrayList<DecoratedCable>();
 	private ArrayList<DecoratedSwitch> switchList= new ArrayList<DecoratedSwitch>();
 	private ArrayList<DecoratedGroupNode> groupNodeList= new ArrayList<DecoratedGroupNode>();
 	private ArrayList<ExitCable> exitCableList= new ArrayList<ExitCable>();
 	
 	//ForFastAccessIndividualGroupNodes:
-	private HashMap<CpsUpperNode, DecoratedGroupNode> createdGroupNodes;
+	private HashMap<GroupNode, DecoratedGroupNode> createdGroupNodes;
 	
 	public VisualRepresentationalState(DecoratedState stateFromThisTimestep, MinimumModel minimumModel) {
 		reassignObjects(stateFromThisTimestep, minimumModel);
@@ -43,7 +43,7 @@ public class VisualRepresentationalState {
 	public ArrayList<Consumer> getConsumerList() {
 		return consumerList;
 	}
-	public ArrayList<CpsNode> getNodeList() {
+	public ArrayList<Node> getNodeList() {
 		return nodeList;
 	}
 	public ArrayList<DecoratedCable> getCableList() {
@@ -58,13 +58,16 @@ public class VisualRepresentationalState {
 	
 	//Reassignments:
 	private void reassignObjects(DecoratedState stateFromThisTimestep, MinimumModel minimumModel) {
-		HashMap<AbstractCpsObject, CpsUpperNode> inGroupObjects = minimumModel.getInGroupObjects();
-		HashMap<CpsEdge, CpsUpperNode> inGroupEdges = minimumModel.getInGroupEdges();
-		createdGroupNodes =  new HashMap<CpsUpperNode, DecoratedGroupNode>();
+		HashMap<AbstractCanvasObject, GroupNode> inGroupObjects = minimumModel.getInGroupObjects();
+		
+		//generate CableLookUp
+		HashMap<Edge, ArrayList<GroupNode>> inGroupEdges = minimumModel.getInGroupEdges();
+		
+		createdGroupNodes =  new HashMap<GroupNode, DecoratedGroupNode>();
 		
 		ArrayList<IntermediateCalculationCable> exitCables = new ArrayList<IntermediateCalculationCable>();
 		//createThem
-		for(CpsUpperNode groupNode :  minimumModel.getUppderNodeList()) {
+		for(GroupNode groupNode :  minimumModel.getUppderNodeList()) {
 			createdGroupNodes.put(groupNode, new DecoratedGroupNode(groupNode));
 		}
 		//unrolling Networks
@@ -94,15 +97,13 @@ public class VisualRepresentationalState {
 				}
 			}
 			for(DecoratedCable cable : net.getDecoratedCableList()) {
-				DecoratedGroupNode groupNodeFromObject = addObject(inGroupEdges, cable.getModel(), cableList ,cable, createdGroupNodes);
-				addCable(inGroupObjects, cable, groupNodeFromObject, exitCables);
+				addCable(cable, inGroupEdges, inGroupObjects,createdGroupNodes, exitCables);
 			}
 		}
 		for(DecoratedCable cable : stateFromThisTimestep.getLeftOverEdges()) {
-			DecoratedGroupNode groupNodeFromObject = addObject(inGroupEdges, cable.getModel(), cableList ,cable, createdGroupNodes);
-			addCable(inGroupObjects, cable, groupNodeFromObject, exitCables);
+			addCable(cable, inGroupEdges, inGroupObjects, createdGroupNodes, exitCables);
 		}
-		for(CpsNode node : minimumModel.getNodeList()) {
+		for(Node node : minimumModel.getNodeList()) {
 			DecoratedGroupNode groupNodeFromObject = addObject(inGroupObjects, node, nodeList ,node, createdGroupNodes);
 			if(groupNodeFromObject != null) {
 				addToGroupNode(node, groupNodeFromObject.getNodeList());
@@ -121,7 +122,7 @@ public class VisualRepresentationalState {
 			}
 		}
 		//Create TreeNodeModel:
-		HashMap<CpsUpperNode, TreeNode<TreeGroupNodeData>> fastaccess= new HashMap<CpsUpperNode, TreeNode<TreeGroupNodeData>>();
+		HashMap<GroupNode, TreeNode<TreeGroupNodeData>> fastaccess= new HashMap<GroupNode, TreeNode<TreeGroupNodeData>>();
 		TreeNode<TreeGroupNodeData> root = new TreeNode<TreeGroupNodeData>(null, new ArrayList<TreeNode<TreeGroupNodeData>>(), new TreeGroupNodeData(null, 0));
 		fastaccess.put(null, root);
 		for(DecoratedGroupNode dGroupNode: getGroupNodeList()) {
@@ -133,8 +134,8 @@ public class VisualRepresentationalState {
 	}
 
 
-	private void createExitEdgesV2(TreeNode<TreeGroupNodeData> root, DecoratedCable cable,  AbstractCpsObject insideObject,
-			CpsUpperNode insideUpperNode, AbstractCpsObject ousideObject, CpsUpperNode outsideUpperNode, HashMap<CpsUpperNode, TreeNode<TreeGroupNodeData>> fastaccess) {
+	private void createExitEdgesV2(TreeNode<TreeGroupNodeData> root, DecoratedCable cable,  AbstractCanvasObject insideObject,
+			GroupNode insideUpperNode, AbstractCanvasObject ousideObject, GroupNode outsideUpperNode, HashMap<GroupNode, TreeNode<TreeGroupNodeData>> fastaccess) {
 		//Create Up List
 		LinkedList<TreeNode<TreeGroupNodeData>> listFromStart = createList(insideUpperNode, fastaccess);
 		LinkedList<TreeNode<TreeGroupNodeData>> listFromEnd = createList(outsideUpperNode, fastaccess);
@@ -239,8 +240,8 @@ public class VisualRepresentationalState {
 	}
 
 
-	private LinkedList<TreeNode<TreeGroupNodeData>> createList(CpsUpperNode insideUpperNode,
-			HashMap<CpsUpperNode, TreeNode<TreeGroupNodeData>> fastaccess) {
+	private LinkedList<TreeNode<TreeGroupNodeData>> createList(GroupNode insideUpperNode,
+			HashMap<GroupNode, TreeNode<TreeGroupNodeData>> fastaccess) {
 		TreeNode<TreeGroupNodeData> actualNode = fastaccess.get(insideUpperNode);
 		LinkedList<TreeNode<TreeGroupNodeData>> list = new LinkedList<TreeNode<TreeGroupNodeData>>();
 		list.add(actualNode);
@@ -252,7 +253,7 @@ public class VisualRepresentationalState {
 	}
 
 
-	private void addCable(HashMap<AbstractCpsObject, CpsUpperNode> inGroupObjects, DecoratedCable cable,
+	private void addCable(HashMap<AbstractCanvasObject, GroupNode> inGroupObjects, DecoratedCable cable,
 			DecoratedGroupNode groupNodeFromObject,ArrayList<IntermediateCalculationCable> exitCables) {
 		if(groupNodeFromObject != null) {
 			boolean isIntern = inGroupObjects.get(cable.getModel().getA()) == inGroupObjects.get(cable.getModel().getB()); //Case null == null is not possible trough before Filtering MinimumModel#addUpperObjects(CpsUpperNode)
@@ -269,7 +270,37 @@ public class VisualRepresentationalState {
 			}
 		}
 	}
-
+	private void addCable(DecoratedCable cable, HashMap<Edge, ArrayList<GroupNode>> inGroupEdges, HashMap<AbstractCanvasObject, GroupNode> inGroupObjects,
+			HashMap<GroupNode, DecoratedGroupNode> createdGroupNodes, ArrayList<IntermediateCalculationCable> exitCables) {
+		boolean isInGroup = false;
+		if(inGroupObjects.containsKey(cable.getModel().getA())) {
+			isInGroup = true;
+		}
+		if(inGroupObjects.containsKey(cable.getModel().getB())) {
+			isInGroup = true;
+		}
+		if(isInGroup) {
+			
+			boolean isIntern = inGroupObjects.get(cable.getModel().getA()) == inGroupObjects.get(cable.getModel().getB()); //Case null == null is not possible trough before Filtering MinimumModel#addUpperObjects(CpsUpperNode)
+			if(isIntern) {
+				DecoratedGroupNode groupNodeFromBoth = createdGroupNodes.get(inGroupObjects.get(cable.getModel().getA()));
+				groupNodeFromBoth.getInternCableList().add(cable);				
+			}else {
+				//
+//				if(inGroupObjects.get(cable.getModel().getA()) == groupNodeFromObject.getModel() && inGroupObjects.get(cable.getModel().getB()) != groupNodeFromObject.getModel()) {					
+//					//addToGroupNode(new ExitCable(cable, groupNodeFromObject.getModel(),inGroupObjects.get(cable.getModel().getB()), cable.getModel().getA(), cable.getModel().getB()), groupNodeFromObject.getExitCableList());		
+//					exitCables.add(new IntermediateCalculationCable(cable, groupNodeFromObject.getModel(),inGroupObjects.get(cable.getModel().getB()), cable.getModel().getA(), cable.getModel().getB()));
+//				}else if(inGroupObjects.get(cable.getModel().getA()) != groupNodeFromObject.getModel() && inGroupObjects.get(cable.getModel().getB()) == groupNodeFromObject.getModel()) {					
+//					//addToGroupNode(new ExitCable(cable, groupNodeFromObject.getModel(),inGroupObjects.get(cable.getModel().getA()), cable.getModel().getB(), cable.getModel().getA()), groupNodeFromObject.getExitCableList());		
+//					exitCables.add(new IntermediateCalculationCable(cable, groupNodeFromObject.getModel(),inGroupObjects.get(cable.getModel().getA()), cable.getModel().getB(), cable.getModel().getA()));
+//				}
+//				
+				exitCables.add(new IntermediateCalculationCable(cable, inGroupObjects.get(cable.getModel().getA()),inGroupObjects.get(cable.getModel().getB()), cable.getModel().getA(), cable.getModel().getB()));
+			}
+		}else {
+			cableList.add(cable);					
+		}
+	}
 
 	private <DecoratedObject> void addToGroupNode(DecoratedObject object, ArrayList<DecoratedObject> groupNodeListPar) {
 		groupNodeListPar.add(object);
@@ -306,7 +337,7 @@ public class VisualRepresentationalState {
 	
 
 	//Generics
-	private <ModelOfObject, DecoratedObject> DecoratedGroupNode addObject(HashMap<ModelOfObject, CpsUpperNode> inGroupObjects, ModelOfObject modelOfObject, ArrayList<DecoratedObject> listToAdd, DecoratedObject object, HashMap<CpsUpperNode, DecoratedGroupNode> createdGroupNodes) {
+	private <ModelOfObject, DecoratedObject> DecoratedGroupNode addObject(HashMap<ModelOfObject, GroupNode> inGroupObjects, ModelOfObject modelOfObject, ArrayList<DecoratedObject> listToAdd, DecoratedObject object, HashMap<GroupNode, DecoratedGroupNode> createdGroupNodes) {
 		if(inGroupObjects.containsKey(modelOfObject)) {
 			return  createdGroupNodes.get(inGroupObjects.get(modelOfObject));
 		}
@@ -318,13 +349,13 @@ public class VisualRepresentationalState {
 		Nothing, Parent, Child
 	}
 	private class NodeInfo{
-		public CpsUpperNode groupNode;
+		public GroupNode groupNode;
 		public Info previous = Info.Nothing;
 		public Info next = Info.Nothing;
-		public CpsUpperNode previousGroupNode = null;
-		public CpsUpperNode nextGroupNode = null;
+		public GroupNode previousGroupNode = null;
+		public GroupNode nextGroupNode = null;
 		
-		public NodeInfo(CpsUpperNode groupNode) {
+		public NodeInfo(GroupNode groupNode) {
 			this.groupNode = groupNode;
 		}
 		public String toString() {
@@ -332,7 +363,7 @@ public class VisualRepresentationalState {
 		}
 		
 	}
-	public HashMap<CpsUpperNode, DecoratedGroupNode> getCreatedGroupNodes() {
+	public HashMap<GroupNode, DecoratedGroupNode> getCreatedGroupNodes() {
 		return createdGroupNodes;
 	}
 	private class TreeNode<T> {
@@ -361,9 +392,9 @@ public class VisualRepresentationalState {
 		}
 	}
 	private class TreeGroupNodeData{
-		public CpsUpperNode groupNode;
+		public GroupNode groupNode;
 		public int layer;
-		public TreeGroupNodeData(CpsUpperNode groupNode, int layer) {
+		public TreeGroupNodeData(GroupNode groupNode, int layer) {
 			this.groupNode = groupNode;
 			this.layer = layer;
 		}
@@ -372,7 +403,7 @@ public class VisualRepresentationalState {
 		}
 	}
 	
-	private void addTreeNode(TreeNode<TreeGroupNodeData> node, DecoratedGroupNode dGroupNode, int layer, HashMap<CpsUpperNode, TreeNode<TreeGroupNodeData>> fastaccess) {
+	private void addTreeNode(TreeNode<TreeGroupNodeData> node, DecoratedGroupNode dGroupNode, int layer, HashMap<GroupNode, TreeNode<TreeGroupNodeData>> fastaccess) {
 		TreeNode<TreeGroupNodeData> newNode = new TreeNode<TreeGroupNodeData> (node, new ArrayList<TreeNode<TreeGroupNodeData>>() , new TreeGroupNodeData(dGroupNode.getModel(), layer));
 		node.getChildren().add(newNode);
 		fastaccess.put(newNode.data.groupNode, newNode);

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

@@ -49,14 +49,14 @@ public abstract class AbstractCanvas extends JPanel {
 	protected int x = 0;
 	protected int y = 0;
 	// Selection
-	AbstractCpsObject tempCps = null;
+	AbstractCanvasObject tempCps = null;
 	UpdateController updCon;
 	
 	//Replacement
 	/**
 	 * the CpsObject that might be replaced by drag&drop
 	 */
-	protected AbstractCpsObject mayBeReplaced = null;
+	protected AbstractCanvasObject mayBeReplaced = null;
 	
 	// PopUpMenu
 	JPopupMenu popmenu = new JPopupMenu();
@@ -65,14 +65,14 @@ public abstract class AbstractCanvas extends JPanel {
 	Position toolTipPos = new Position(); // Tooltip Position
 	String toolTipText = "";
 	ArrayList<HolonElement> dataSelected = new ArrayList<>();
-	ArrayList<AbstractCpsObject> tempSelected = new ArrayList<>();
+	ArrayList<AbstractCanvasObject> tempSelected = new ArrayList<>();
 	boolean[] showedInformation = new boolean[5];
 	boolean showConnectionInformation;
 	boolean dragging = false; // for dragging
 	boolean dragged = false; // if an object/objects was/were dragged
 	boolean drawEdge = false; // for drawing edges
 	boolean doMark = false; // for double click
-	CpsEdge edgeHighlight = null;
+	Edge edgeHighlight = null;
 	Point mousePosition = new Point(); // Mouse Position when
 	ArrayList<Position> savePos;
 	// edge Object Start Point
@@ -83,7 +83,7 @@ public abstract class AbstractCanvas extends JPanel {
 	Timer animT; // animation Timer
 	int animDuration = ANIMTIME; // animation Duration
 	int animSteps = animDuration / animDelay; // animation Steps;
-	ArrayList<AbstractCpsObject> animCps = null;
+	ArrayList<AbstractCanvasObject> animCps = null;
 	// Graphics
 	Image img = null; // Contains the image to draw on the Canvas
 	Graphics2D g2; // For Painting
@@ -99,8 +99,8 @@ public abstract class AbstractCanvas extends JPanel {
 	
 
 	class ACpsHandle{
-		public AbstractCpsObject object;
-		ACpsHandle(AbstractCpsObject object){
+		public AbstractCanvasObject object;
+		ACpsHandle(AbstractCanvasObject object){
 			this.object = object;
 		}
 		public String toString() {
@@ -167,7 +167,7 @@ public abstract class AbstractCanvas extends JPanel {
 					itemUntrack.setEnabled(true);
 				}
 				// ungrouping
-				if (tempCps instanceof CpsUpperNode)
+				if (tempCps instanceof GroupNode)
 					itemUngroup.setEnabled(true);
 				else
 					itemUngroup.setEnabled(false);
@@ -204,7 +204,7 @@ public abstract class AbstractCanvas extends JPanel {
 	void markObjects() {
 		if (doMark) {
 			doMark = false;
-			for (AbstractCpsObject cps : tempSelected) {
+			for (AbstractCanvasObject cps : tempSelected) {
 				if (!model.getSelectedCpsObjects().contains(cps)) {
 					controller.addSelectedObject(cps);
 				}
@@ -215,7 +215,7 @@ public abstract class AbstractCanvas extends JPanel {
 	}
 
 
-	int[] determineMousePositionOnEdge(CpsEdge p) {
+	int[] determineMousePositionOnEdge(Edge p) {
 		int lx, ly, hx, hy;
 
 		if (p.getA().getPosition().x > p.getB().getPosition().x) {
@@ -258,7 +258,7 @@ public abstract class AbstractCanvas extends JPanel {
 		return false;
 	}
 
-	boolean setToolTipInfoAndPosition(boolean on, AbstractCpsObject cps) {
+	boolean setToolTipInfoAndPosition(boolean on, AbstractCanvasObject cps) {
 		if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy) {
 			on = true;
 			toolTipPos.x = cps.getPosition().x - controller.getScaleDiv2();
@@ -288,7 +288,7 @@ public abstract class AbstractCanvas extends JPanel {
 	 * @param y Position of the objects that might replace
 	 * @return true if exactly one Object could be replaced 
 	 */
-	protected boolean checkForReplacement(ArrayList<AbstractCpsObject> objects, AbstractCpsObject draggedCps, int x, int y){
+	protected boolean checkForReplacement(ArrayList<AbstractCanvasObject> objects, AbstractCanvasObject draggedCps, int x, int y){
 		
 		/** distance treshold for replacement */
 		int treshhold = controller.getScale()/2;
@@ -297,14 +297,14 @@ public abstract class AbstractCanvas extends JPanel {
 		int replaceCounter = 0;
 		
 		/** last object that could be replaced */
-		AbstractCpsObject toBeReplaced = null;
+		AbstractCanvasObject toBeReplaced = null;
 		
 		/** Position of object that might be replaced */
 		Position p;
 		
 		/** for each cps on Canvas */
-		if(draggedCps == null || !(draggedCps instanceof CpsNode) && !(draggedCps instanceof CpsNode)){
-			for (AbstractCpsObject cps : objects){
+		if(draggedCps == null || !(draggedCps instanceof Node) && !(draggedCps instanceof Node)){
+			for (AbstractCanvasObject cps : objects){
 				/** same object -> ignore */
 				if(cps == draggedCps)continue;
 						
@@ -374,7 +374,7 @@ public abstract class AbstractCanvas extends JPanel {
 	 * @param cps Object that should be aligned
 	 * @param distance distance between the AlignmentGrid Lines. (objects every 'distance' pixels
 	 */
-	protected void align(AbstractCpsObject cps, int distance) {
+	protected void align(AbstractCanvasObject cps, int distance) {
 		/** Position of the AbstractCpsObject which should be aligned */
 		Position p = cps.getPosition();
 		

+ 3 - 3
src/ui/view/AddElementPopUp.java

@@ -1,6 +1,6 @@
 package ui.view;
 
-import classes.AbstractCpsObject;
+import classes.AbstractCanvasObject;
 import classes.HolonElement;
 import classes.HolonObject;
 import ui.model.Model;
@@ -26,7 +26,7 @@ public class AddElementPopUp extends JDialog {
 	private static final long serialVersionUID = 1L;
 	/* Data */
 	/** Holon Object the Element should be added to */
-	private AbstractCpsObject tempCps;
+	private AbstractCanvasObject tempCps;
 	/** Holon Element that should be edited (if in edit Modus */
 	private HolonElement hl;
 	
@@ -154,7 +154,7 @@ public class AddElementPopUp extends JDialog {
 	 * @param cps
 	 *            actual Cps
 	 */
-	void setActualCps(AbstractCpsObject cps) {
+	void setActualCps(AbstractCanvasObject cps) {
 		this.tempCps = cps;
 	}
 

+ 4 - 4
src/ui/view/AddObjectPopUp.java

@@ -1,6 +1,6 @@
 package ui.view;
 
-import classes.AbstractCpsObject;
+import classes.AbstractCanvasObject;
 import classes.HolonBattery;
 import classes.HolonElement;
 import classes.HolonObject;
@@ -40,7 +40,7 @@ public class AddObjectPopUp extends JDialog {
 	private String filePath = " ";
 	private String givenCategory;
 	private JLabel lblImagePreview;
-	private AbstractCpsObject toEdit;
+	private AbstractCanvasObject toEdit;
 	private boolean editState;
 	private boolean imageChanged = false;
 	private Model model;
@@ -71,7 +71,7 @@ public class AddObjectPopUp extends JDialog {
 	 * @param cat
 	 *            the categorie
 	 */
-    AddObjectPopUp(boolean edit, AbstractCpsObject obj, String cat, JFrame parentFrame) {
+    AddObjectPopUp(boolean edit, AbstractCanvasObject obj, String cat, JFrame parentFrame) {
     	if(obj  instanceof HolonBattery)
     	{
     		BatteryPopUp(edit, obj, cat, parentFrame);
@@ -284,7 +284,7 @@ public class AddObjectPopUp extends JDialog {
 			}
 		}
 	}
-    protected void BatteryPopUp(boolean edit, AbstractCpsObject obj, String cat, JFrame parentFrame) {
+    protected void BatteryPopUp(boolean edit, AbstractCanvasObject obj, String cat, JFrame parentFrame) {
     	//TODO: Click mich <3 
     	HolonBattery editBat = (HolonBattery) obj;
     	//Window Settings

+ 2 - 2
src/ui/view/BackgroundPopUp.java

@@ -1,6 +1,6 @@
 package ui.view;
 
-import classes.CpsUpperNode;
+import classes.GroupNode;
 import ui.controller.Control;
 import ui.model.Model;
 
@@ -48,7 +48,7 @@ public class BackgroundPopUp extends JDialog {
     private boolean imageBtnClearedPressed = false;
     private int mode = 0;
 
-    public BackgroundPopUp(Model model, Control controller, MyCanvas canvas, CpsUpperNode uNode, JFrame parentFrame) {
+    public BackgroundPopUp(Model model, Control controller, MyCanvas canvas, GroupNode uNode, JFrame parentFrame) {
         super((java.awt.Frame) null, true);
 		getContentPane().setBackground(Color.WHITE);
 		this.setTitle("Set View Background");

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

@@ -1,6 +1,6 @@
 package ui.view;
 
-import classes.AbstractCpsObject;
+import classes.AbstractCanvasObject;
 import classes.Category;
 import classes.HolonElement;
 import classes.HolonObject;

+ 4 - 22
src/ui/view/EditEdgesPopUp.java

@@ -1,8 +1,8 @@
 package ui.view;
 
-import classes.AbstractCpsObject;
-import classes.CpsEdge;
-import classes.CpsUpperNode;
+import classes.AbstractCanvasObject;
+import classes.Edge;
+import classes.GroupNode;
 import ui.controller.Control;
 
 import javax.swing.*;
@@ -161,32 +161,14 @@ public class EditEdgesPopUp extends JDialog {
 		 * controller.getSimManager().getBrokenEdges()){ edge.setCapacity(cap);
 		 * }
 		 */
-		for (CpsEdge edge : controller.getModel().getEdgesOnCanvas()) {
+		for (Edge edge : controller.getModel().getEdgesOnCanvas()) {
 			edge.setCapacity(cap);
         }
-        for (AbstractCpsObject abs : controller.getModel().getObjectsOnCanvas()) {
-			if (abs instanceof CpsUpperNode) {
-				changeInUpperNode((CpsUpperNode) abs, cap);
-			}
-		}
 		controller.resetSimulation();
 		controller.calculateStateAndVisualForCurrentTimeStep();
 		canvas.repaint();
 	}
 
-	public void changeInUpperNode(CpsUpperNode uN, float cap) {
-		for (CpsEdge e : uN.getNodeEdges()) {
-			e.setCapacity(cap);
-		}
-		for (CpsEdge e : uN.getOldEdges()) {
-			e.setCapacity(cap);
-		}
-		for (AbstractCpsObject abs : uN.getNodes()) {
-			if (abs instanceof CpsUpperNode) {
-				changeInUpperNode((CpsUpperNode) abs, cap);
-			}
-		}
-	}
 
 	/**
 	 * Set the Capacity for all existing and new edges.

+ 10 - 10
src/ui/view/FlexWindow.java

@@ -48,9 +48,9 @@ import javax.swing.tree.DefaultMutableTreeNode;
 import javax.swing.tree.DefaultTreeModel;
 import javax.swing.tree.TreePath;
 
-import classes.AbstractCpsObject;
+import classes.AbstractCanvasObject;
 import classes.Constrain;
-import classes.CpsUpperNode;
+import classes.GroupNode;
 import classes.Flexibility;
 import classes.HolonElement;
 import classes.HolonElement.Priority;
@@ -332,10 +332,10 @@ public class FlexWindow extends JFrame {
 		
 		listOfAllSelectedHolonObjects.removeAllChildren();
 		//Init with HolonObjects
-		for(AbstractCpsObject aCps: model.getSelectedCpsObjects()) {
+		for(AbstractCanvasObject aCps: model.getSelectedCpsObjects()) {
 			DefaultMutableTreeNode newObjectChild = new DefaultMutableTreeNode(aCps.getName() + " ID:" + aCps.getId());
 			if(aCps instanceof HolonObject) expandTreeHolonObject((HolonObject)aCps, newObjectChild);
-			if(aCps instanceof CpsUpperNode)expandTreeUpperNode((CpsUpperNode)aCps, newObjectChild);
+			if(aCps instanceof GroupNode)expandTreeUpperNode((GroupNode)aCps, newObjectChild);
 			listOfAllSelectedHolonObjects.add(newObjectChild);
 		}
 		treeModel.nodeStructureChanged(listOfAllSelectedHolonObjects);
@@ -368,11 +368,11 @@ public class FlexWindow extends JFrame {
 
 
 
-	private void expandTreeUpperNode(CpsUpperNode groupNode, DefaultMutableTreeNode root) {
-		for(AbstractCpsObject aCps: groupNode.getNodes()) {
+	private void expandTreeUpperNode(GroupNode groupNode, DefaultMutableTreeNode root) {
+		for(AbstractCanvasObject aCps: groupNode.getNodes()) {
 			DefaultMutableTreeNode newObjectChild = new DefaultMutableTreeNode(aCps.getName() + " ID:" + aCps.getId());
 			if(aCps instanceof HolonObject) expandTreeHolonObject((HolonObject)aCps, newObjectChild);
-			if(aCps instanceof CpsUpperNode)expandTreeUpperNode((CpsUpperNode)aCps, newObjectChild);
+			if(aCps instanceof GroupNode)expandTreeUpperNode((GroupNode)aCps, newObjectChild);
 			root.add(newObjectChild);
 		}
 		
@@ -422,11 +422,11 @@ public class FlexWindow extends JFrame {
 	
 	
 	
-	private List<HolonObject> createListOfHolonObjects(List<AbstractCpsObject> objectsOnCanvas) {
+	private List<HolonObject> createListOfHolonObjects(List<AbstractCanvasObject> objectsOnCanvas) {
 		List<HolonObject> list = new ArrayList<HolonObject>();
-		for(AbstractCpsObject aCps :  objectsOnCanvas) {
+		for(AbstractCanvasObject aCps :  objectsOnCanvas) {
 			if(aCps instanceof HolonObject) list.add((HolonObject) aCps);
-			else if (aCps instanceof CpsUpperNode) list.addAll(createListOfHolonObjects(((CpsUpperNode)aCps).getNodes()));
+			else if (aCps instanceof GroupNode) list.addAll(createListOfHolonObjects(((GroupNode)aCps).getNodes()));
 		}
 		return list;
 	}

+ 2 - 2
src/ui/view/FlexiblePane.java

@@ -12,7 +12,7 @@ import javax.swing.BoxLayout;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 
-import classes.AbstractCpsObject;
+import classes.AbstractCanvasObject;
 import classes.HolonObject;
 import classes.SubNet;
 import interfaces.ObjectListener;
@@ -106,7 +106,7 @@ public class FlexiblePane extends JScrollPane implements ObjectListener {
 	}
 
 	@Override
-	public void onChange(ArrayList<AbstractCpsObject> objects) {
+	public void onChange(ArrayList<AbstractCanvasObject> objects) {
 		recalculate();
 	}
 

+ 32 - 33
src/ui/view/GUI.java

@@ -281,7 +281,7 @@ public class GUI implements CategoryListener {
 	private boolean dragging = false;
 	private String actualObjectClicked;
 	private Image img = null;
-	private AbstractCpsObject tempCps = null;
+	private AbstractCanvasObject tempCps = null;
 	private int yValueElements = 0;
 	// Time Stuff
 	private TimePanel timePanel;
@@ -300,7 +300,7 @@ public class GUI implements CategoryListener {
 	private int xProThis;
 	private int yProThisOneClick;
 	private int xProThisOneClick;
-	private AbstractCpsObject temp = null;
+	private AbstractCanvasObject temp = null;
 	private String warningText = "Warning";
 	private String saveBeforeNew = "Do you want to save your current data?";
 	private String eraseCategory = "Do you really want to delete the Category ";
@@ -385,8 +385,9 @@ public class GUI implements CategoryListener {
 					} catch (Exception e) {
 						e.printStackTrace();
 					}
-					System.exit(0);
+					System.exit(1);
 				}
+				System.exit(0);
 			}
 		});
 
@@ -459,13 +460,13 @@ public class GUI implements CategoryListener {
 
 				if (canvasOrUpperNodeCanvas instanceof UpperNodeCanvas) {
 					UpperNodeCanvas uNC = (UpperNodeCanvas) canvasOrUpperNodeCanvas;
-					for (AbstractCpsObject cps : uNC.upperNode.getNodes()) {
+					for (AbstractCanvasObject cps : uNC.upperNode.getNodes()) {
 						controller.addSelectedObject(cps);
 					}
 					uNC.repaint();
 					// or Canvas?
 				} else if (canvasOrUpperNodeCanvas instanceof MyCanvas) {
-					for (AbstractCpsObject cps : model.getObjectsOnCanvas()) {
+					for (AbstractCanvasObject cps : model.getObjectsOnCanvas()) {
 						controller.addSelectedObject(cps);
 					}
 					canvas.repaint();
@@ -498,7 +499,7 @@ public class GUI implements CategoryListener {
 
 				if (canvasOrUpperNodeCanvas instanceof UpperNodeCanvas) {
 					UpperNodeCanvas uNC = (UpperNodeCanvas) canvasOrUpperNodeCanvas;
-					for (AbstractCpsObject cps : model.getSelectedCpsObjects()) {
+					for (AbstractCanvasObject cps : model.getSelectedCpsObjects()) {
 
 
 						controller.removeTrackingObj(cps);
@@ -516,17 +517,17 @@ public class GUI implements CategoryListener {
 				} else if (canvasOrUpperNodeCanvas instanceof MyCanvas) {
 					boolean save = false;
 					// Edge Deleting
-					CpsEdge edgeHighlight = model.getSelectedEdge();
+					Edge edgeHighlight = model.getSelectedEdge();
 					if (edgeHighlight != null) {
 						controller.removeEdgesOnCanvas(edgeHighlight);
 						// Look for a CPSNode with no Connections and delete
 						// them
-						if (edgeHighlight.getA().getClass() == CpsNode.class
+						if (edgeHighlight.getA().getClass() == Node.class
 								&& edgeHighlight.getA().getConnections().size() == 0) {
 							controller.delCanvasObject(edgeHighlight.getA(),
 									false);
 						}
-						if (edgeHighlight.getB().getClass() == CpsNode.class
+						if (edgeHighlight.getB().getClass() == Node.class
 								&& edgeHighlight.getB().getConnections().size() == 0) { // Look
 																						// on
 																						// the
@@ -541,7 +542,7 @@ public class GUI implements CategoryListener {
 						((MyCanvas) canvasOrUpperNodeCanvas).edgeHighlight = null;
 					}
 					for (int j = 0; j < model.getSelectedCpsObjects().size(); j++) {
-						AbstractCpsObject cps = model.getSelectedCpsObjects()
+						AbstractCanvasObject cps = model.getSelectedCpsObjects()
 								.get(j);
 
 					
@@ -1195,7 +1196,7 @@ public class GUI implements CategoryListener {
 		 */
 		btnAddHolEL.addActionListener(actionEvent -> {
 			if (model.getSelectedCpsObjects().size() == 1) {
-				AbstractCpsObject tempCpsObject = updCon.getActualCps();
+				AbstractCanvasObject tempCpsObject = updCon.getActualCps();
 				if (tempCpsObject != null
 						&& tempCpsObject.getClass() == HolonObject.class
 						&& tempCpsObject.getId() != 0) {
@@ -1609,7 +1610,7 @@ public class GUI implements CategoryListener {
 						}
 					}
 				} // Case: UpperNode selected
-				else if (updCon.getActualCps() instanceof CpsUpperNode
+				else if (updCon.getActualCps() instanceof GroupNode
 						&& selValueX != 0) {
 					// Name edition through double click
 					updCon.getActualCps().setName(temp.toString());
@@ -1716,7 +1717,7 @@ public class GUI implements CategoryListener {
 				Image imgR;
 				if (leaf) {
 					for (Category cat : model.getCategories()) {
-						for (AbstractCpsObject cps : cat.getObjects()) {
+						for (AbstractCanvasObject cps : cat.getObjects()) {
 							if (value.toString().compareTo(cps.getObjName()) == 0) {
 								imgR = Util.loadImage(cps.getImage(), 50,
 										50);
@@ -1840,7 +1841,7 @@ public class GUI implements CategoryListener {
 
 							if (x > unc.upperNode.getLeftBorder()) {
 
-								AbstractCpsObject h = null;
+								AbstractCanvasObject h = null;
 								if (tempCps instanceof HolonObject) {
 									h = new HolonObject(tempCps);
 								}
@@ -1856,7 +1857,7 @@ public class GUI implements CategoryListener {
 								/**
 								 * close UpperNodeTabs of replaced UpperNode
 								 */
-								if(unc.mayBeReplaced!=null &&unc.mayBeReplaced instanceof CpsUpperNode){
+								if(unc.mayBeReplaced!=null &&unc.mayBeReplaced instanceof GroupNode){
 									unc.closeUpperNodeTab(unc.mayBeReplaced.getId());
 								}
 								controller.addObjUpperNode(h, unc.upperNode);
@@ -1876,16 +1877,14 @@ public class GUI implements CategoryListener {
 							int x = (int) canvas.getMousePosition().getX() + 16;
 							int y = (int) canvas.getMousePosition().getY() + 16;
 
-							AbstractCpsObject h = null;
+							AbstractCanvasObject h = null;
 							if (tempCps instanceof HolonObject) {
 								h = new HolonObject(tempCps);
 							}
 							if (tempCps instanceof HolonSwitch) {
 								h = new HolonSwitch(tempCps);
 							}
-							if (tempCps instanceof HolonTransformer) {
-								h = new HolonTransformer(tempCps);
-							}
+							
 							if (tempCps instanceof HolonBattery)
 							{
 								h = new HolonBattery(tempCps);
@@ -1895,7 +1894,7 @@ public class GUI implements CategoryListener {
 							/**
 							 * close UpperNodeTabs of replaced UpperNode
 							 */
-							if(canvas.mayBeReplaced!=null &&canvas.mayBeReplaced instanceof CpsUpperNode){
+							if(canvas.mayBeReplaced!=null &&canvas.mayBeReplaced instanceof GroupNode){
 								canvas.closeUpperNodeTab(canvas.mayBeReplaced.getId());
 							}
 							controller.addObjectCanvas(h);
@@ -1951,7 +1950,7 @@ public class GUI implements CategoryListener {
 					}
 					if (SwingUtilities.isRightMouseButton(e)) {
 						for (Category cat : model.getCategories()) {
-							for (AbstractCpsObject cps : cat.getObjects()) {
+							for (AbstractCanvasObject cps : cat.getObjects()) {
 								if (actualObjectClicked.compareTo(cps
 										.getObjName()) == 0
 										&& !(cps instanceof HolonSwitch)) {
@@ -1966,7 +1965,7 @@ public class GUI implements CategoryListener {
 						}
 					} else {
 						for (Category cat : model.getCategories()) {
-							for (AbstractCpsObject cps : cat.getObjects()) {
+							for (AbstractCanvasObject cps : cat.getObjects()) {
 								if (actualObjectClicked.compareTo(cps
 										.getObjName()) == 0) {
 									File checkPath = new File(cps.getImage());
@@ -2132,7 +2131,7 @@ public class GUI implements CategoryListener {
 
 				// New Tab with NodeOfNode
 				if (doubleClick() && MouseEvent.BUTTON3 != e.getButton()
-						&& temp instanceof CpsUpperNode) {
+						&& temp instanceof GroupNode) {
 					openNewUpperNodeTab();
 					try {
 						controller.autoSave();
@@ -2678,7 +2677,7 @@ public class GUI implements CategoryListener {
 					node1 = new DefaultMutableTreeNode(c.getName());
 
 					// kann eventuell umgeändert werden
-					for (AbstractCpsObject obj : c.getObjects()) {
+					for (AbstractCanvasObject obj : c.getObjects()) {
 						node1.add(new DefaultMutableTreeNode(obj.getObjName()));
 					}
 					add(node1);
@@ -2791,11 +2790,11 @@ public class GUI implements CategoryListener {
 		JScrollPane scrollPane = getScrollPaneFromTabbedPane();
 		if (scrollPane.getViewport().getComponent(0) instanceof MyCanvas) {
 			unc = new UpperNodeCanvas(model, controller, unitGraph,
-					(CpsUpperNode) temp, "", scrollPane.getViewport().getComponent(0));
+					(GroupNode) temp, "", scrollPane.getViewport().getComponent(0));
 
 		} else {
 			unc = new UpperNodeCanvas(model, controller, unitGraph,
-					(CpsUpperNode) temp, ((UpperNodeCanvas) scrollPane
+					(GroupNode) temp, ((UpperNodeCanvas) scrollPane
 							.getViewport().getComponent(0)).path + " -> ", scrollPane.getViewport().getComponent(0));
 		}
 		unc.setShowedInformation(canvas.getShowedInformation());
@@ -2866,7 +2865,7 @@ public class GUI implements CategoryListener {
 					temp = ((UpperNodeCanvas) scrollPane1.getViewport()
 							.getComponent(0)).tempCps;
 					if (doubleClick() && MouseEvent.BUTTON3 != e.getButton()
-							&& temp instanceof CpsUpperNode) {
+							&& temp instanceof GroupNode) {
 						openNewUpperNodeTab();
 					}
 					if (temp instanceof HolonSwitch) {
@@ -2919,7 +2918,7 @@ public class GUI implements CategoryListener {
 			if (pane instanceof UpperNodeCanvas) {
 				temp = model.getHashcodeMap()
 						.get(((UpperNodeCanvas) pane).code);
-				((UpperNodeCanvas) pane).upperNode = (CpsUpperNode) temp;
+				((UpperNodeCanvas) pane).upperNode = (GroupNode) temp;
 			}
 		}
 	}
@@ -2930,8 +2929,8 @@ public class GUI implements CategoryListener {
 	 * @param cps
 	 *            the CPS object that is currently selected
 	 */
-	private void removeUpperNodeTab(AbstractCpsObject cps) {
-		if (cps instanceof CpsUpperNode) {
+	private void removeUpperNodeTab(AbstractCanvasObject cps) {
+		if (cps instanceof GroupNode) {
 			boolean splitView = false;
 			for (int i = 1; i < tabbedPaneInnerOriginal.getTabCount(); i++) {
 				JScrollPane scrollPaneOriginal = (JScrollPane) tabbedPaneInnerOriginal
@@ -2969,7 +2968,7 @@ public class GUI implements CategoryListener {
 
 		// Saved Values
 		JsonObject obj;
-		AbstractCpsObject cps;
+		AbstractCanvasObject cps;
 		int prop;
 		Color color;
 
@@ -3044,7 +3043,7 @@ public class GUI implements CategoryListener {
 	}
 
 	private void repaintGraphAfterUndoRedo() {
-		for (AbstractCpsObject cps : model.getObjectsOnCanvas()) {
+		for (AbstractCanvasObject cps : model.getObjectsOnCanvas()) {
 			unitGraph.repaintGraph(cps);
 		}
 	}
@@ -3073,7 +3072,7 @@ public class GUI implements CategoryListener {
 				selectedValueBY, 2);
 	}
 
-	public void triggerUpdateController(AbstractCpsObject temp) {
+	public void triggerUpdateController(AbstractCanvasObject temp) {
 		if(model != null) { return;}
 		if (temp != null) {
 			updCon.paintProperties(temp);

+ 55 - 55
src/ui/view/MyCanvas.java

@@ -100,7 +100,7 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 			// calculate uppernode pos (taken from the controller)
 				unPos = new Position(0, 0);
 				animCps = new ArrayList<>();
-				for (AbstractCpsObject cps : model.getSelectedCpsObjects()) {
+				for (AbstractCanvasObject cps : model.getSelectedCpsObjects()) {
 					animCps.add(cps); // add to animation Cps ArrayList
 					unPos.x += cps.getPosition().x;
 					unPos.y += cps.getPosition().y;
@@ -118,7 +118,7 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 
 				animT = new javax.swing.Timer(animDelay, actionEvent1 -> {
 					if (animDuration - animDelay > 0 && animCps.size() > 1) {
-						for (AbstractCpsObject animCpObject : animCps) {
+						for (AbstractCanvasObject animCpObject : animCps) {
 							double x1 = animCpObject.getPosition().x - unPos.x;
 							double y1 = animCpObject.getPosition().y - unPos.y;
 							animCpObject.getPosition().x -= x1 / animSteps;
@@ -153,15 +153,15 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 					closeUpperNodeTab(upperNodeId);
 
 					savePos = new ArrayList<>();
-					animCps = ((CpsUpperNode) tempCps).getNodes();
-					controller.delUpperNode((CpsUpperNode) tempCps, null);
+					animCps = ((GroupNode) tempCps).getNodes();
+					controller.delUpperNode((GroupNode) tempCps, null);
 
 					for (int i = 0; i < animCps.size(); i++) {
 						savePos.add(new Position(0, 0));
 						savePos.get(i).x = animCps.get(i).getPosition().x;
 						savePos.get(i).y = animCps.get(i).getPosition().y;
 					}
-					for (AbstractCpsObject cps : animCps) {
+					for (AbstractCanvasObject cps : animCps) {
 						int x = tempCps.getPosition().x;
 						int y = tempCps.getPosition().y;
 
@@ -203,7 +203,7 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 
 		// adds the selected object(s) to the statistic panel
 		itemTrack.addActionListener(actionEvent -> {
-			for (AbstractCpsObject o : model.getSelectedCpsObjects()) {
+			for (AbstractCanvasObject o : model.getSelectedCpsObjects()) {
 				if (!((controller.getTrackingObj() != null) && (controller.getTrackingObj().contains(o)))) {
 					controller.addTrackingObj(o);
 					if (o instanceof HolonObject) {
@@ -214,11 +214,11 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 		});
 
 		itemUntrack.addActionListener(actionEvent -> {
-			for (AbstractCpsObject o : model.getSelectedCpsObjects()) {
+			for (AbstractCanvasObject o : model.getSelectedCpsObjects()) {
 				if (o instanceof HolonObject) {
 					boolean found = false;
 					if (controller.getTrackingObj() != null) {
-						for (AbstractCpsObject obj : controller
+						for (AbstractCanvasObject obj : controller
 								.getTrackingObj()) {
 							if (obj instanceof HolonObject) {
 								if (obj.getId() == o.getId()) {
@@ -244,24 +244,24 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 				if (tempCps == null && edgeHighlight != null) {
 					controller.removeEdgesOnCanvas(edgeHighlight);
 					//Look for a CPSNode with no Connections and delete them
-					if(edgeHighlight.getA().getClass() == CpsNode.class && edgeHighlight.getA().getConnections().size() == 0){ 
+					if(edgeHighlight.getA().getClass() == Node.class && edgeHighlight.getA().getConnections().size() == 0){ 
 						controller.delCanvasObject(edgeHighlight.getA(), false);	
 					}
-					if(edgeHighlight.getB().getClass() == CpsNode.class && edgeHighlight.getB().getConnections().size() == 0){ //Look on the other end of the cable
+					if(edgeHighlight.getB().getClass() == Node.class && edgeHighlight.getB().getConnections().size() == 0){ //Look on the other end of the cable
 						controller.delCanvasObject(edgeHighlight.getB(), false);
 					}
 					edgeHighlight = null;
 				}
 				boolean save = false;
 				for (int j = 0; j < model.getSelectedCpsObjects().size(); j++) {
-					AbstractCpsObject cps = model.getSelectedCpsObjects()
+					AbstractCanvasObject cps = model.getSelectedCpsObjects()
 							.get(j);
 					if (j == model.getSelectedCpsObjects().size() - 1)
 						save = true;
 					controller.delCanvasObject(cps, save);
 					controller.removeTrackingObj(cps);
 					// Remove UpperNodeTab if UpperNode deleted
-				if (cps instanceof CpsUpperNode) {
+				if (cps instanceof GroupNode) {
 					JSplitPane tempSplit = (JSplitPane) getParent().getParent()
 							.getParent().getParent();
 					JTabbedPane tabbedPane;
@@ -317,7 +317,7 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 		});
 
 		itemCopy.addActionListener(actionEvent -> {
-			if(tempCps instanceof CpsUpperNode)
+			if(tempCps instanceof GroupNode)
 				controller.getObjectsInDepth();
 			controller.copy(null);
 			itemPaste.setEnabled(true);
@@ -326,7 +326,7 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 
 		itemAlign.addActionListener(actionEvent ->
 		{
-			for(AbstractCpsObject cps: model.getSelectedCpsObjects())
+			for(AbstractCanvasObject cps: model.getSelectedCpsObjects())
 				align(cps, model.getScaleDiv2());
 			repaint();
 		});
@@ -571,9 +571,9 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 		}
 		//<--
 		//SelectedCable
-		HashSet<CpsEdge> selectedEdges = new HashSet<CpsEdge>();
-		for(AbstractCpsObject aCps:  model.getSelectedCpsObjects()) {
-			for(CpsEdge edge: aCps.getConnections()) {
+		HashSet<Edge> selectedEdges = new HashSet<Edge>();
+		for(AbstractCanvasObject aCps:  model.getSelectedCpsObjects()) {
+			for(Edge edge: aCps.getConnections()) {
 				selectedEdges.add(edge);
 			}
 		}
@@ -606,7 +606,7 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 		for(DecoratedSwitch dSwitch : visualState.getSwitchList()) {
 				paintSwitch(g2d, dSwitch);
 		}
-		for(CpsNode node : visualState.getNodeList()) {
+		for(Node node : visualState.getNodeList()) {
 			drawCanvasObject(g2d, "/Images/node.png" , node.getPosition());
 		}
 		
@@ -621,8 +621,8 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 		g2d.setColor(Color.BLUE);
 		g2d.setStroke(new BasicStroke(1));
 		Color transparentGrey = new Color(128, 174, 247, 40);
-		for(AbstractCpsObject aCps:  model.getSelectedCpsObjects()) {
-			if(aCps instanceof CpsNode) {
+		for(AbstractCanvasObject aCps:  model.getSelectedCpsObjects()) {
+			if(aCps instanceof Node) {
 				Position pos = aCps.getPosition();
 				g2d.setColor(transparentGrey);
 				g2d.fillOval(pos.x - (int) (controller.getScaleDiv2()), pos.y - (int) (controller.getScaleDiv2()),  controller.getScale(),  controller.getScale());
@@ -685,7 +685,7 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 		edgeHighlight = null;
 		controller.setSelecteEdge(null);
 		// Object Selection
-		for (AbstractCpsObject cps : model.getObjectsOnCanvas()) {
+		for (AbstractCanvasObject cps : model.getObjectsOnCanvas()) {
 			cx = cps.getPosition().x - controller.getScaleDiv2();
 			cy = cps.getPosition().y - controller.getScaleDiv2();
 			if (x - controller.getScale() <= cx
@@ -701,7 +701,7 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 							//TODO: RemoveDepth
 					} else {
 						controller.addSelectedObject(tempCps);
-						if(tempCps instanceof CpsUpperNode)
+						if(tempCps instanceof GroupNode)
 							controller.getObjectsInDepth();
 					}
 
@@ -772,7 +772,7 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 				/**
             	 * if UpperNode would be replaced, close its tabs
             	 */
-            	if(mayBeReplaced instanceof CpsUpperNode)
+            	if(mayBeReplaced instanceof GroupNode)
             		closeUpperNodeTab(mayBeReplaced.getId());
 				/**
 				 * replace on canvas (will save)
@@ -787,7 +787,7 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 			model.getSelectedCpsObjects().clear();
 			controller.addSelectedObject(tempCps);
 			model.setSelectedCpsObject(tempCps);
-			if(tempCps instanceof CpsUpperNode)
+			if(tempCps instanceof GroupNode)
 				controller.getObjectsInDepth();
 		}
 
@@ -858,7 +858,7 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 						+ scaleDiv2;
 
 				// All Selected Objects
-				for (AbstractCpsObject cps : model.getSelectedCpsObjects()) {
+				for (AbstractCanvasObject cps : model.getSelectedCpsObjects()) {
 					if (cps != tempCps) {
 						x = (int) (cps.getPosition().x + xDist);
 						y = (int) (cps.getPosition().y + yDist);
@@ -893,7 +893,7 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 		// Mark Objects
 		if (doMark) {
 			tempSelected.clear();
-			for (AbstractCpsObject cps : model.getObjectsOnCanvas()) {
+			for (AbstractCanvasObject cps : model.getObjectsOnCanvas()) {
 				int x1 = sx, x2 = x, y1 = sy, y2 = y;
 
 				if (sx >= x) {
@@ -926,7 +926,7 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 
 		// Everything for the tooltip :)
 		boolean on = false;
-		for (AbstractCpsObject cps : model.getObjectsOnCanvas()) {
+		for (AbstractCanvasObject cps : model.getObjectsOnCanvas()) {
 			cx = cps.getPosition().x - controller.getScaleDiv2();
 			cy = cps.getPosition().y - controller.getScaleDiv2();
 
@@ -948,9 +948,9 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 			boolean newEdge = true;
 			boolean onEdge = true;
 			boolean deleteNode = false;
-			CpsEdge e = null;
+			Edge e = null;
 
-			for (AbstractCpsObject cps : model.getObjectsOnCanvas()) {
+			for (AbstractCanvasObject cps : model.getObjectsOnCanvas()) {
 				cx = cps.getPosition().x - controller.getScaleDiv2();
 				cy = cps.getPosition().y - controller.getScaleDiv2();
 				if (x - controller.getScale() <= cx
@@ -958,7 +958,7 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 						&& y >= cy && cps != tempCps) {
 					node = false;
 					onEdge = false;
-					for (CpsEdge p : tempCps.getConnections()) {
+					for (Edge p : tempCps.getConnections()) {
 						if ((p.getA() == tempCps && p.getB() == cps)
 								|| (p.getB() == tempCps && p.getA() == cps)) {
 							newEdge = false;
@@ -968,35 +968,35 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 					if (!newEdge) {
 						controller.removeEdgesOnCanvas(e);
 						// Node ohne Edge?
-						if (e.getA().getClass() == CpsNode.class
+						if (e.getA().getClass() == Node.class
 								&& e.getA().getConnections().isEmpty()) {
 							tempCps = e.getA();
 							deleteNode = true;
 						}
-						if (e.getB().getClass() == CpsNode.class
+						if (e.getB().getClass() == Node.class
 								&& e.getB().getConnections().isEmpty()) {
 							deleteNode = true;
 						}
 					} else {
-						if(!(cps instanceof CpsUpperNode || tempCps instanceof CpsUpperNode)) {
-							e = new CpsEdge(cps, tempCps, model.getMaxCapacity());
+						if(!(cps instanceof GroupNode || tempCps instanceof GroupNode)) {
+							e = new Edge(cps, tempCps, model.getMaxCapacity());
 							controller.addEdgeOnCanvas(e);
-						}else if (cps instanceof CpsUpperNode && !(tempCps instanceof CpsUpperNode)){
-							CpsUpperNode thisUpperNode = (CpsUpperNode)cps;
-							Object[] possibilities = thisUpperNode.getNodes().stream().map(aCps -> new ACpsHandle(aCps)).filter(aCpsHandle -> !(aCpsHandle.object instanceof CpsUpperNode)).toArray();
+						}else if (cps instanceof GroupNode && !(tempCps instanceof GroupNode)){
+							GroupNode thisUpperNode = (GroupNode)cps;
+							Object[] possibilities = thisUpperNode.getNodes().stream().map(aCps -> new ACpsHandle(aCps)).filter(aCpsHandle -> !(aCpsHandle.object instanceof GroupNode)).toArray();
 							if(possibilities.length != 0) {
 								ACpsHandle selected = (ACpsHandle) JOptionPane.showInputDialog(this, "Select a inside Object:", "Connection To?",  JOptionPane.OK_OPTION,new ImageIcon(new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB)) , possibilities, "");
 								if(selected != null) {
-									e = new CpsEdge(selected.object, tempCps, model.getMaxCapacity());
-									controller.addEdgeUpperNode(e, (CpsUpperNode)cps);
+									e = new Edge(selected.object, tempCps, model.getMaxCapacity());
+									controller.addEdgeOnCanvas(e);
 								}
 							}else {
-								CpsNode n = new CpsNode("Node");
+								Node n = new Node("Node");
 
 								n.setPosition(x, y);
 								controller.addObjUpperNode(n, thisUpperNode);
-								e = new CpsEdge(n, tempCps, model.getMaxCapacity());
-								controller.addEdgeUpperNode(e, (CpsUpperNode)cps);
+								e = new Edge(n, tempCps, model.getMaxCapacity());
+								controller.addEdgeOnCanvas(e);
 							}
 							
 						}
@@ -1006,27 +1006,27 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 			}
 			// Edge auf eine Edge gezogen?
 			if (onEdge && !checkForReplacement(x, y)) {
-				CpsEdge p = mousePositionOnEdge(x, y);
+				Edge p = mousePositionOnEdge(x, y);
 				if (p != null) {
-					CpsEdge e1;
-					CpsEdge e2;
+					Edge e1;
+					Edge e2;
 
 					node = false;
 
-					CpsNode n = new CpsNode("Node");
+					Node n = new Node("Node");
 
 					n.setPosition(x, y);
 					controller.addObjectCanvas(n);
 
-					AbstractCpsObject r, k;
+					AbstractCanvasObject r, k;
 					r = p.getA();
 					k = p.getB();
 
-					e = new CpsEdge(n, tempCps, model.getMaxCapacity());
+					e = new Edge(n, tempCps, model.getMaxCapacity());
 
-					e1 = new CpsEdge(n, r, model.getMaxCapacity());
+					e1 = new Edge(n, r, model.getMaxCapacity());
 
-					e2 = new CpsEdge(n, k, model.getMaxCapacity());
+					e2 = new Edge(n, k, model.getMaxCapacity());
 
 					controller.removeEdgesOnCanvas(p);
 					controller.addEdgeOnCanvas(e);
@@ -1039,13 +1039,13 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 
 			// ins leere Gedragged
 			if (node && !checkForReplacement(x, y)) {
-				CpsNode n = new CpsNode("Node");
+				Node n = new Node("Node");
 
 				n.setPosition(x, y);
 				
 					controller.addObjectCanvas(n);
 
-				e = new CpsEdge(n, tempCps, model.getMaxCapacity());
+				e = new Edge(n, tempCps, model.getMaxCapacity());
 
 				controller.addEdgeOnCanvas(e);
 			}else{
@@ -1069,10 +1069,10 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 	 *            Position of the Mouse
 	 * @return CpsEdge the Mouse is on, null if the mouse is not on an Edge
 	 */
-	private CpsEdge mousePositionOnEdge(int x, int y) {
+	private Edge mousePositionOnEdge(int x, int y) {
 		x += controller.getScaleDiv2();
 		y += controller.getScaleDiv2();
-		for (CpsEdge p : model.getEdgesOnCanvas()) {
+		for (Edge p : model.getEdgesOnCanvas()) {
 			Line2D l = new Line2D.Float(p.getA().getPosition().x, p.getA()
 					.getPosition().y, p.getB().getPosition().x, p.getB()
 					.getPosition().y);
@@ -1161,7 +1161,7 @@ public class MyCanvas extends AbstractCanvas implements MouseListener,
 		/**
 		 * Align all Objects
 		 */
-		for(AbstractCpsObject cps: model.getObjectsOnCanvas())
+		for(AbstractCanvasObject cps: model.getObjectsOnCanvas())
 			align(cps,3*model.getScaleDiv2());
 		
 		/**

+ 5 - 5
src/ui/view/Outliner.java

@@ -17,9 +17,9 @@ import javax.swing.event.TreeModelListener;
 import javax.swing.tree.DefaultMutableTreeNode;
 import javax.swing.tree.DefaultTreeCellRenderer;
 
-import classes.AbstractCpsObject;
+import classes.AbstractCanvasObject;
 
-import classes.CpsNode;
+import classes.Node;
 
 import ui.controller.Control;
 
@@ -233,8 +233,8 @@ public class Outliner extends JFrame {
 	}
 	
 	class AbstractCpsObjectInfo {
-		private AbstractCpsObject aCps;
-		AbstractCpsObjectInfo(AbstractCpsObject aCps){
+		private AbstractCanvasObject aCps;
+		AbstractCpsObjectInfo(AbstractCanvasObject aCps){
 			this.aCps = aCps;
 		}
 		@Override
@@ -242,7 +242,7 @@ public class Outliner extends JFrame {
 			return aCps.getName() + " Id:"+ aCps.getId();
 		}
 		
-		public AbstractCpsObject getAbstractCpsObject()
+		public AbstractCanvasObject getAbstractCpsObject()
 		{
 			return aCps;
 		}

+ 7 - 7
src/ui/view/SearchPopUp.java

@@ -1,6 +1,6 @@
 package ui.view;
 
-import classes.AbstractCpsObject;
+import classes.AbstractCanvasObject;
 import ui.controller.Control;
 
 import javax.swing.*;
@@ -111,7 +111,7 @@ public class SearchPopUp extends JDialog {
 		btnFind.addActionListener(new ActionListener() {
 			public void actionPerformed(ActionEvent e) {
 				if (rdbtnAll.isSelected()) {
-					for (AbstractCpsObject cps : controller.getModel().getObjectsOnCanvas()) {
+					for (AbstractCanvasObject cps : controller.getModel().getObjectsOnCanvas()) {
 
 						if (cps.getName().equals(findTextField.getText())
 								&& !controller.getModel().getSelectedCpsObjects().contains(cps)) {
@@ -167,13 +167,13 @@ public class SearchPopUp extends JDialog {
 				canvas.tempSelected = new ArrayList<>();
 				controller.getModel().getSelectedCpsObjects().clear();
 
-				for (AbstractCpsObject cps : controller.getModel().getObjectsOnCanvas()) {
+				for (AbstractCanvasObject cps : controller.getModel().getObjectsOnCanvas()) {
 					if (cps.getName().equals(findTextField.getText())
 							&& !controller.getModel().getSelectedCpsObjects().contains(cps))
 						selectObj(cps);
 				}
 
-				for (AbstractCpsObject cps : controller.getModel().getSelectedCpsObjects()) {
+				for (AbstractCanvasObject cps : controller.getModel().getSelectedCpsObjects()) {
 					renameObj(cps, replaceTextField.getText());
 				}
 
@@ -211,7 +211,7 @@ public class SearchPopUp extends JDialog {
 	 * @param obj
 	 *            The Object
 	 */
-	public void selectObj(AbstractCpsObject obj) {
+	public void selectObj(AbstractCanvasObject obj) {
 		controller.getModel().getSelectedCpsObjects().add(obj);
 	}
 
@@ -223,7 +223,7 @@ public class SearchPopUp extends JDialog {
 	 * @param name
 	 *            the new name
 	 */
-	public void renameObj(AbstractCpsObject obj, String name) {
+	public void renameObj(AbstractCanvasObject obj, String name) {
 		obj.setName(name);
 	}
 
@@ -234,7 +234,7 @@ public class SearchPopUp extends JDialog {
 	 *            the ID
 	 * @return the Object with that ID
 	 */
-	public AbstractCpsObject getObj(int idx) {
+	public AbstractCanvasObject getObj(int idx) {
 		return controller.getModel().getObjectsOnCanvas().get(idx);
 	}
 

+ 28 - 28
src/ui/view/StatisticGraph.java

@@ -218,10 +218,10 @@ public class StatisticGraph extends JPanel {
                     val = 1;
                     break;
                 case TrackedDataSet.GROUP_PRODUCTION:
-                    val = getMaxTotalProduction(((CpsUpperNode) set.getCpsObject()).getNodes());
+                    val = getMaxTotalProduction(((GroupNode) set.getCpsObject()).getNodes());
                     break;
                 case TrackedDataSet.GROUP_CONSUMPTION:
-                    val = getMaxTotalConsumption(((CpsUpperNode) set.getCpsObject()).getNodes());
+                    val = getMaxTotalConsumption(((GroupNode) set.getCpsObject()).getNodes());
                     val *= -1;
                     break;
                 case TrackedDataSet.AMOUNT_HOLONS:
@@ -377,12 +377,12 @@ public class StatisticGraph extends JPanel {
               
                 case TrackedDataSet.GROUP_PRODUCTION:
                     set.setValAt(
-                            getTotalProductionAt(((CpsUpperNode) set.getCpsObject()).getNodes(), model.getCurIteration()),
+                            getTotalProductionAt(((GroupNode) set.getCpsObject()).getNodes(), model.getCurIteration()),
                             model.getCurIteration());
                     break;
                 case TrackedDataSet.GROUP_CONSUMPTION:
                     set.setValAt(
-                            -getTotalConsumptionAt(((CpsUpperNode) set.getCpsObject()).getNodes(), model.getCurIteration()),
+                            -getTotalConsumptionAt(((GroupNode) set.getCpsObject()).getNodes(), model.getCurIteration()),
                             model.getCurIteration());
                     break;
                 case TrackedDataSet.AMOUNT_HOLONS:
@@ -594,18 +594,18 @@ public class StatisticGraph extends JPanel {
     /**
      * get the max total production of the given Objects
      */
-    private float getMaxTotalProduction(ArrayList<AbstractCpsObject> objects) {
+    private float getMaxTotalProduction(ArrayList<AbstractCanvasObject> objects) {
         float val = 0;
 
-        for (AbstractCpsObject obj : objects) {
+        for (AbstractCanvasObject obj : objects) {
             if (obj instanceof HolonObject) {
                 for (HolonElement ele : ((HolonObject) obj).getElements()) {
                     if (ele.getEnergyPerElement() > 0) {
                         val += (ele.getEnergyPerElement() ) * ele.getAmount();
                     }
                 }
-            } else if (obj instanceof CpsUpperNode) {
-                val += getMaxTotalProduction(((CpsUpperNode) obj).getNodes());
+            } else if (obj instanceof GroupNode) {
+                val += getMaxTotalProduction(((GroupNode) obj).getNodes());
             }
         }
         return val;
@@ -614,18 +614,18 @@ public class StatisticGraph extends JPanel {
     /**
      * get the max total consumption of the given Objects
      */
-    private float getMaxTotalConsumption(ArrayList<AbstractCpsObject> objects) {
+    private float getMaxTotalConsumption(ArrayList<AbstractCanvasObject> objects) {
         float val = 0;
 
-        for (AbstractCpsObject obj : objects) {
+        for (AbstractCanvasObject obj : objects) {
             if (obj instanceof HolonObject) {
                 for (HolonElement ele : ((HolonObject) obj).getElements()) {
                     if (ele.getEnergyPerElement() < 0) {
                         val += (ele.getEnergyPerElement() ) * ele.getAmount();
                     }
                 }
-            } else if (obj instanceof CpsUpperNode) {
-                val += getMaxTotalConsumption(((CpsUpperNode) obj).getNodes());
+            } else if (obj instanceof GroupNode) {
+                val += getMaxTotalConsumption(((GroupNode) obj).getNodes());
             }
         }
         return val;
@@ -636,16 +636,16 @@ public class StatisticGraph extends JPanel {
      * get the max total wasted energy of the given Objects
      * if it is smaller than 0, return 0
      */
-    private float getMaxWastedEnergy(ArrayList<AbstractCpsObject> objects) {
+    private float getMaxWastedEnergy(ArrayList<AbstractCanvasObject> objects) {
         float val = 0;
 
-        for (AbstractCpsObject obj : objects) {
+        for (AbstractCanvasObject obj : objects) {
             if (obj instanceof HolonObject) {
                 for (HolonElement ele : ((HolonObject) obj).getElements()) {
                     val += (ele.getEnergyPerElement() ) * ele.getAmount();
                 }
-            } else if (obj instanceof CpsUpperNode) {
-                val += getMaxWastedEnergy(((CpsUpperNode) obj).getNodes());
+            } else if (obj instanceof GroupNode) {
+                val += getMaxWastedEnergy(((GroupNode) obj).getNodes());
             }
         }
 
@@ -656,18 +656,18 @@ public class StatisticGraph extends JPanel {
     /**
      * get the max total production of the given objects at the given timestep
      */
-    private float getTotalProductionAt(ArrayList<AbstractCpsObject> objects, int tStep) {
+    private float getTotalProductionAt(ArrayList<AbstractCanvasObject> objects, int tStep) {
         float val = 0;
 
-        for (AbstractCpsObject obj : objects) {
+        for (AbstractCanvasObject obj : objects) {
             if (obj instanceof HolonObject) {
                 for (HolonElement ele : ((HolonObject) obj).getElements()) {
                     if (ele.isActive() && ele.getOverallEnergyAtTimeStep(tStep) > 0 ) {
                         val += ele.getOverallEnergyAtTimeStep(tStep);
                     }
                 }
-            } else if (obj instanceof CpsUpperNode) {
-                val += getTotalProductionAt(((CpsUpperNode) obj).getNodes(), tStep);
+            } else if (obj instanceof GroupNode) {
+                val += getTotalProductionAt(((GroupNode) obj).getNodes(), tStep);
             }
         }
         return val;
@@ -676,18 +676,18 @@ public class StatisticGraph extends JPanel {
     /**
      * get the total consumption of the given objects at the given timestep
      */
-    private float getTotalConsumptionAt(ArrayList<AbstractCpsObject> objects, int tStep) {
+    private float getTotalConsumptionAt(ArrayList<AbstractCanvasObject> objects, int tStep) {
         float val = 0;
 
-        for (AbstractCpsObject obj : objects) {
+        for (AbstractCanvasObject obj : objects) {
             if (obj instanceof HolonObject) {
                 for (HolonElement ele : ((HolonObject) obj).getElements()) {
                     if (ele.isActive() && ele.getEnergyAtTimeStep(tStep) < 0 ) {
                         val += ele.getOverallEnergyAtTimeStep(tStep);
                     }
                 }
-            } else if (obj instanceof CpsUpperNode) {
-                val += getTotalConsumptionAt(((CpsUpperNode) obj).getNodes(), tStep);
+            } else if (obj instanceof GroupNode) {
+                val += getTotalConsumptionAt(((GroupNode) obj).getNodes(), tStep);
             }
         }
         return val;
@@ -696,18 +696,18 @@ public class StatisticGraph extends JPanel {
     /**
      * get the total wasted energy of the given objects at the given timestep
      */
-    private float getTotalWastedEnergyAt(ArrayList<AbstractCpsObject> objects, int tStep) {
+    private float getTotalWastedEnergyAt(ArrayList<AbstractCanvasObject> objects, int tStep) {
         float val = 0;
 
-        for (AbstractCpsObject obj : objects) {
+        for (AbstractCanvasObject obj : objects) {
             if (obj instanceof HolonObject) {
                 for (HolonElement ele : ((HolonObject) obj).getElements()) {
                     if (ele.isActive()) {
                         val += ele.getOverallEnergyAtTimeStep(tStep);
                     }
                 }
-            } else if (obj instanceof CpsUpperNode) {
-                val += getTotalWastedEnergyAt(((CpsUpperNode) obj).getNodes(), tStep);
+            } else if (obj instanceof GroupNode) {
+                val += getTotalWastedEnergyAt(((GroupNode) obj).getNodes(), tStep);
             }
         }
 

+ 4 - 4
src/ui/view/StatisticPanel.java

@@ -563,7 +563,7 @@ public class StatisticPanel extends JSplitPane implements GraphListener {
                         }
                         String object = selectedNode.getParent().toString();
                         String property = selectedNode.toString();
-                        AbstractCpsObject absCps = null;
+                        AbstractCanvasObject absCps = null;
                         if (!object.equals(MAIN_GRID) && !object.equals(HOLON)) {
                             GraphDataSet dataSet = objectHashtable.get(object);
                             absCps = dataSet.getObject();
@@ -671,13 +671,13 @@ public class StatisticPanel extends JSplitPane implements GraphListener {
     }
 
     @Override
-    public void addTrackedObject(ArrayList<AbstractCpsObject> hlList) {
+    public void addTrackedObject(ArrayList<AbstractCanvasObject> hlList) {
         objectsNode.removeAllChildren();
         switchesNode.removeAllChildren();
         groupNode.removeAllChildren();
         objectHashtable.clear();
         if (hlList.size() > 0 && hlList != null) {
-            for (AbstractCpsObject abs : hlList) {
+            for (AbstractCanvasObject abs : hlList) {
                 String name = abs.getName() + " " + abs.getId();
                 DefaultMutableTreeNode tmp = new DefaultMutableTreeNode(name);
                 Hashtable<String, PropertyDataSet> tmpHash = new Hashtable<>();
@@ -701,7 +701,7 @@ public class StatisticPanel extends JSplitPane implements GraphListener {
                 }
 
                 //NodesOfNodes
-                if (abs instanceof CpsUpperNode) {
+                if (abs instanceof GroupNode) {
                     tmp.add(new DefaultMutableTreeNode(TOT_PROD_GRID));
                     tmp.add(new DefaultMutableTreeNode(TOT_CONS_GRID));
                     tmpHash.put(TOT_PROD_GRID, new PropertyDataSet());

+ 2 - 2
src/ui/view/UnitGraph.java

@@ -785,7 +785,7 @@ public class UnitGraph extends JPanel implements MouseListener, MouseMotionListe
 	 * @deprecated
 	 * @param cps
 	 */
-	public void repaintGraph(AbstractCpsObject cps) {
+	public void repaintGraph(AbstractCanvasObject cps) {
 		System.out.println("repaintGraph");
 	}
    
@@ -793,7 +793,7 @@ public class UnitGraph extends JPanel implements MouseListener, MouseMotionListe
 	 * @deprecated
 	 * @param obj
 	 */
-	public void update(ArrayList<AbstractCpsObject> obj) {
+	public void update(ArrayList<AbstractCanvasObject> obj) {
 		
 	}
     

+ 95 - 117
src/ui/view/UpperNodeCanvas.java

@@ -41,7 +41,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
 
     private static final long serialVersionUID = 1L;
     // The UpperNode
-    public CpsUpperNode upperNode;
+    public GroupNode upperNode;
     // Path
     protected String path;
     int code;
@@ -57,7 +57,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
      * @param control   the Controller
      * @param unitGraph
      */
-    UpperNodeCanvas(Model mod, Control control, UnitGraph unitGraph, CpsUpperNode UpperNode, String parentPath, Component parentComponent) {
+    UpperNodeCanvas(Model mod, Control control, UnitGraph unitGraph, GroupNode UpperNode, String parentPath, Component parentComponent) {
         toolTip = false;
 
         this.controller = control;
@@ -74,7 +74,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
 
         // Cps objecte aus dem border links schieben
         upperNode.setLeftBorder(/*(int) (50 + scalediv20 + scalediv20 + 10)*/ 0);
-        for (AbstractCpsObject cps : upperNode.getNodes()) {
+        for (AbstractCanvasObject cps : upperNode.getNodes()) {
             if (cps.getPosition().x < model.getScaleDiv2() + upperNode.getLeftBorder() + 5) {
                 cps.setPosition(
                         new Position(upperNode.getLeftBorder() + 5 + model.getScaleDiv2(), cps.getPosition().y));
@@ -110,7 +110,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
         updCon = new UpdateController(model, controller);
         
         itemAlign.addActionListener(actionEvent -> {
-        	for(AbstractCpsObject cps: model.getSelectedCpsObjects())
+        	for(AbstractCanvasObject cps: model.getSelectedCpsObjects())
         		align(cps, model.getScaleDiv2());
         	repaint();
         });
@@ -119,7 +119,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
             // calculate uppernode pos (taken from the controller)
             unPos = new Position(0, 0);
             animCps = new ArrayList<>();
-            for (AbstractCpsObject cps : model.getSelectedCpsObjects()) {
+            for (AbstractCanvasObject cps : model.getSelectedCpsObjects()) {
                 animCps.add(cps); // add to animation Cps ArrayList
                 unPos.x += cps.getPosition().x;
                 unPos.y += cps.getPosition().y;
@@ -137,7 +137,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
 
             animT = new javax.swing.Timer(animDelay, actionEvent1 -> {
                 if (animDuration - animDelay > 0 && animCps.size() > 1) {
-                    for (AbstractCpsObject currentAnimCps : animCps) {
+                    for (AbstractCanvasObject currentAnimCps : animCps) {
                         double x1 = currentAnimCps.getPosition().x - unPos.x;
                         double y1 = currentAnimCps.getPosition().y - unPos.y;
                         currentAnimCps.getPosition().x -= x1 / animSteps;
@@ -167,15 +167,15 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
         	closeUpperNodeTab(tempCps.getId());
 
             savePos = new ArrayList<>();
-            animCps = ((CpsUpperNode) tempCps).getNodes();
-            controller.delUpperNode((CpsUpperNode) tempCps, upperNode);
+            animCps = ((GroupNode) tempCps).getNodes();
+            controller.delUpperNode((GroupNode) tempCps, upperNode);
 
             for (int i = 0; i < animCps.size(); i++) {
                 savePos.add(new Position(0, 0));
                 savePos.get(i).x = animCps.get(i).getPosition().x;
                 savePos.get(i).y = animCps.get(i).getPosition().y;
             }
-            for (AbstractCpsObject cps : animCps) {
+            for (AbstractCanvasObject cps : animCps) {
                 int x = tempCps.getPosition().x;
                 int y = tempCps.getPosition().y;
 
@@ -210,11 +210,11 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
         });
 
         itemTrack.addActionListener(actionEvent -> {
-            for (AbstractCpsObject o : model.getSelectedCpsObjects()) {
+            for (AbstractCanvasObject o : model.getSelectedCpsObjects()) {
                 if (o instanceof HolonObject) {
                     boolean found = false;
                     if (controller.getTrackingObj() != null) {
-                        for (AbstractCpsObject obj : controller.getTrackingObj()) {
+                        for (AbstractCanvasObject obj : controller.getTrackingObj()) {
                             if (obj instanceof HolonObject) {
                                 if (obj.getId() == o.getId()) {
                                     found = true;
@@ -231,11 +231,11 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
         });
 
         itemUntrack.addActionListener(actionEvent -> {
-            for (AbstractCpsObject o : model.getSelectedCpsObjects()) {
+            for (AbstractCanvasObject o : model.getSelectedCpsObjects()) {
                 if (o instanceof HolonObject) {
                     boolean found = false;
                     if (controller.getTrackingObj() != null) {
-                        for (AbstractCpsObject obj : controller.getTrackingObj()) {
+                        for (AbstractCanvasObject obj : controller.getTrackingObj()) {
                             if (obj instanceof HolonObject) {
                                 if (obj.getId() == o.getId()) {
                                     found = true;
@@ -257,14 +257,14 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
 
         itemDelete.addActionListener(actionEvent -> {
             // Remove the selected Object objects
-            for (AbstractCpsObject cps : model.getSelectedCpsObjects()) {
+            for (AbstractCanvasObject cps : model.getSelectedCpsObjects()) {
                 if (upperNode.getNodes().contains(cps)) {
                     controller.delObjUpperNode(cps, upperNode);
                     // Removes the object from the tracked objects, in case
                     // it was tracked
                     controller.removeTrackingObj(cps);
                     // Remove UpperNodeTab if UpperNode deleted
-                    if (cps instanceof CpsUpperNode) {
+                    if (cps instanceof GroupNode) {
                         JSplitPane tempSplit = (JSplitPane) getParent().getParent().getParent().getParent();
                         JTabbedPane tabbedPane;
                         JTabbedPane tabbedPane2;
@@ -315,7 +315,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
         });
 
         itemCopy.addActionListener(actionEvent -> {
-        	if(tempCps instanceof CpsUpperNode)
+        	if(tempCps instanceof GroupNode)
 				controller.getObjectsInDepth();
             controller.copy(upperNode);
             itemPaste.setEnabled(true);
@@ -589,9 +589,9 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
 		}
 		//<--
 		//SelectedCable
-		HashSet<CpsEdge> selectedEdges = new HashSet<CpsEdge>();
-		for(AbstractCpsObject aCps:  model.getSelectedCpsObjects()) {
-			for(CpsEdge edge: aCps.getConnections()) {
+		HashSet<Edge> selectedEdges = new HashSet<Edge>();
+		for(AbstractCanvasObject aCps:  model.getSelectedCpsObjects()) {
+			for(Edge edge: aCps.getConnections()) {
 				selectedEdges.add(edge);
 			}
 		}
@@ -623,7 +623,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
 		for(DecoratedSwitch dSwitch : actualGroupNode.getSwitchList()) {
 				paintSwitch(g2d, dSwitch);
 		}
-		for(CpsNode node : actualGroupNode.getNodeList()) {
+		for(Node node : actualGroupNode.getNodeList()) {
 			drawCanvasObject(g2d, "/Images/node.png" , node.getPosition());
 		}
 		
@@ -638,8 +638,8 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
 		g2d.setColor(Color.BLUE);
 		g2d.setStroke(new BasicStroke(1));
 		Color transparentGrey = new Color(128, 174, 247, 40);
-		for(AbstractCpsObject aCps:  model.getSelectedCpsObjects()) {
-			if(aCps instanceof CpsNode) {
+		for(AbstractCanvasObject aCps:  model.getSelectedCpsObjects()) {
+			if(aCps instanceof Node) {
 				Position pos = aCps.getPosition();
 				g2d.setColor(transparentGrey);
 				g2d.fillOval(pos.x - (int) (controller.getScaleDiv2()), pos.y - (int) (controller.getScaleDiv2()),  controller.getScale(),  controller.getScale());
@@ -705,7 +705,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
         }
 
         if (e.getX() > upperNode.getLeftBorder()) {
-            for (AbstractCpsObject cps : upperNode.getNodes()) {
+            for (AbstractCanvasObject cps : upperNode.getNodes()) {
                 cx = cps.getPosition().x - model.getScaleDiv2();
                 cy = cps.getPosition().y - model.getScaleDiv2();
                 if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy) {
@@ -718,7 +718,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
                             controller.deleteSelectedObject(tempCps);
                         } else {
                             controller.addSelectedObject(tempCps);
-                            if(tempCps instanceof CpsUpperNode)
+                            if(tempCps instanceof GroupNode)
     							controller.getObjectsInDepth();
                         }
                     }
@@ -738,8 +738,8 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
         } else {
             // look for objects connected to uppernode
             int count = 0;
-            for (CpsEdge ed : upperNode.getConnections()) {
-                AbstractCpsObject cps;
+            for (Edge ed : upperNode.getConnections()) {
+                AbstractCanvasObject cps;
                 if (ed.getA().equals(this.upperNode)) {
                     cps = ed.getB();
                 } else {
@@ -827,7 +827,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
             	/**
             	 * if UpperNode would be replaced, close its tabs
             	 */
-            	if(mayBeReplaced instanceof CpsUpperNode)
+            	if(mayBeReplaced instanceof GroupNode)
             		closeUpperNodeTab(mayBeReplaced.getId());
             	/**
             	 * replace on canvas
@@ -840,7 +840,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
         if (!e.isControlDown() && !dragged && tempCps != null && MouseEvent.BUTTON3 != e.getButton()) {
             model.getSelectedCpsObjects().clear();
             controller.addSelectedObject(tempCps);
-            if(tempCps instanceof CpsUpperNode)
+            if(tempCps instanceof GroupNode)
 				controller.getObjectsInDepth();
         }
 
@@ -907,7 +907,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
                     toolTipPos.y = tempCps.getPosition().y + model.getScaleDiv2();
 
                     // All Selected Objects
-                    for (AbstractCpsObject cps : model.getSelectedCpsObjects()) {
+                    for (AbstractCanvasObject cps : model.getSelectedCpsObjects()) {
                         if (cps != tempCps) {
                             x = (int) (cps.getPosition().x + xDist);
                             y = (int) (cps.getPosition().y + yDist);
@@ -942,7 +942,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
         // Mark Objects
         if (doMark) {
             tempSelected.clear();
-            for (AbstractCpsObject cps : upperNode.getNodes()) {
+            for (AbstractCanvasObject cps : upperNode.getNodes()) {
                 int x1 = sx, x2 = x, y1 = sy, y2 = y;
 
                 if (sx >= x) {
@@ -960,8 +960,8 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
                 }
             }
             int count = 0;
-            for (CpsEdge ed : upperNode.getConnections()) {
-                AbstractCpsObject cps;
+            for (Edge ed : upperNode.getConnections()) {
+                AbstractCanvasObject cps;
                 if (ed.getA().equals(upperNode)) {
                     cps = ed.getB();
                 } else {
@@ -1001,7 +1001,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
         y = e.getY();
         // Everything for the tooltip :)
         boolean on = false;
-        for (AbstractCpsObject cps : upperNode.getNodes()) {
+        for (AbstractCanvasObject cps : upperNode.getNodes()) {
 
             cx = cps.getPosition().x - controller.getScaleDiv2();
             cy = cps.getPosition().y - controller.getScaleDiv2();
@@ -1009,9 +1009,9 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
             on = setToolTipInfoAndPosition(on, cps);
         }
         int count = 0;
-        for (CpsEdge ed : upperNode.getConnections()) {
+        for (Edge ed : upperNode.getConnections()) {
 
-            AbstractCpsObject cps;
+            AbstractCanvasObject cps;
             if (ed.getA().equals(this.upperNode)) {
                 cps = ed.getB();
             } else {
@@ -1047,8 +1047,8 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
         boolean outsideCon = !upperNode.getNodes().contains(tempCps); // Connection to the outside
         boolean found = false; // dont search for outside connetion if inside
         // connection is found
-        CpsEdge e = null;
-        for (AbstractCpsObject cps : upperNode.getNodes()) {
+        Edge e = null;
+        for (AbstractCanvasObject cps : upperNode.getNodes()) {
 
             cx = cps.getPosition().x - controller.getScaleDiv2();
             cy = cps.getPosition().y - controller.getScaleDiv2();
@@ -1058,7 +1058,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
                 found = true;
                 node = false;
                 onEdge = false;
-                for (CpsEdge p : tempCps.getConnections()) {
+                for (Edge p : tempCps.getConnections()) {
                     if ((p.getA() == tempCps && p.getB() == cps) || (p.getB() == tempCps && p.getA() == cps)) {
                         newEdge = false;
                         e = p;
@@ -1066,42 +1066,37 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
                 }
                 if (!newEdge) {
                     if (outsideCon) {
-                        controller.disconnectNodes(e, upperNode);
                     } else {
-                        controller.delEdgeUpperNode(e, upperNode);
+                        controller.removeEdgesOnCanvas(e);
                     }
                     // Node ohne Edge?
-                    if (e.getA().getClass() == CpsNode.class && e.getA().getConnections().isEmpty()) {
+                    if (e.getA().getClass() == Node.class && e.getA().getConnections().isEmpty()) {
                         tempCps = e.getA();
                         deleteNode = true;
                     }
-                    if (e.getB().getClass() == CpsNode.class && e.getB().getConnections().isEmpty()) {
+                    if (e.getB().getClass() == Node.class && e.getB().getConnections().isEmpty()) {
                         deleteNode = true;
                     }
                 } else {
-                	if(!(cps instanceof CpsUpperNode || tempCps instanceof CpsUpperNode)) {
-						e = new CpsEdge(cps, tempCps, model.getMaxCapacity());
-						if (outsideCon) {
-							controller.connectNodes(e, upperNode);
-						} else {
-							controller.addEdgeUpperNode(e, upperNode);
-						}
-					}else if (cps instanceof CpsUpperNode && !(tempCps instanceof CpsUpperNode)){
-						CpsUpperNode thisUpperNode = (CpsUpperNode)cps;
-						Object[] possibilities = thisUpperNode.getNodes().stream().map(aCps -> new ACpsHandle(aCps)).filter(aCpsHandle -> !(aCpsHandle.object instanceof CpsUpperNode)).toArray();
+                	if(!(cps instanceof GroupNode || tempCps instanceof GroupNode)) {
+						e = new Edge(cps, tempCps, model.getMaxCapacity());
+						controller.addEdgeOnCanvas(e);
+					}else if (cps instanceof GroupNode && !(tempCps instanceof GroupNode)){
+						GroupNode thisUpperNode = (GroupNode)cps;
+						Object[] possibilities = thisUpperNode.getNodes().stream().map(aCps -> new ACpsHandle(aCps)).filter(aCpsHandle -> !(aCpsHandle.object instanceof GroupNode)).toArray();
 						if(possibilities.length != 0) {
 							ACpsHandle selected = (ACpsHandle) JOptionPane.showInputDialog(this, "Select a inside Object:", "Connection To?",  JOptionPane.OK_OPTION,new ImageIcon(new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB)) , possibilities, "");
 							if(selected != null) {
-								e = new CpsEdge(selected.object, tempCps, model.getMaxCapacity());
-								controller.addEdgeUpperNode(e, (CpsUpperNode)cps);
+								e = new Edge(selected.object, tempCps, model.getMaxCapacity());
+								controller.addEdgeOnCanvas(e);
 							}
 						}else {
-							CpsNode n = new CpsNode("Node");
+							Node n = new Node("Node");
 
 							n.setPosition(x, y);
 							controller.addObjUpperNode(n, thisUpperNode);
-							e = new CpsEdge(n, tempCps, model.getMaxCapacity());
-							controller.addEdgeUpperNode(e, (CpsUpperNode)cps);
+							e = new Edge(n, tempCps, model.getMaxCapacity());
+							controller.addEdgeOnCanvas(e);
 						}
 						
 					}
@@ -1110,8 +1105,8 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
         }
         if (!found && !outsideCon) {
             int count = 0;
-            for (CpsEdge ed : upperNode.getConnections()) {
-                AbstractCpsObject cps;
+            for (Edge ed : upperNode.getConnections()) {
+                AbstractCanvasObject cps;
                 if (ed.getA().equals(upperNode)) {
                     cps = ed.getB();
                 } else {
@@ -1126,32 +1121,27 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
                     outsideCon = true;
                     node = false;
                     onEdge = false;
-                    for (CpsEdge p : tempCps.getConnections()) {
+                    for (Edge p : tempCps.getConnections()) {
                         if ((p.getA() == tempCps && p.getB() == cps) || (p.getB() == tempCps && p.getA() == cps)) {
                             newEdge = false;
                             e = p;
                         }
                     }
                     if (!newEdge) {
-                        if (outsideCon) {
-                            controller.disconnectNodes(e, upperNode);
-                        } else {
-                            controller.delEdgeUpperNode(e, upperNode);
-                        }
+
                         // Node ohne Edge?
-                        if (e.getA().getClass() == CpsNode.class && e.getA().getConnections().isEmpty()) {
+                        if (e.getA().getClass() == Node.class && e.getA().getConnections().isEmpty()) {
                             tempCps = e.getA();
                             deleteNode = true;
                         }
-                        if (e.getB().getClass() == CpsNode.class && e.getB().getConnections().isEmpty()) {
+                        if (e.getB().getClass() == Node.class && e.getB().getConnections().isEmpty()) {
                             deleteNode = true;
                         }
                     } else {
-                        CpsEdge edge = new CpsEdge(cps, tempCps, model.getMaxCapacity());
+                        Edge edge = new Edge(cps, tempCps, model.getMaxCapacity());
                         if (outsideCon) {
-                            controller.connectNodes(edge, upperNode);
                         } else {
-                            controller.addEdgeUpperNode(edge, upperNode);
+                            controller.addEdgeOnCanvas(edge);
                         }
                     }
                 }
@@ -1161,37 +1151,30 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
 
         // Edge auf eine Edge gezogen?
         if (onEdge && !checkForReplacement(x, y)) {
-            CpsEdge p = mousePositionOnEdge(x, y);
+            Edge p = mousePositionOnEdge(x, y);
             if (p != null) {
-                CpsEdge e1;
-                CpsEdge e2;
+                Edge e1;
+                Edge e2;
 
                 node = false;
 
-                CpsNode n = new CpsNode("Node");
+                Node n = new Node("Node");
 
                 n.setPosition(x, y);
                 controller.addObjUpperNode(n, upperNode);
 
-                AbstractCpsObject r, k;
+                AbstractCanvasObject r, k;
                 r = p.getA();
                 k = p.getB();
 
-                e = new CpsEdge(n, tempCps, model.getMaxCapacity());
-
-                e1 = new CpsEdge(n, r, model.getMaxCapacity());
+                e = new Edge(n, tempCps, model.getMaxCapacity());
 
-                e2 = new CpsEdge(n, k, model.getMaxCapacity());
+                e1 = new Edge(n, r, model.getMaxCapacity());
 
-                controller.delEdgeUpperNode(p, upperNode);
-                if (outsideCon) {
-                    controller.connectNodes(e, upperNode);
-                } else {
-                    controller.addEdgeUpperNode(e, upperNode);
-                }
+                e2 = new Edge(n, k, model.getMaxCapacity());
 
-                controller.addEdgeUpperNode(e1, upperNode);
-                controller.addEdgeUpperNode(e2, upperNode);
+                controller.addEdgeOnCanvas(e1);
+                controller.addEdgeOnCanvas(e2);
             }
         }else{
         	mayBeReplaced = null;
@@ -1199,18 +1182,13 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
 
         // ins leere Gedragged
         if (node && x > upperNode.getLeftBorder() && !checkForReplacement(x, y)) {
-            CpsNode n = new CpsNode("Node");
+            Node n = new Node("Node");
 
             n.setPosition(x, y);
             controller.addObjUpperNode(n, upperNode);
 
-            e = new CpsEdge(n, tempCps, model.getMaxCapacity());
+            e = new Edge(n, tempCps, model.getMaxCapacity());
 
-            if (outsideCon) {
-                controller.connectNodes(e, upperNode);
-            } else {
-                controller.addEdgeUpperNode(e, upperNode);
-            }
         }else{
         	mayBeReplaced = null;
         }
@@ -1229,41 +1207,41 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
      * @param y Position of the Mouse
      * @return CpsEdge the Mouse is on, null if the mouse is not on an Edge
      */
-    private CpsEdge mousePositionOnEdge(int x, int y) {
+    private Edge mousePositionOnEdge(int x, int y) {
         x += controller.getScaleDiv2();
         y += controller.getScaleDiv2();
         int lx, ly, hx, hy;
 
-
-        for (CpsEdge p : upperNode.getNodeEdges()) {
-            Line2D l = new Line2D.Float(p.getA().getPosition().x, p.getA().getPosition().y, p.getB().getPosition().x,
-                    p.getB().getPosition().y);
-
-            int[] positions = determineMousePositionOnEdge(p);
-            lx = positions[0];
-            ly = positions[1];
-            hx = positions[2];
-            hy = positions[3];
-
-            // distance from a point to a line and between both Objects
-            if (l.ptLineDistSq(x - model.getScaleDiv2(), y - model.getScaleDiv2()) < 20 && x > lx && x < hx && y > ly
-                    && y < hy) {
-                return p;
-            }
-        }
+//TODO: is this right
+//        for (CpsEdge p : upperNode.getNodeEdges()) {
+//            Line2D l = new Line2D.Float(p.getA().getPosition().x, p.getA().getPosition().y, p.getB().getPosition().x,
+//                    p.getB().getPosition().y);
+//
+//            int[] positions = determineMousePositionOnEdge(p);
+//            lx = positions[0];
+//            ly = positions[1];
+//            hx = positions[2];
+//            hy = positions[3];
+//
+//            // distance from a point to a line and between both Objects
+//            if (l.ptLineDistSq(x - model.getScaleDiv2(), y - model.getScaleDiv2()) < 20 && x > lx && x < hx && y > ly
+//                    && y < hy) {
+//                return p;
+//            }
+//        }
 
         // edge to outside connection
 
         int count = 0;
-        for (CpsEdge e : upperNode.getConnections()) {
-            AbstractCpsObject cps;
+        for (Edge e : upperNode.getConnections()) {
+            AbstractCanvasObject cps;
             if (e.getA().equals(this.upperNode)) {
                 cps = e.getB();
             } else {
                 cps = e.getA();
             }
-            for (CpsEdge p : cps.getConnections()) {
-                AbstractCpsObject obj = null;
+            for (Edge p : cps.getConnections()) {
+                AbstractCanvasObject obj = null;
                 boolean doTest = false;
                 if (upperNode.getNodes().contains(p.getA())) {
                     obj = p.getA();
@@ -1348,7 +1326,7 @@ public class UpperNodeCanvas extends AbstractCanvas implements MouseListener, Mo
 		/**
 		 * Align all Objects
 		 */
-		for(AbstractCpsObject cps: upperNode.getNodes())
+		for(AbstractCanvasObject cps: upperNode.getNodes())
 			align(cps,3*model.getScaleDiv2());
 		
 		/**

+ 2 - 2
tests/tests/PraktikumHolonsAdapter.java

@@ -4,7 +4,7 @@ import java.util.ArrayList;
 import static java.lang.Math.*;
 
 import classes.Category;
-import classes.AbstractCpsObject;
+import classes.AbstractCanvasObject;
 import classes.HolonElement;
 import classes.HolonObject;
 import classes.IdCounterElem;
@@ -31,7 +31,7 @@ public class PraktikumHolonsAdapter {
 	 * Generate Sequence of Objects from A - ZZZ.
 	 * @param arr ArrayList of Categories
 	 */
-	public void generateObjects(ArrayList<AbstractCpsObject> arr) {
+	public void generateObjects(ArrayList<AbstractCanvasObject> arr) {
 		for (int i = 1; i < 18279; i++) {
 			arr.add(new HolonObject(generate(i)));
 		}

+ 7 - 7
tests/tests/PraktikumHolonsTestCanvasController.java

@@ -1,7 +1,7 @@
 package tests;
 
-import classes.AbstractCpsObject;
-import classes.CpsEdge;
+import classes.AbstractCanvasObject;
+import classes.Edge;
 import classes.HolonObject;
 import classes.HolonSwitch;
 import classes.IdCounter;
@@ -134,9 +134,9 @@ public class PraktikumHolonsTestCanvasController {
 			temp2.setPosition(50+180 * (i-2)%5,50+ 180 * (i-2)/5);
 			controller.addNewObject(temp2);
 			// connect current vertice with all other vertices
-			for (AbstractCpsObject cps : model.getObjectsOnCanvas()) {
+			for (AbstractCanvasObject cps : model.getObjectsOnCanvas()) {
 				if (!cps.equals(mp.searchByID(i)))
-					controller.addEdgeOnCanvas(new CpsEdge(mp.searchByID(i), cps));
+					controller.addEdgeOnCanvas(new Edge(mp.searchByID(i), cps));
 			}
 
 			// test how many connections current vertice got
@@ -186,9 +186,9 @@ public class PraktikumHolonsTestCanvasController {
 		b.setPosition(2, 2);
 		c = new HolonObject(c);
 		c.setPosition(3, 3);
-		CpsEdge edge1 = new CpsEdge(a, b);
-		CpsEdge edge2 = new CpsEdge(b, c);
-		CpsEdge edge3 = new CpsEdge(c, a);
+		Edge edge1 = new Edge(a, b);
+		Edge edge2 = new Edge(b, c);
+		Edge edge3 = new Edge(c, a);
 		controller.addNewObject(a);
 		controller.addEdgeOnCanvas(edge1);
 		controller.addEdgeOnCanvas(edge2);

+ 11 - 11
tests/tests/PraktikumHolonsTestClasses.java

@@ -23,7 +23,7 @@ public class PraktikumHolonsTestClasses {
 		Category test1 = new Category("Test1");
 		Category test2 = new Category("Test2");
 		HolonObject obj1 = new HolonObject("Test Object");
-		ArrayList<AbstractCpsObject> arr = new ArrayList<>();
+		ArrayList<AbstractCanvasObject> arr = new ArrayList<>();
 
 		assertTrue("Name not correct", test1.getName().equals("Test1"));
 		assertTrue("Name not correct", test2.getName().equals("Test2"));
@@ -110,14 +110,14 @@ public class PraktikumHolonsTestClasses {
 	 */
 	@Test
 	public void testCpsEdge() {
-		CpsNode node1 = new CpsNode("Node1");
-		CpsNode node2 = new CpsNode("Node2");
-		CpsNode node3 = new CpsNode("Node3");
-		CpsEdge edge1 = new CpsEdge(node1, node2, 100);
-		CpsEdge edge2 = new CpsEdge(node2, node3);
-
-		node1 = (CpsNode) edge1.getB();
-		node2 = (CpsNode) edge2.getA();
+		Node node1 = new Node("Node1");
+		Node node2 = new Node("Node2");
+		Node node3 = new Node("Node3");
+		Edge edge1 = new Edge(node1, node2, 100);
+		Edge edge2 = new Edge(node2, node3);
+
+		node1 = (Node) edge1.getB();
+		node2 = (Node) edge2.getA();
 		assertTrue("Not Same", node1 == node2);
     
         edge2.setTags(new ArrayList<>());
@@ -167,7 +167,7 @@ public class PraktikumHolonsTestClasses {
 		PraktikumHolonsAdapter adapter = new PraktikumHolonsAdapter();
 
 		ArrayList<HolonObject> obj = new ArrayList<>();
-		ArrayList<CpsEdge> edge = new ArrayList<>();
+		ArrayList<Edge> edge = new ArrayList<>();
 		ArrayList<HolonSwitch> sw = new ArrayList<>();
 		ArrayList<HolonBattery> sb = new ArrayList<>();
 
@@ -182,7 +182,7 @@ public class PraktikumHolonsTestClasses {
 			s = new HolonSwitch(s);
 			obj.add(o);
 			sw.add(s);
-			edge.add(new CpsEdge(o, s));
+			edge.add(new Edge(o, s));
 		}
 
 		SubNet sub = new SubNet(obj, edge, sw, sb);

+ 3 - 3
tests/tests/PraktikumHolonsTestObjectController.java

@@ -5,7 +5,7 @@ import static org.junit.Assert.assertTrue;
 import org.junit.Before;
 import org.junit.Test;
 
-import classes.AbstractCpsObject;
+import classes.AbstractCanvasObject;
 import classes.HolonObject;
 import ui.controller.CanvasController;
 import ui.controller.CategoryController;
@@ -122,12 +122,12 @@ public class PraktikumHolonsTestObjectController {
 //			assertTrue("Element:B was not Found", mp.searchEle((HolonObject) mp.searchByID(cps.getId()), "B") != null);
 //		}
 
-		for (AbstractCpsObject cps : model.getObjectsOnCanvas()) {
+		for (AbstractCanvasObject cps : model.getObjectsOnCanvas()) {
 			int size = model.getSelectedCpsObjects().size();
 			controller.addSelectedObject(cps);
 			assertTrue("Size does not Match", model.getSelectedCpsObjects().size() == size + 1);
 		}
-		for (AbstractCpsObject cps : model.getObjectsOnCanvas()) {
+		for (AbstractCanvasObject cps : model.getObjectsOnCanvas()) {
 			System.out.println(model.getSelectedCpsObjects().size());
 			int size = model.getSelectedCpsObjects().size();
 			controller.deleteSelectedObject(cps);