Ver código fonte

Fixes Clippboard Interaction

TomTroppmann 2 anos atrás
pai
commit
37cbde9c27

+ 26 - 14
src/ui/controller/CanvasController.java

@@ -13,6 +13,7 @@ import classes.HolonObject;
 import classes.HolonSwitch;
 import interfaces.ObjectListener;
 import ui.model.Model;
+import ui.view.GUI;
 import utility.Vector2Int;
 
 /**
@@ -24,7 +25,7 @@ public class CanvasController {
 
 	private Model model;
 	private MultiPurposeController mpC;
-
+    private GUI gui;
 	/**
 	 * Constructor.
 	 * 
@@ -90,9 +91,6 @@ public class CanvasController {
 				replaceObjectOnCanvas(toBeReplaced, object);
 			}
 		}
-		
-		
-		notifyObjListeners();
 	}
 
 	/**
@@ -117,14 +115,6 @@ public class CanvasController {
 		model.getObjectListeners().add(objLis);
 	}
 
-	/**
-	 * notifies all listeners about changes in the Canvas.
-	 */
-	public void notifyObjListeners() {
-		for (ObjectListener l : model.getObjectListeners()) {
-			l.onChange(model.getObjectsOnCanvas());
-		}
-	}
 
 	/**
 	 * Deletes an CpsObject on the Canvas and its connections.
@@ -137,7 +127,6 @@ public class CanvasController {
 		mpC.decIdx(obj.getId(), model.getCvsObjIdx());
 		model.getCvsObjIdx().remove(obj.getId());
 		model.getObjectsOnCanvas().remove(obj);
-		notifyObjListeners();
 	}
 
 	/**
@@ -237,7 +226,6 @@ public class CanvasController {
 					AbstractCanvasObject b = tempList.get(model.getClipboradObjects().indexOf(e.getB()));
 					// was this Edge created or not?
 					for (Edge et : tempList.get(model.getClipboradObjects().indexOf(cps)).getConnectedTo()) {
-						//TODO Changed et to etA is this right?
 						for (Edge etA : et.getA().getConnectedTo()) {
 							if (etA.getA() == a && etA.getB() == b) {
 								newEdge = false;
@@ -305,6 +293,30 @@ public class CanvasController {
 		}
 	}
 	
+	public void updateOutliner(SimulationManager manager ) {
+		gui.updateOutliners(manager.getActualDecorState());
+	}
+	
+	public void updateFlexWindow() {
+		gui.updateFlexWindows();
+	}
+	
+	
+	public void updateCanvas() {
+		gui.repaintCanvas();
+		gui.triggerUpdateController(null);
+	}
+	public GUI getGui() {
+		return gui;
+	}
+
+	public void guiDisable(boolean state) {
+		gui.guiDisable(state);
+	}
+	
+	public void setGui(GUI gui) {
+		this.gui = gui;
+	}
 	
 	
 	/**

+ 5 - 3
src/ui/controller/ClipboardController.java

@@ -33,9 +33,10 @@ public class ClipboardController {
     private HashMap<Integer, Integer> eleIDMap;
     private String sav;
     private Point point;
+	private SimulationManager simManager;
 
     ClipboardController(Model model, SaveController store, LoadController load, CanvasController cvs,
-                        ObjectController obj, NodeController uppC, MultiPurposeController mp) {
+                        ObjectController obj, NodeController uppC, SimulationManager simManager) {
         this.model = model;
         this.store = store;
         this.load = load;
@@ -43,6 +44,7 @@ public class ClipboardController {
         this.objC = obj;
         this.uppC = uppC;
         this.clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
+        this.simManager = simManager;
         parser = new JsonParser();
     }
 
@@ -64,7 +66,6 @@ public class ClipboardController {
         for (AbstractCanvasObject abs : model.getSelectedCpsObjects()) {
             queue.add(abs);
         }
-        System.out.println("heiCopy");
         while (!queue.isEmpty()) {
 
             u = queue.pop();
@@ -138,7 +139,7 @@ public class ClipboardController {
         // for selecting Cps
         getObjectsInDepth();
         forwardEdges(edges, json, objDispatch, upperNode);
-
+        this.simManager.calculateStateForTimeStep(model.getCurIteration(), true);
     }
 
     /**
@@ -155,6 +156,7 @@ public class ClipboardController {
             if (abs instanceof GroupNode)
                 cvsC.bfsNodeCleaner((GroupNode) abs);
         }
+        this.simManager.calculateStateForTimeStep(model.getCurIteration(), true);
 
     }
 

+ 8 - 9
src/ui/controller/Control.java

@@ -45,7 +45,7 @@ public class Control {
     private final ClipboardController clipboardController;
     private final HolonCanvasController holonCanvasController;
     private Model model;
-    private GUI gui;
+
     private SimulationManager simulationManager;
     private String autosaveDir = "";
     private String categoryDir = "";
@@ -75,7 +75,7 @@ public class Control {
         this.simulationManager = new SimulationManager(model);
         this.autoSaveController = new AutoSaveController(model);
         this.clipboardController = new ClipboardController(model, saveController, loadController, canvasController,
-                objectController, nodeController, multiPurposeController);
+                objectController, nodeController, this.simulationManager);
         this.holonCanvasController = new HolonCanvasController(model);
 
         autosaveDir = System.getProperty("user.home") + "/.config/HolonGUI/Autosave/";
@@ -854,28 +854,27 @@ public class Control {
 	}
 	
 	public void updateOutliner() {
-		gui.updateOutliners(simulationManager.getActualDecorState());
+		this.canvasController.updateOutliner(simulationManager);
 	}
 	
 	public void updateFlexWindow() {
-		gui.updateFlexWindows();
+		canvasController.updateFlexWindow();
 	}
 	
 	
 	public void updateCanvas() {
-		gui.repaintCanvas();
-		gui.triggerUpdateController(null);
+		canvasController.updateCanvas();
 	}
 	public GUI getGui() {
-		return gui;
+		return canvasController.getGui();
 	}
 
 	public void guiDisable(boolean state) {
-		gui.guiDisable(state);
+		canvasController.guiDisable(state);
 	}
 	
 	public void setGui(GUI gui) {
-		this.gui = gui;
+		canvasController.setGui(gui);
 	}
 	
 }

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

@@ -278,7 +278,7 @@ public class UpdateController {
 	 */
 	public AbstractCanvasObject getActualCpsUpperNode(GroupNodeCanvas canvas) {
 		int tempID = model.getSelectedObjectID();
-		AbstractCanvasObject tempCps = controller.searchByIDUpperNode(tempID, canvas.getUpperNode());
+		AbstractCanvasObject tempCps = controller.searchByIDUpperNode(tempID, canvas.getGroupNode());
 		return tempCps;
 	}
 

+ 17 - 0
src/ui/model/Model.java

@@ -654,6 +654,23 @@ public class Model {
     	}
     }
     
+    public ArrayList<AbstractCanvasObject> getAllAbstractObjectsOnCanvas(){
+		ArrayList<AbstractCanvasObject> objectToReturn = new ArrayList<AbstractCanvasObject>();
+		getAllAsbtractObjectsRecursive(objectToReturn, getObjectsOnCanvas());
+    	return objectToReturn;
+    }
+    private void getAllAsbtractObjectsRecursive(ArrayList<AbstractCanvasObject> addObjectsToThisList, List<AbstractCanvasObject> listOfObjectsToSearch){
+    	for(AbstractCanvasObject aCps : listOfObjectsToSearch) {
+    		if(aCps instanceof GroupNode){
+    			getAllAsbtractObjectsRecursive(addObjectsToThisList, ((GroupNode)aCps).getNodes());
+    		}
+    		else{
+    			addObjectsToThisList.add(aCps);
+    		}
+    	}
+    }
+    
+    
     
     /**
      * get all Switches

+ 20 - 13
src/ui/view/Canvas.java

@@ -60,6 +60,13 @@ public class Canvas extends AbstractCanvas implements MouseListener,
 	private static final long serialVersionUID = 1L;
 	public boolean disabled = false;
 	private boolean showSupplyBar = false;
+	
+	GroupNode groupNode = null;
+	
+	Color[] colors = new Color[6];
+	
+	
+	
 	/**
 	 * Constructor.
 	 *
@@ -73,7 +80,13 @@ public class Canvas extends AbstractCanvas implements MouseListener,
 		toolTip = false;
 		this.controller = control;
 		this.model = mod;
-		
+		colors[0] = getStateColor(HolonObjectState.PRODUCER);
+		colors[1] = getStateColor(HolonObjectState.NOT_SUPPLIED);
+		colors[2] = getStateColor(HolonObjectState.PARTIALLY_SUPPLIED);
+		colors[3] = getStateColor(HolonObjectState.SUPPLIED);
+		colors[4] = getStateColor(HolonObjectState.OVER_SUPPLIED);
+		colors[5] = getStateColor(HolonObjectState.NO_ENERGY);
+				
 		scalediv20 = model.getScale() / 20;
 		
 		showConnectionInformation = true;
@@ -137,7 +150,7 @@ public class Canvas extends AbstractCanvas implements MouseListener,
 						for (int i = 0; i < animCps.size(); i++) {
 							animCps.get(i).getPosition().set(savePos.get(i));
 						}
-						controller.addUpperNode("GroupNode", null, animCps);
+						controller.addUpperNode("GroupNode", groupNode, animCps);
 						controller.calculateStateAndVisualForCurrentTimeStep();
 						triggerUpdateController();
 						model.getSelectedCpsObjects().clear();
@@ -156,7 +169,7 @@ public class Canvas extends AbstractCanvas implements MouseListener,
 
 					savePos = new ArrayList<>();
 					animCps = ((GroupNode) tempCps).getNodes();
-					controller.ungroupGroupNode((GroupNode) tempCps, null);
+					controller.ungroupGroupNode((GroupNode) tempCps, groupNode);
 
 					for (int i = 0; i < animCps.size(); i++) {
 						savePos.add(animCps.get(i).getPosition().clone());
@@ -230,7 +243,7 @@ public class Canvas extends AbstractCanvas implements MouseListener,
 						if (tabbedPane.getComponentAt(i) != null
 								&& ((GroupNodeCanvas) ((JScrollPane) tabbedPane
 										.getComponentAt(i)).getViewport()
-										.getComponent(0)).getUpperNode().getId() == cps
+										.getComponent(0)).getGroupNode().getId() == cps
 										.getId()) {
 							((ButtonTabComponent) tabbedPane
 									.getTabComponentAt(i)).removeTabs();
@@ -414,14 +427,7 @@ public class Canvas extends AbstractCanvas implements MouseListener,
 		g.setColor(Color.WHITE);
 		g.fillRect(pos.getX() - controller.getScaleDiv2(), pos.getY() + controller.getScaleDiv2() - 1, (int) barWidth, barHeight);
 		float[] percentages = getGroupNodeBarPercentages(dGroupNode);
-		Color[] colors = new Color[6];
-		colors[0] = getStateColor(HolonObjectState.PRODUCER);
-		colors[1] = getStateColor(HolonObjectState.NOT_SUPPLIED);
-		colors[2] = getStateColor(HolonObjectState.PARTIALLY_SUPPLIED);
-		colors[3] = getStateColor(HolonObjectState.SUPPLIED);
-		colors[4] = getStateColor(HolonObjectState.OVER_SUPPLIED);
-		colors[5] = getStateColor(HolonObjectState.NO_ENERGY);
-				
+		
 		for(int i = 5; i>=0; i--) {
 			g.setColor(colors[i]);
 			g.fillRect(pos.getX() - controller.getScaleDiv2(), pos.getY() + controller.getScaleDiv2() - 1, (int) (barWidth * percentages[i] - 1), barHeight);		
@@ -615,6 +621,7 @@ public class Canvas extends AbstractCanvas implements MouseListener,
 
 	@Override
 	public void mousePressed(MouseEvent e) {
+		this.grabFocus();
 		if(!disabled){
 		stopEditing();
 		tempCps = null;
@@ -1117,7 +1124,7 @@ public class Canvas extends AbstractCanvas implements MouseListener,
 		for (int i = 1; i < tabbedPaneInner.getTabCount(); i++) {
 			if (((GroupNodeCanvas) ((JScrollPane) tabbedPaneInner
 					.getComponentAt(i)).getViewport().getComponent(
-							0)).getUpperNode().getId() == upperNodeId) {
+							0)).getGroupNode().getId() == upperNodeId) {
 				tabbedPaneInner.remove(i);
 				break;
 			}

+ 19 - 16
src/ui/view/CanvasResizePopUp.java

@@ -3,6 +3,7 @@ package ui.view;
 import ui.controller.Control;
 import ui.model.Model;
 import utility.ImageImport;
+import utility.Vector2Int;
 
 import javax.swing.*;
 import java.awt.*;
@@ -13,7 +14,6 @@ public class CanvasResizePopUp extends JDialog {
     private final JButton btnOk = new JButton("OK");
 	private final JButton btnCancel = new JButton("Cancel");
 	JTabbedPane tabbedPane;
-	JTabbedPane tabbedPane2;
 	Model model;
 	Control controller;
 	Canvas canvas;
@@ -24,11 +24,9 @@ public class CanvasResizePopUp extends JDialog {
     private JLabel lblHeight = new JLabel("Height:");
     private JPanel buttonPanel = new JPanel();
 
-	public CanvasResizePopUp(Model model, Control controller, Canvas canvas, JTabbedPane tabbedPane,
-                             JTabbedPane tabbedPane2, JFrame parentFrame) {
+	public CanvasResizePopUp(Model model, Control controller, Canvas canvas, JTabbedPane tabbedPane, JFrame parentFrame) {
         super((java.awt.Frame) null, true);
 		this.tabbedPane = tabbedPane;
-		this.tabbedPane2 = tabbedPane2;
 		this.model = model;
 		this.controller = controller;
 		this.canvas = canvas;
@@ -43,9 +41,9 @@ public class CanvasResizePopUp extends JDialog {
 		tFieldWidht.setText("" + model.getCanvasX());
 		tFieldHeight.setText("" + model.getCanvasY());
 		mainPanel.add(lblWidth);
-		mainPanel.add(tFieldHeight);
-		mainPanel.add(lblHeight);
 		mainPanel.add(tFieldWidht);
+		mainPanel.add(lblHeight);
+		mainPanel.add(tFieldHeight);
 		mainPanel.setBackground(Color.WHITE);
 
 		// Button Panel
@@ -54,22 +52,27 @@ public class CanvasResizePopUp extends JDialog {
 			public void actionPerformed(ActionEvent e) {
 				controller.setCanvasX(Integer.parseInt(tFieldWidht.getText()));
 				controller.setCanvasY(Integer.parseInt(tFieldHeight.getText()));
-				canvas.setPreferredSize(new Dimension(model.getCanvasX(), model.getCanvasY()));
-				for (int i = 4; i < tabbedPane.getTabCount(); i++) {
+				int width = model.getCanvasX();
+				int height = model.getCanvasY();
+				Dimension preferedSize = new Dimension(width, height);
+				canvas.setPreferredSize(preferedSize);
+				for (int i = 1; i < tabbedPane.getTabCount(); i++) {
 					if (tabbedPane.getComponentAt(i) != null) {
-						GroupNodeCanvas unc = ((GroupNodeCanvas) ((JScrollPane) tabbedPane.getComponentAt(i))
+						JScrollPane scollPane = (JScrollPane) tabbedPane.getComponentAt(i);
+						GroupNodeCanvas unc = ((GroupNodeCanvas) (scollPane)
 								.getViewport().getComponent(0));
-						unc.setPreferredSize(new Dimension(model.getCanvasX(), model.getCanvasY()));
+						unc.setPreferredSize(preferedSize);
 						unc.repaint();
 					}
 				}
-				if (tabbedPane2 != null && tabbedPane2.getSelectedIndex() >= 4) {
-					GroupNodeCanvas unc = ((GroupNodeCanvas) ((JScrollPane) tabbedPane2.getSelectedComponent())
-							.getViewport().getComponent(0));
-					unc.setPreferredSize(new Dimension(model.getCanvasX(), model.getCanvasY()));
-					unc.repaint();
-				}
 				canvas.repaint();
+				
+				controller.getModel().getAllAbstractObjectsOnCanvas().stream().forEach(obj -> {
+					Vector2Int position = obj.getPosition();
+					position.clampX(0, width);
+					position.clampY(0, height);
+				});
+				controller.updateCanvas();
 				dispose();
 			}
 		});

Diferenças do arquivo suprimidas por serem muito extensas
+ 365 - 512
src/ui/view/GUI.java


+ 401 - 398
src/ui/view/GroupNodeCanvas.java

@@ -28,28 +28,26 @@ import ui.model.Supplier;
 import utility.ImageImport;
 import utility.Vector2Int;
 
+
+//TODO delete GroupNodeCanvas completely and only have canvas Class
 public class GroupNodeCanvas extends Canvas {
-	private GroupNode upperNode;
 	private String parentPath;
 	private Component parentComponent;
 
-	
-
 	GroupNodeCanvas(Model mod, Control control, UnitGraph unitGraph, GroupNode groupNode, String parentPath,
 			Component parentComponent) {
 		super(mod, control, unitGraph);
-		this.upperNode = groupNode;
+		this.groupNode = groupNode;
 		this.parentPath = parentPath;
 		this.parentComponent = parentComponent;
 	}
 
-	
-	public void setUpperNode(GroupNode upperNode) {
-		this.upperNode = upperNode;
+	public void setGroupNode(GroupNode upperNode) {
+		this.groupNode = upperNode;
 	}
-	
-	public GroupNode getUpperNode() {
-		return upperNode;
+
+	public GroupNode getGroupNode() {
+		return groupNode;
 	}
 
 	public String getParentPath() {
@@ -59,440 +57,445 @@ public class GroupNodeCanvas extends Canvas {
 	public Component getParentComponent() {
 		return parentComponent;
 	}
-	
-	public void paintComponent(Graphics g) {		
-		//super.paintComponent(g);
+
+	public void paintComponent(Graphics g) {
+		// super.paintComponent(g);
 		Graphics2D g2d = (Graphics2D) g;
 		g2d.clearRect(0, 0, this.getWidth(), this.getHeight());
-		g2d.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING,
-				RenderingHints.VALUE_ANTIALIAS_ON));
-		//-->Old code
+		g2d.setRenderingHints(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON));
+		// -->Old code
 		if (drawEdge) {
 			g2d.setColor(Color.BLACK);
 			g2d.setStroke(new BasicStroke(1));
 			g2d.drawLine(tempCps.getPosition().getX(), tempCps.getPosition().getY(), x, y);
 		}
-		//<--
-		//SelectedCable
+		// <--
+		// SelectedCable
 		HashSet<Edge> selectedEdges = new HashSet<Edge>();
-		for(AbstractCanvasObject aCps:  model.getSelectedCpsObjects()) {
-			for(Edge edge: aCps.getConnections()) {
+		for (AbstractCanvasObject aCps : model.getSelectedCpsObjects()) {
+			for (Edge edge : aCps.getConnections()) {
 				selectedEdges.add(edge);
 			}
 		}
-		if(model.getSelectedEdge() != null) selectedEdges.add(model.getSelectedEdge());
+		if (model.getSelectedEdge() != null)
+			selectedEdges.add(model.getSelectedEdge());
 
-		
-		DecoratedGroupNode  actualGroupNode = controller.getSimManager().getActualVisualRepresentationalState().getCreatedGroupNodes().get(upperNode);
-		//VisualState Representation:
-		for(ExitCable cable : actualGroupNode.getExitCableList()) {
+		DecoratedGroupNode actualGroupNode = controller.getSimManager().getActualVisualRepresentationalState()
+				.getCreatedGroupNodes().get(groupNode);
+		// VisualState Representation:
+		for (ExitCable cable : actualGroupNode.getExitCableList()) {
 			paintExitCable(g2d, cable);
 		}
-		for(DecoratedCable cable : actualGroupNode.getInternCableList()) {
+		for (DecoratedCable cable : actualGroupNode.getInternCableList()) {
 			paintCable(g2d, cable, selectedEdges.contains(cable.getModel()));
 		}
-	
-		
-		for(DecoratedGroupNode dGroupNode : actualGroupNode.getGroupNodeList()) {
+
+		for (DecoratedGroupNode dGroupNode : actualGroupNode.getGroupNodeList()) {
 			paintGroupNode(g2d, dGroupNode);
 		}
-		for(Consumer con: actualGroupNode.getConsumerList()) {
-			paintConsumer(g2d, con);					
+		for (Consumer con : actualGroupNode.getConsumerList()) {
+			paintConsumer(g2d, con);
 		}
-		for(Supplier sup: actualGroupNode.getSupplierList()) {
-			paintSupplier(g2d, sup);				
+		for (Supplier sup : actualGroupNode.getSupplierList()) {
+			paintSupplier(g2d, sup);
 		}
-		for(Passiv pas: actualGroupNode.getPassivList()) {
+		for (Passiv pas : actualGroupNode.getPassivList()) {
 			paintCanvasObject(g2d, pas);
 		}
-		for(DecoratedSwitch dSwitch : actualGroupNode.getSwitchList()) {
-				paintSwitch(g2d, dSwitch);
+		for (DecoratedSwitch dSwitch : actualGroupNode.getSwitchList()) {
+			paintSwitch(g2d, dSwitch);
 		}
-		for(Node node : actualGroupNode.getNodeList()) {
-			drawCanvasObject(g2d, "/Images/node.png" , node.getPosition());
+		for (Node node : actualGroupNode.getNodeList()) {
+			drawCanvasObject(g2d, "/Images/node.png", node.getPosition());
 		}
-		
-		//-->oldCode 
+
+		// -->oldCode
 		if (doMark) {
 			g2d.setColor(Color.BLACK);
 			g2d.setStroke(new BasicStroke(0));
 			drawMarker(g2d);
 		}
-		//Test Selection
-		//Objects:
+		// Test Selection
+		// Objects:
 		g2d.setColor(Color.BLUE);
 		g2d.setStroke(new BasicStroke(1));
 		Color transparentGrey = new Color(128, 174, 247, 40);
-		for(AbstractCanvasObject aCps:  model.getSelectedCpsObjects()) {
-			if(aCps instanceof Node) {
+		for (AbstractCanvasObject aCps : model.getSelectedCpsObjects()) {
+			if (aCps instanceof Node) {
 				Vector2Int pos = aCps.getPosition();
 				g2d.setColor(transparentGrey);
-				g2d.fillOval(pos.getX() - (int) (controller.getScaleDiv2()), pos.getY() - (int) (controller.getScaleDiv2()),  controller.getScale(),  controller.getScale());
+				g2d.fillOval(pos.getX() - (int) (controller.getScaleDiv2()),
+						pos.getY() - (int) (controller.getScaleDiv2()), controller.getScale(), controller.getScale());
 				g2d.setColor(Color.LIGHT_GRAY);
 				g2d.setStroke(new BasicStroke(2));
-				g2d.drawOval(pos.getX() - (int) (controller.getScaleDiv2()), pos.getY() - (int) (controller.getScaleDiv2()),  controller.getScale(),  controller.getScale());
-			}
-			else {
+				g2d.drawOval(pos.getX() - (int) (controller.getScaleDiv2()),
+						pos.getY() - (int) (controller.getScaleDiv2()), controller.getScale(), controller.getScale());
+			} else {
 				Vector2Int pos = aCps.getPosition();
 				g2d.setColor(transparentGrey);
-				g2d.fillRect(pos.getX() - (int) (controller.getScaleDiv2()* 1.5f), pos.getY() - (int) (controller.getScaleDiv2()* 1.5f), (int) (controller.getScale()* 1.5f) , (int) (controller.getScale()* 1.5f));
+				g2d.fillRect(pos.getX() - (int) (controller.getScaleDiv2() * 1.5f),
+						pos.getY() - (int) (controller.getScaleDiv2() * 1.5f), (int) (controller.getScale() * 1.5f),
+						(int) (controller.getScale() * 1.5f));
 				g2d.setColor(Color.LIGHT_GRAY);
 				g2d.setStroke(new BasicStroke(2));
-				g2d.drawRect(pos.getX() - (int) (controller.getScaleDiv2()* 1.5f), pos.getY() - (int) (controller.getScaleDiv2()* 1.5f), (int) (controller.getScale()* 1.5f) , (int) (controller.getScale()* 1.5f));				
+				g2d.drawRect(pos.getX() - (int) (controller.getScaleDiv2() * 1.5f),
+						pos.getY() - (int) (controller.getScaleDiv2() * 1.5f), (int) (controller.getScale() * 1.5f),
+						(int) (controller.getScale() * 1.5f));
 			}
 
 		}
-		//maybeReplace:
-		if(mayBeReplaced != null){
+		// maybeReplace:
+		if (mayBeReplaced != null) {
 			g2d.setColor(Color.RED);
 			Vector2Int pos = mayBeReplaced.getPosition();
-			g.drawImage(ImageImport.loadImage("/Images/replace.png") , 
-					pos.getX() + controller.getScaleDiv2(),
-					pos.getY() - controller.getScale(),
-					controller.getScaleDiv2(), controller.getScaleDiv2(), null);
+			g.drawImage(ImageImport.loadImage("/Images/replace.png"), pos.getX() + controller.getScaleDiv2(),
+					pos.getY() - controller.getScale(), controller.getScaleDiv2(), controller.getScaleDiv2(), null);
+		}
+		// <-- OldCode
+	}
+
+	@Override
+	public void mousePressed(MouseEvent e) {
+		this.grabFocus();
+		if (!disabled) {
+			stopEditing();
+			tempCps = null;
+			dataSelected = null;
+			edgeHighlight = null;
+			controller.setSelecteEdge(null);
+			controller.setSelectedObjectID(-1);
+			// Object Selection
+
+			// Erase old data in the PropertyTable
+			if (model.getPropertyTable().getRowCount() > 0) {
+				for (int i = model.getPropertyTable().getRowCount() - 1; i > -1; i--) {
+					model.getPropertyTable().removeRow(i);
+				}
+			}
+
+			if (e.getX() > groupNode.getLeftBorder()) {
+				for (AbstractCanvasObject cps : groupNode.getNodes()) {
+					cx = cps.getPosition().getX() - model.getScaleDiv2();
+					cy = cps.getPosition().getY() - model.getScaleDiv2();
+					if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy) {
+						tempCps = cps;
+
+						dragging = true;
+						if (e.isControlDown() && tempCps != null) {
+							if (model.getSelectedCpsObjects().contains(tempCps)) {
+								controller.deleteSelectedObject(tempCps);
+							} else {
+								controller.addSelectedObject(tempCps);
+								if (tempCps instanceof GroupNode)
+									controller.getObjectsInDepth();
+							}
+						}
+
+						// If drawing an Edge (CTRL down)
+						if (tempCps.getClass() == HolonObject.class) {
+							HolonObject tempObj = ((HolonObject) tempCps);
+							dataSelected = tempObj.getElements();
+						}
+						if (e.isShiftDown()) {
+							drawEdge = true;
+							dragging = false;
+						}
+						break;
+					}
+				}
+			} else {
+				// look for objects connected to uppernode
+				int count = 0;
+				for (Edge ed : groupNode.getConnections()) {
+					AbstractCanvasObject cps;
+					if (ed.getA().equals(this.groupNode)) {
+						cps = ed.getB();
+					} else {
+						cps = ed.getA();
+					}
+					if (x - controller.getScale() <= ((groupNode.getLeftBorder() >> 1) - model.getScaleDiv2())
+							&& y - controller.getScale() <= (scalediv20 + 5
+									+ (model.getScale() + scalediv20 + 10) * count)
+							&& x >= (groupNode.getLeftBorder() >> 1) - model.getScaleDiv2()
+							&& y >= (scalediv20 + 5 + (model.getScale() + scalediv20 + 10) * count)) {
+						tempCps = cps;
+						// If drawing an Edge (CTRL down)
+						if (tempCps.getClass() == HolonObject.class) {
+							HolonObject tempObj = ((HolonObject) tempCps);
+							dataSelected = tempObj.getElements();
+						}
+						if (e.isShiftDown()) {
+							drawEdge = true;
+						}
+					}
+					count++;
+				}
+			}
+			// Edge Selection
+			if (e.getButton() == MouseEvent.BUTTON1) {
+				if (tempCps == null) {
+					edgeHighlight = mousePositionOnEdge(x, y);
+					controller.setSelecteEdge(edgeHighlight);
+					controller.setSelectedObjectID(0);
+					if (!e.isControlDown() && e.getButton() != MouseEvent.BUTTON3) {
+						model.getSelectedCpsObjects().clear();
+					}
+					updCon.deleteRows(model.getMultiTable());
+					updCon.deleteRows(model.getSingleTable());
+				}
+
+				if (edgeHighlight == null && tempCps == null) {
+					sx = e.getX();
+					sy = e.getY();
+					doMark = true;
+				}
+				repaint();
+			}
 		}
-		//<-- OldCode
 	}
-	
-	  @Override
-	    public void mousePressed(MouseEvent e) {
-	    	if(!disabled){
-	    	stopEditing();
-	        tempCps = null;
-	        dataSelected = null;
-	        edgeHighlight = null;
-	        controller.setSelecteEdge(null);
-	        controller.setSelectedObjectID(-1);
-	        // Object Selection
-
-	        // Erase old data in the PropertyTable
-	        if (model.getPropertyTable().getRowCount() > 0) {
-	            for (int i = model.getPropertyTable().getRowCount() - 1; i > -1; i--) {
-	                model.getPropertyTable().removeRow(i);
-	            }
-	        }
-
-	        if (e.getX() > upperNode.getLeftBorder()) {
-	            for (AbstractCanvasObject cps : upperNode.getNodes()) {
-	                cx = cps.getPosition().getX() - model.getScaleDiv2();
-	                cy = cps.getPosition().getY() - model.getScaleDiv2();
-	                if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy) {
-	                    tempCps = cps;
-
-
-	                    dragging = true;
-	                    if (e.isControlDown() && tempCps != null) {
-	                        if (model.getSelectedCpsObjects().contains(tempCps)) {
-	                            controller.deleteSelectedObject(tempCps);
-	                        } else {
-	                            controller.addSelectedObject(tempCps);
-	                            if(tempCps instanceof GroupNode)
-	    							controller.getObjectsInDepth();
-	                        }
-	                    }
-
-	                    // If drawing an Edge (CTRL down)
-	                    if (tempCps.getClass() == HolonObject.class) {
-	                        HolonObject tempObj = ((HolonObject) tempCps);
-	                        dataSelected = tempObj.getElements();
-	                    }
-	                    if (e.isShiftDown()) {
-	                        drawEdge = true;
-	                        dragging = false;
-	                    }
-	                    break;
-	                }
-	            }
-	        } else {
-	            // look for objects connected to uppernode
-	            int count = 0;
-	            for (Edge ed : upperNode.getConnections()) {
-	                AbstractCanvasObject cps;
-	                if (ed.getA().equals(this.upperNode)) {
-	                    cps = ed.getB();
-	                } else {
-	                    cps = ed.getA();
-	                }
-	                if (x - controller.getScale() <= ((upperNode.getLeftBorder() >> 1) - model.getScaleDiv2())
-	                        && y - controller.getScale() <= (scalediv20 + 5 + (model.getScale() + scalediv20 + 10) * count)
-	                        && x >= (upperNode.getLeftBorder() >> 1) - model.getScaleDiv2()
-	                        && y >= (scalediv20 + 5 + (model.getScale() + scalediv20 + 10) * count)) {
-	                    tempCps = cps;
-	                    // If drawing an Edge (CTRL down)
-	                    if (tempCps.getClass() == HolonObject.class) {
-	                        HolonObject tempObj = ((HolonObject) tempCps);
-	                        dataSelected = tempObj.getElements();
-	                    }
-	                    if (e.isShiftDown()) {
-	                        drawEdge = true;
-	                    }
-	                }
-	                count++;
-	            }
-	        }
-	        // Edge Selection
-	        if (e.getButton() == MouseEvent.BUTTON1) {
-	            if (tempCps == null) {
-	                edgeHighlight = mousePositionOnEdge(x, y);
-	                controller.setSelecteEdge(edgeHighlight);
-	                controller.setSelectedObjectID(0);
-	                if (!e.isControlDown() && e.getButton() != MouseEvent.BUTTON3) {
-	                    model.getSelectedCpsObjects().clear();
-	                }
-	                updCon.deleteRows(model.getMultiTable());
-	                updCon.deleteRows(model.getSingleTable());
-	            }
-
-	            if (edgeHighlight == null && tempCps == null) {
-	                sx = e.getX();
-	                sy = e.getY();
-	                doMark = true;
-	            }
-	            repaint();
-	        }
-	    	}
-	    }
-
-	    @Override
-	    public void mouseReleased(MouseEvent e) {
-	    	if(!disabled){
-	        x = e.getX();
-	        y = e.getY();
-	        dragging = false;
-	        if (model.getSelectedCpsObjects().size() > 1) {
-	            model.getTableHolonElement().setModel(model.getMultiTable());
-	        } else if (model.getSelectedCpsObjects().size() == 1) {
-	            model.getTableHolonElement().setModel(model.getSingleTable());
-	        }
-
-	        if (drawEdge) {
-	            drawEdge = false;
-	            drawDeleteEdge();
-	        }
-
-	        if (dragged) {
-	            try { 
-	            	/**
-	            	 * Save State before performing NodePlacement, replacement e.g.
-	            	 */
-	                controller.autoSave();
-	            } catch (IOException ex) {
-	                ex.printStackTrace();
-	            }
-	            
-	            /**
-	             * check if tempCps could replace an Object on the UpperNodeanvas
-	             */
-	            if(model.getSelectedCpsObjects().size() == 1 && checkForReplacement(upperNode.getNodes(), tempCps, tempCps.getPosition().getX(), tempCps.getPosition().getY())){
-	            	/**
-	            	 * if UpperNode would be replaced, close its tabs
-	            	 */
-	            	if(mayBeReplaced instanceof GroupNode)
-	            		closeUpperNodeTab(mayBeReplaced.getId());
-	            	/**
-	            	 * replace on canvas
-	            	 */
-	            	controller.replaceObjUpperNode(mayBeReplaced, tempCps, upperNode);
-	            	mayBeReplaced=null;
-	            }
-	        }
-
-	        if (!e.isControlDown() && !dragged && tempCps != null && MouseEvent.BUTTON3 != e.getButton()) {
-	            model.getSelectedCpsObjects().clear();
-	            controller.addSelectedObject(tempCps);
-	            if(tempCps instanceof GroupNode)
+
+	@Override
+	public void mouseReleased(MouseEvent e) {
+		if (!disabled) {
+			x = e.getX();
+			y = e.getY();
+			dragging = false;
+			if (model.getSelectedCpsObjects().size() > 1) {
+				model.getTableHolonElement().setModel(model.getMultiTable());
+			} else if (model.getSelectedCpsObjects().size() == 1) {
+				model.getTableHolonElement().setModel(model.getSingleTable());
+			}
+
+			if (drawEdge) {
+				drawEdge = false;
+				drawDeleteEdge();
+			}
+
+			if (dragged) {
+				try {
+					/**
+					 * Save State before performing NodePlacement, replacement e.g.
+					 */
+					controller.autoSave();
+				} catch (IOException ex) {
+					ex.printStackTrace();
+				}
+
+				/**
+				 * check if tempCps could replace an Object on the UpperNodeanvas
+				 */
+				if (model.getSelectedCpsObjects().size() == 1 && checkForReplacement(groupNode.getNodes(), tempCps,
+						tempCps.getPosition().getX(), tempCps.getPosition().getY())) {
+					/**
+					 * if UpperNode would be replaced, close its tabs
+					 */
+					if (mayBeReplaced instanceof GroupNode)
+						closeUpperNodeTab(mayBeReplaced.getId());
+					/**
+					 * replace on canvas
+					 */
+					controller.replaceObjUpperNode(mayBeReplaced, tempCps, groupNode);
+					mayBeReplaced = null;
+				}
+			}
+
+			if (!e.isControlDown() && !dragged && tempCps != null && MouseEvent.BUTTON3 != e.getButton()) {
+				model.getSelectedCpsObjects().clear();
+				controller.addSelectedObject(tempCps);
+				if (tempCps instanceof GroupNode)
 					controller.getObjectsInDepth();
-	        }
-
-	        dragged = false;
-
-	        // Rightclick List
-	        setRightClickMenu(e);
-
-	        markObjects();
-
-	        if (doubleClick() && tempCps != null && tempCps instanceof HolonSwitch) {
-	            ((HolonSwitch) tempCps).switchState();
-	        }
-
-	        controller.calculateStateAndVisualForTimeStep(model.getCurIteration());
-	        triggerUpdateController();
-	        repaint();
-	    	}
-	    }
-
-	    @Override
-	    public void mouseDragged(MouseEvent e) {
-	    	if(!disabled){
-	        // If Edge is drawn
-	        x = e.getX();
-	        y = e.getY();
-	        if (!model.getSelectedCpsObjects().contains(tempCps) && !doMark) {
-	            model.getSelectedCpsObjects().clear();
-	            if (tempCps != null) {
-	                controller.addSelectedObject(tempCps);
-	            }
-	        }
-	        if (dragging) {
-	            try {            	
-	                // tempCps in the upperNode? else its a connected Object from
-	                // outside
-	                if (upperNode.getNodes().contains(tempCps)) {
-	                    dragged = true;
-	                    float xDist, yDist; // Distance
-
-	                    x = e.getX();
-	                    y = e.getY();
-
-	                    // Make sure its in bounds
-	                    if (e.getX() < controller.getScaleDiv2() + upperNode.getLeftBorder() + 5)
-	                        x = controller.getScaleDiv2() + upperNode.getLeftBorder() + 5;
-	                    else if (e.getX() > this.getWidth() - controller.getScaleDiv2())
-	                        x = this.getWidth() - controller.getScaleDiv2();
-	                    if (e.getY() < controller.getScaleDiv2())
-	                        y = controller.getScaleDiv2();
-	                    else if (e.getY() > this.getHeight() - controller.getScaleDiv2())
-	                        y = this.getHeight() - controller.getScaleDiv2();
-
-	                    // Distance
-	                    xDist = x - tempCps.getPosition().getX();
-	                    yDist = y - tempCps.getPosition().getY();
-
-	                    tempCps.setPosition(x, y); // Drag Position
-
-	                    // TipText Position and name
-	                    toolTip = true;
-	                    toolTipText = tempCps.getName() + ", " + tempCps.getId();
-	                    toolTipPos.setX(tempCps.getPosition().getX() - model.getScaleDiv2());
-	                    toolTipPos.setY(tempCps.getPosition().getY() - model.getScaleDiv2());
-
-	                    // All Selected Objects
-	                    for (AbstractCanvasObject cps : model.getSelectedCpsObjects()) {
-	                        if (cps != tempCps) {
-	                            x = (int) (cps.getPosition().getX() + xDist);
-	                            y = (int) (cps.getPosition().getY() + yDist);
-
-	                            // Make sure its in bounds
-	                            if (x < upperNode.getLeftBorder() + 5 + controller.getScaleDiv2())
-	                                x = controller.getScaleDiv2() + upperNode.getLeftBorder() + 5;
-	                            else if (x > this.getWidth() - controller.getScaleDiv2())
-	                                x = this.getWidth() - controller.getScaleDiv2();
-	                            if (y <= controller.getScaleDiv2())
-	                                y = controller.getScaleDiv2();
-	                            else if (y > this.getHeight() - controller.getScaleDiv2())
-	                                y = this.getHeight() - controller.getScaleDiv2();
-
-	                            cps.setPosition(x, y);
-	                        }
-	                    }
-	                }
-	                /**
-	            	 * check if something would be replaced
-	            	 */
-	                if(model.getSelectedCpsObjects().size()==1)
-	                	checkForReplacement(upperNode.getNodes(), tempCps, x, y);
-
-	               repaint();
-	            } catch (Exception eex) {
-
-	            }
-	        	
-	        }
-
-	        // Mark Objects
-	        if (doMark) {
-	            tempSelected.clear();
-	            for (AbstractCanvasObject cps : upperNode.getNodes()) {
-	                int x1 = sx, x2 = x, y1 = sy, y2 = y;
-
-	                if (sx >= x) {
-	                    x1 = x;
-	                    x2 = sx;
-	                }
-	                if (sy >= y) {
-	                    y1 = y;
-	                    y2 = sy;
-	                }
-	                if (x1 <= cps.getPosition().getX() + model.getScaleDiv2() && y1 <= cps.getPosition().getY() + model.getScaleDiv2()
-	                        && x2 >= cps.getPosition().getX() && y2 >= cps.getPosition().getY()) {
-	                    tempSelected.add(cps);
-
-	                }
-	            }
-	            int count = 0;
-	            for (Edge ed : upperNode.getConnections()) {
-	                AbstractCanvasObject cps;
-	                if (ed.getA().equals(upperNode)) {
-	                    cps = ed.getB();
-	                } else {
-	                    cps = ed.getA();
-	                }
-
-	                int x1 = sx, x2 = x, y1 = sy, y2 = y;
-
-	                if (sx >= x) {
-	                    x1 = x;
-	                    x2 = sx;
-	                }
-	                if (sy >= y) {
-	                    y1 = y;
-	                    y2 = sy;
-	                }
-
-	                if (x1 <= upperNode.getLeftBorder() >> 1
-	                        && y1 <= (int) (5 + (model.getScale() + scalediv20 + 10) * count) + model.getScaleDiv2()
-	                        && x2 >= upperNode.getLeftBorder() >> 1
-	                        && y2 >= (int) (5 + (model.getScale() + scalediv20 + 10) * count)) {
-	                    tempSelected.add(cps);
-
-	                }
-	                count++;
-	            }
-	        }
-
-	        repaint();
-	    	}
-	    }
-
-	    @Override
-	    public void mouseMoved(MouseEvent e) {
-	    	{
-	        x = e.getX();
-	        y = e.getY();
-	        // Everything for the tooltip :)
-	        boolean on = false;
-	        for (AbstractCanvasObject cps : upperNode.getNodes()) {
-
-	            cx = cps.getPosition().getX() - controller.getScaleDiv2();
-	            cy = cps.getPosition().getY() - controller.getScaleDiv2();
-
-	            on = setToolTipInfoAndPosition(on, cps);
-	        }
-	        int count = 0;
-	        for (Edge ed : upperNode.getConnections()) {
-
-	            AbstractCanvasObject cps;
-	            if (ed.getA().equals(this.upperNode)) {
-	                cps = ed.getB();
-	            } else {
-	                cps = ed.getA();
-	            }
-
-	            cx = upperNode.getLeftBorder() >> 1;
-	            cy = (int) (scalediv20 + 5 + (50 + scalediv20 + 10) * count);
-	            if (x - 50 <= cx && y - 50 <= cy && x >= cx && y >= cy) {
-
-	                on = true;
-	                toolTipPos.setX(cx - 25);
-	                toolTipPos.setY(cy + 50);
-	                toolTipText = cps.getName() + ", " + cps.getId();
-
-	            }
-	            count++;
-	        }
-
-	        toolTip = on;
-	        repaint();
-	    	}
-	    }
+			}
+
+			dragged = false;
+
+			// Rightclick List
+			setRightClickMenu(e);
+
+			markObjects();
+
+			if (doubleClick() && tempCps != null && tempCps instanceof HolonSwitch) {
+				((HolonSwitch) tempCps).switchState();
+			}
+
+			controller.calculateStateAndVisualForTimeStep(model.getCurIteration());
+			triggerUpdateController();
+			repaint();
+		}
+	}
+
+	@Override
+	public void mouseDragged(MouseEvent e) {
+		if (!disabled) {
+			// If Edge is drawn
+			x = e.getX();
+			y = e.getY();
+			if (!model.getSelectedCpsObjects().contains(tempCps) && !doMark) {
+				model.getSelectedCpsObjects().clear();
+				if (tempCps != null) {
+					controller.addSelectedObject(tempCps);
+				}
+			}
+			if (dragging) {
+				try {
+					// tempCps in the upperNode? else its a connected Object from
+					// outside
+					if (groupNode.getNodes().contains(tempCps)) {
+						dragged = true;
+						float xDist, yDist; // Distance
+
+						x = e.getX();
+						y = e.getY();
+
+						// Make sure its in bounds
+						if (e.getX() < controller.getScaleDiv2() + groupNode.getLeftBorder() + 5)
+							x = controller.getScaleDiv2() + groupNode.getLeftBorder() + 5;
+						else if (e.getX() > this.getWidth() - controller.getScaleDiv2())
+							x = this.getWidth() - controller.getScaleDiv2();
+						if (e.getY() < controller.getScaleDiv2())
+							y = controller.getScaleDiv2();
+						else if (e.getY() > this.getHeight() - controller.getScaleDiv2())
+							y = this.getHeight() - controller.getScaleDiv2();
+
+						// Distance
+						xDist = x - tempCps.getPosition().getX();
+						yDist = y - tempCps.getPosition().getY();
+
+						tempCps.setPosition(x, y); // Drag Position
+
+						// TipText Position and name
+						toolTip = true;
+						toolTipText = tempCps.getName() + ", " + tempCps.getId();
+						toolTipPos.setX(tempCps.getPosition().getX() - model.getScaleDiv2());
+						toolTipPos.setY(tempCps.getPosition().getY() - model.getScaleDiv2());
+
+						// All Selected Objects
+						for (AbstractCanvasObject cps : model.getSelectedCpsObjects()) {
+							if (cps != tempCps) {
+								x = (int) (cps.getPosition().getX() + xDist);
+								y = (int) (cps.getPosition().getY() + yDist);
+
+								// Make sure its in bounds
+								if (x < groupNode.getLeftBorder() + 5 + controller.getScaleDiv2())
+									x = controller.getScaleDiv2() + groupNode.getLeftBorder() + 5;
+								else if (x > this.getWidth() - controller.getScaleDiv2())
+									x = this.getWidth() - controller.getScaleDiv2();
+								if (y <= controller.getScaleDiv2())
+									y = controller.getScaleDiv2();
+								else if (y > this.getHeight() - controller.getScaleDiv2())
+									y = this.getHeight() - controller.getScaleDiv2();
+
+								cps.setPosition(x, y);
+							}
+						}
+					}
+					/**
+					 * check if something would be replaced
+					 */
+					if (model.getSelectedCpsObjects().size() == 1)
+						checkForReplacement(groupNode.getNodes(), tempCps, x, y);
+
+					repaint();
+				} catch (Exception eex) {
+
+				}
+
+			}
+
+			// Mark Objects
+			if (doMark) {
+				tempSelected.clear();
+				for (AbstractCanvasObject cps : groupNode.getNodes()) {
+					int x1 = sx, x2 = x, y1 = sy, y2 = y;
+
+					if (sx >= x) {
+						x1 = x;
+						x2 = sx;
+					}
+					if (sy >= y) {
+						y1 = y;
+						y2 = sy;
+					}
+					if (x1 <= cps.getPosition().getX() + model.getScaleDiv2()
+							&& y1 <= cps.getPosition().getY() + model.getScaleDiv2() && x2 >= cps.getPosition().getX()
+							&& y2 >= cps.getPosition().getY()) {
+						tempSelected.add(cps);
+
+					}
+				}
+				int count = 0;
+				for (Edge ed : groupNode.getConnections()) {
+					AbstractCanvasObject cps;
+					if (ed.getA().equals(groupNode)) {
+						cps = ed.getB();
+					} else {
+						cps = ed.getA();
+					}
+
+					int x1 = sx, x2 = x, y1 = sy, y2 = y;
+
+					if (sx >= x) {
+						x1 = x;
+						x2 = sx;
+					}
+					if (sy >= y) {
+						y1 = y;
+						y2 = sy;
+					}
+
+					if (x1 <= groupNode.getLeftBorder() >> 1
+							&& y1 <= (int) (5 + (model.getScale() + scalediv20 + 10) * count) + model.getScaleDiv2()
+							&& x2 >= groupNode.getLeftBorder() >> 1
+							&& y2 >= (int) (5 + (model.getScale() + scalediv20 + 10) * count)) {
+						tempSelected.add(cps);
+
+					}
+					count++;
+				}
+			}
+
+			repaint();
+		}
+	}
+
+	@Override
+	public void mouseMoved(MouseEvent e) {
+		{
+			x = e.getX();
+			y = e.getY();
+			// Everything for the tooltip :)
+			boolean on = false;
+			for (AbstractCanvasObject cps : groupNode.getNodes()) {
+
+				cx = cps.getPosition().getX() - controller.getScaleDiv2();
+				cy = cps.getPosition().getY() - controller.getScaleDiv2();
+
+				on = setToolTipInfoAndPosition(on, cps);
+			}
+			int count = 0;
+			for (Edge ed : groupNode.getConnections()) {
+
+				AbstractCanvasObject cps;
+				if (ed.getA().equals(this.groupNode)) {
+					cps = ed.getB();
+				} else {
+					cps = ed.getA();
+				}
+
+				cx = groupNode.getLeftBorder() >> 1;
+				cy = (int) (scalediv20 + 5 + (50 + scalediv20 + 10) * count);
+				if (x - 50 <= cx && y - 50 <= cy && x >= cx && y >= cy) {
+
+					on = true;
+					toolTipPos.setX(cx - 25);
+					toolTipPos.setY(cy + 50);
+					toolTipText = cps.getName() + ", " + cps.getId();
+
+				}
+				count++;
+			}
+
+			toolTip = on;
+			repaint();
+		}
+	}
 }

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff