Explorar o código

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

Conflicts:
	bin/ui/view/GUI$1.class
	bin/ui/view/GUI$2.class
	bin/ui/view/GUI$3.class
	bin/ui/view/GUI$4.class
	bin/ui/view/GUI$5.class
	bin/ui/view/GUI$6.class
	bin/ui/view/GUI.class
	bin/ui/view/MyCanvas.class
	src/ui/view/MyCanvas.java
Edgardo Palza %!s(int64=8) %!d(string=hai) anos
pai
achega
e57a523e17

BIN=BIN
bin/Images/Thumbs.db


BIN=BIN
bin/classes/Category.class


BIN=BIN
bin/classes/CpsObject.class


BIN=BIN
bin/classes/HolonObject.class


BIN=BIN
bin/classes/HolonSwitch.class


BIN=BIN
bin/classes/HolonTransformer.class


BIN=BIN
bin/ui/controller/Control.class


BIN=BIN
bin/ui/view/AddObjectPopUp.class


BIN=BIN
res/Images/Thumbs.db


BIN=BIN
res/Images/switch-off.png


+ 17 - 6
src/classes/Category.java

@@ -6,14 +6,29 @@ import Interfaces.ComparableObject;
 
 public class Category implements ComparableObject{
 	
-	private int id;
+	private int ID;
 	private ArrayList<CpsObject> objects;
 	private String name;
 	
 	public Category(String name){
 		setObjects(new ArrayList<CpsObject>());
 		setName(name);
-		id = -1;
+		setID(-1);
+	
+	}
+
+	/**
+	 * @return the id
+	 */
+	public int getID() {
+		return ID;
+	}
+
+	/**
+	 * @param id the id to set
+	 */
+	public void setID(int id) {
+		this.ID = id;
 	}
 
 	/**
@@ -49,9 +64,5 @@ public class Category implements ComparableObject{
 		return getName();
 	}
 
-	@Override
-	public int getID() {
-		return id;
-	}
 	
 }

+ 49 - 24
src/classes/CpsObject.java

@@ -11,11 +11,11 @@ public abstract class CpsObject implements ComparableObject {
 	/* Name given by the user */
 	String name;
 	/* ID of the Obj. */
-	int id;
+	int ID;
 	/* Path of the image for the Obj. */
 	String image;
 	/* Array of neighbors */
-	ArrayList<CpsObject> connectedTo;
+	ArrayList<CpsObject> connections;
 	/* Position with a X and Y value */
 	Position position;
 	/* Energy input and output of each object in the grid */
@@ -26,24 +26,23 @@ public abstract class CpsObject implements ComparableObject {
 	 * Constructor for an CpsObejct with an unique ID
 	 */
 	public CpsObject(String objName) {
-		this.objName = objName;
-		this.name = objName;
-		connectedTo = new ArrayList<CpsObject>();
-		position = new Position();
-		// id = idCounter.nextId();
-		image = "/Images/Dummy_House.png";
-		System.out.println("ID: " + id + " of " + objName);
+		setObjName(objName);
+		setName(objName);
+		setConnections(new ArrayList<CpsObject>());
+		setPosition(new Position());
+		setImage("/Images/Dummy_House.png");
+		System.out.println("ID: " + ID + " of " + objName);
 	}
 
 	public CpsObject(CpsObject obj) {
-		this.objName = obj.getObjName();
-		connectedTo = new ArrayList<CpsObject>();
-		position = new Position();
-		id = idCounter.nextId();
-		this.name = obj.getName();
-		this.energyIn = obj.getEnergyIn();
-		this.energyOut = obj.getEnergyOut();
-		this.image = obj.getImage();
+		setObjName(obj.getObjName());
+		setName(obj.getObjName());
+		setConnections(new ArrayList<CpsObject>());
+		setPosition(new Position());
+		setID(idCounter.nextId());
+		setEnergyIn(obj.getEnergyIn());
+		setEnergyOut(obj.getEnergyOut());
+		setImage(obj.getImage());
 	}
 
 	/* Obj type */
@@ -66,7 +65,15 @@ public abstract class CpsObject implements ComparableObject {
 
 	/* Unique ID number */
 	public int getID() {
-		return id;
+		return ID;
+	}
+
+	/**
+	 * @param iD
+	 *            the iD to set
+	 */
+	public void setID(int ID) {
+		this.ID = ID;
 	}
 
 	/* Image path */
@@ -78,22 +85,40 @@ public abstract class CpsObject implements ComparableObject {
 		this.image = image;
 	}
 
+	/**
+	 * @return the connections
+	 */
+	public ArrayList<CpsObject> getConnections() {
+		return connections;
+	}
+
+	/**
+	 * @param connections
+	 *            the connections to set
+	 */
+	public void setConnections(ArrayList<CpsObject> connections) {
+		this.connections = connections;
+	}
+
 	/* Neighbors array */
 	public ArrayList<CpsObject> getConnectedTo() {
-		return connectedTo;
+		return connections;
 	}
 
 	public void AddConnection(CpsObject toConnect) {
-		connectedTo.add(toConnect);
+		connections.add(toConnect);
+	}
+
+	public void setPosition(Position pos) {
+		this.position = pos;
 	}
 
 	/* Position (x and Y) */
-	public void setPos(int x, int y) {
-		position.x = x;
-		position.y = y;
+	public void setPosition(int x, int y) {
+		setPosition(new Position(x, y));
 	}
 
-	public Position getPos() {
+	public Position getPosition() {
 		return position;
 	}
 

+ 4 - 6
src/classes/HolonObject.java

@@ -20,19 +20,18 @@ public class HolonObject extends CpsObject {
 	 */
 	public HolonObject(String ObjName) {
 		super(ObjName);
-		elements = new ArrayList<HolonElement>();
+		setElements(new ArrayList<HolonElement>());
 	}
 
 	public HolonObject(String ObjName, String obj) {
 		super(ObjName);
-		super.name = obj;
-		elements = new ArrayList<HolonElement>();
+		super.setName(obj);
+		setElements(new ArrayList<HolonElement>());
 	}
 
 	public HolonObject(CpsObject obj) {
 		super(obj);
-		elements = new ArrayList<HolonElement>();
-		this.elements = ((HolonObject) obj).getElements();
+		setElements(((HolonObject) obj).getElements());
 
 	}
 
@@ -92,7 +91,6 @@ public class HolonObject extends CpsObject {
 			} else {
 				objString = objString + ", " + e.getEleName();
 			}
-
 		}
 		return objString;
 	}

+ 12 - 8
src/classes/HolonSwitch.java

@@ -5,29 +5,33 @@ public class HolonSwitch extends CpsObject {
 	 * True, if this wire is working (capable of carrying electricity), else
 	 * false
 	 */
-	boolean isWorking;
+	boolean isActive;
 
 	public HolonSwitch(String ObjName) {
 		super(ObjName);
-		isWorking = false;
+		setState(false);
 	}
 
 	public HolonSwitch(String ObjName, String obj) {
 		super(ObjName);
-		super.name = obj;
-		isWorking = false;
+		super.setName(obj);
+		setState(false);
 	}
 
 	public HolonSwitch(CpsObject obj) {
 		super(obj);
-		this.isWorking = ((HolonSwitch)obj).getStates();
+		setState(((HolonSwitch)obj).getState());
 	}
 
 	public void switchState() {
-		this.isWorking = !isWorking;
+		this.isActive = !isActive;
 	}
 
-	public boolean getStates() {
-		return this.isWorking;
+	public boolean getState() {
+		return this.isActive;
+	}
+	
+	public void setState(boolean state){
+		this.isActive = state;
 	}
 }

+ 2 - 2
src/classes/HolonTransformer.java

@@ -15,12 +15,12 @@ public class HolonTransformer extends CpsObject {
 
 	public HolonTransformer(String ObjName, String obj) {
 		super(ObjName);
-		super.name = obj;
+		super.setName(obj);
 	}
 
 	public HolonTransformer(CpsObject obj) {
 		super(obj);
-		this.transformRatio = ((HolonTransformer)obj).getTransformRatio();
+		this.setTransformRatio(((HolonTransformer) obj).getTransformRatio());
 	}
 
 	/**

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

@@ -37,28 +37,27 @@ public class Control {
 	}
 
 	/* Operations for Categories and Objects */
-	public void addNewCategory(String catName) {
+	public void addCategory(String catName) {
 		categoryController.addNewCategory(catName);
 	}
 
-	public void addNewObject(Category cat, String name, String objType) {
+	public void addObject(Category cat, String name, String objType) {
 		categoryController.addNewHolonObject(cat, name, objType);
 	}
 
-	public void addNewObject(Category cat, HolonObject object) {
+	public void addObjectCategory(Category cat, HolonObject object) {
 		categoryController.addObject(cat, object);
 	}
 
-	public void addNewTransformer(Category cat, String name, String objType) {
+	public void addTransformer(Category cat, String name, String objType) {
 		categoryController.addNewHolonTransformer(cat, name, objType);
 	}
 
-	public void addNewSwitch(Category cat, String name, String objType) {
+	public void addSwitch(Category cat, String name, String objType) {
 		categoryController.addNewHolonSwitch(cat, name, objType);
 	}
 
 	public Category searchCategory(String name) {
-
 		return categoryController.searchCatNode(name);
 	}
 
@@ -70,12 +69,12 @@ public class Control {
 		categoryController.deleteCategory(catName);
 	}
 
-	public void deleteObjectInCat(String toDelete, String deleteIn) {
+	public void delObjectCategory(String toDelete, String deleteIn) {
 		categoryController.deleteObjectInCat(toDelete, deleteIn);
 	}
 
 	/* Operations for Canvas */
-	public void addObject(CpsObject object) {
+	public void addObjectCanvas(CpsObject object) {
 		canvasController.addObjectIntoCanvas(object);
 	}
 
@@ -84,11 +83,11 @@ public class Control {
 	}
 
 	/* Operations for Objects and Elements */
-	public void addNewElementIntoCanvasObjects(String objName, String eleName, int amount, float energy) {
+	public void addElementCanvasObject(String objName, String eleName, int amount, float energy) {
 		objectController.addNewElementIntoCanvasObject(objName, eleName, amount, energy);
 	}
 
-	public void addNewElementIntoCategoryObject(String catName, String objName, String eleName, int amount,
+	public void addElementCategoryObject(String catName, String objName, String eleName, int amount,
 			float energy) {
 		objectController.addNewElementIntoCategoryObject(catName, objName, eleName, amount, energy);
 	}

+ 10 - 0
src/ui/controller/GlobalController.java

@@ -10,10 +10,20 @@ public class GlobalController {
 		this.MODEL = model;
 	}
 
+	/**
+	 * Returns SCALE
+	 * 
+	 * @return SCALE
+	 */
 	public int getScale(){
 		return MODEL.getScale();
 	}
 	
+	/**
+	 * Returns SCALE Divided by 2
+	 * 
+	 * @return SCALE Divided by 2
+	 */
 	public int getScaleDiv2(){
 		return MODEL.getScaleDiv2();
 	}

+ 3 - 2
src/ui/controller/ObjectController.java

@@ -105,8 +105,9 @@ public class ObjectController {
 		obj.getElements().remove(ele);
 	}
 
-	public void deleteElementInCategory(Category cat, HolonObject obj, HolonElement ele) {
-
+	public void deleteElementInCanvas(String obj, String ele) {
+		HolonElement element;
+		//searchHolonObject(obj, MODEL.getObjectsOnCanvas()).;
 	}
 
 	/**

+ 73 - 30
src/ui/view/AddObjectPopUp.java

@@ -1,6 +1,7 @@
 package ui.view;
 
 import java.awt.BorderLayout;
+import java.awt.Color;
 import java.awt.Component;
 import java.awt.FlowLayout;
 import java.awt.Image;
@@ -84,6 +85,24 @@ public class AddObjectPopUp extends JDialog {
 		}
 		{
 			objectName = new JTextField();
+			objectName.addKeyListener(new KeyListener() {
+				@Override
+				public void keyPressed(KeyEvent arg0) {
+					// TODO Auto-generated method stub
+					
+				}
+
+				@Override
+				public void keyReleased(KeyEvent e) {
+					// TODO Auto-generated method stub
+					
+				}
+
+				@Override
+				public void keyTyped(KeyEvent e) {
+					objectName.setBackground(Color.WHITE);					
+				}
+			});
 			objectName.setBounds(98, 18, 172, 20);
 			contentPanel.add(objectName);
 			objectName.setColumns(10);
@@ -101,6 +120,24 @@ public class AddObjectPopUp extends JDialog {
 		}
 		{
 			sourcePath = new JTextField();
+			sourcePath.addKeyListener(new KeyListener() {
+				@Override
+				public void keyPressed(KeyEvent arg0) {
+					// TODO Auto-generated method stub
+					
+				}
+
+				@Override
+				public void keyReleased(KeyEvent e) {
+					// TODO Auto-generated method stub
+					
+				}
+
+				@Override
+				public void keyTyped(KeyEvent e) {
+					sourcePath.setBackground(Color.WHITE);					
+				}
+			});
 			sourcePath.setBounds(148, 77, 271, 20);
 			contentPanel.add(sourcePath);
 			sourcePath.setColumns(10);
@@ -128,10 +165,10 @@ public class AddObjectPopUp extends JDialog {
 				listModel = new DefaultListModel();
 				HolonElement hel = new HolonElement("Test", 100, 5);
 				String name = hel.getEleName();
-				/*for (int i = 0; i < 11; i++) {
-					hel.setEleName(name + i);
-					addElement(hel);
-				}*/
+				/*
+				 * for (int i = 0; i < 11; i++) { hel.setEleName(name + i);
+				 * addElement(hel); }
+				 */
 				list = new JList(listModel);
 				scrollPane.setViewportView(list);
 			}
@@ -165,21 +202,24 @@ public class AddObjectPopUp extends JDialog {
 				okButton.addMouseListener(new MouseAdapter() {
 					public void mouseClicked(MouseEvent e) {
 						Component frame = null;
-						if (!sourcePath.getText().equals(filePath)) {
-							//JOptionPane.showMessageDialog(frame, "No image selected!");
-						}
-						if(objectName.getText().length() == 0){
-							JOptionPane.showMessageDialog(frame, "please enter a name");
-						}
-						else {
-							copieFile();
-							theObject = new HolonObject(objectName.getText());
-							theObject.setElements(hElements);
-							theObject.setImage(imagePath);
-							controller.addNewObject(controller.searchCategory(givenCategory), theObject);
-							System.out.println(theObject.getImage());
-							System.out.println(givenCategory);
-							dispose();
+						if (objectName.getText().length() == 0) {
+							// JOptionPane.showMessageDialog(frame, "please
+							// enter a name");
+							objectName.setBackground(new Color(255, 50, 50));
+							if (!sourcePath.getText().equals(filePath)) {
+								// JOptionPane.showMessageDialog(frame, "No
+								// image selected!");
+								sourcePath.setBackground(new Color(255, 50, 50));
+							} else {
+								copieFile();
+								theObject = new HolonObject(objectName.getText());
+								theObject.setElements(hElements);
+								theObject.setImage(imagePath);
+								controller.addObjectCategory(controller.searchCategory(givenCategory), theObject);
+								System.out.println(theObject.getImage());
+								System.out.println(givenCategory);
+								dispose();
+							}
 						}
 					}
 				});
@@ -192,9 +232,10 @@ public class AddObjectPopUp extends JDialog {
 				cancelButton.setActionCommand("Cancel");
 				buttonPane.add(cancelButton);
 				cancelButton.addActionListener(new ActionListener() {
-		            public void actionPerformed(ActionEvent e) {
-		                dispose();
-		            }});
+					public void actionPerformed(ActionEvent e) {
+						dispose();
+					}
+				});
 			}
 		}
 	}
@@ -214,8 +255,9 @@ public class AddObjectPopUp extends JDialog {
 			selectedFile = FileChooser.getSelectedFile();
 			filePath = selectedFile.getAbsolutePath();
 			sourcePath.setText(filePath);
-//			Image image = createImage((ImageProducer) selectedFile);
-			ImageIcon icon = new ImageIcon(new ImageIcon(filePath).getImage().getScaledInstance(50, 50, Image.SCALE_SMOOTH));
+			// Image image = createImage((ImageProducer) selectedFile);
+			ImageIcon icon = new ImageIcon(
+					new ImageIcon(filePath).getImage().getScaledInstance(50, 50, Image.SCALE_SMOOTH));
 			lblImagePreview.setIcon(icon);
 		} else {
 			System.out.println("Failed to Load");
@@ -229,7 +271,7 @@ public class AddObjectPopUp extends JDialog {
 		try {
 			File source = new File(filePath);
 			File dest = new File(System.getProperty("user.dir") + "/bin/Images/", selectedFile.getName());
-			imagePath = "/Images/" + selectedFile.getName() ;
+			imagePath = "/Images/" + selectedFile.getName();
 			inStream = new FileInputStream(source);
 			outStream = new FileOutputStream(dest);
 			byte[] buffer = new byte[1024];
@@ -248,15 +290,16 @@ public class AddObjectPopUp extends JDialog {
 			e1.printStackTrace();
 		}
 	}
-	
-	public HolonObject getObject(){
+
+	public HolonObject getObject() {
 		return theObject;
 	}
-	
-	public void setController(Control controller){
+
+	public void setController(Control controller) {
 		this.controller = controller;
 	}
-	public void setCategory(String cat){
+
+	public void setCategory(String cat) {
 		givenCategory = cat;
 	}
 }

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

@@ -218,6 +218,8 @@ public class GUI implements CategoryListener {
 			public void mouseReleased(MouseEvent e) {
 				try {
 					if (dragging) {
+						int x = (int) canvas.getMousePosition().getX();
+						int y = (int) canvas.getMousePosition().getY();
 						CpsObject h = null;
 						if (tempCps.getClass() == HolonObject.class) {
 							h = new HolonObject(tempCps);
@@ -229,8 +231,8 @@ public class GUI implements CategoryListener {
 							h = new HolonTransformer(tempCps);
 						}
 
-						h.setPos((int) canvas.getMousePosition().getX(), (int) canvas.getMousePosition().getY());
-						controller.addObject(h);
+						h.setPosition(x, y);
+						controller.addObjectCanvas(h);
 						for (int i = 0; i < model.getObjectsOnCanvas().size(); i++) {
 							CpsObject temp = model.getObjectsOnCanvas().get(i);
 							String output = "Element: " + temp.getObjName() + " with ID: " + temp.getID();
@@ -294,7 +296,7 @@ public class GUI implements CategoryListener {
 				case "Category":
 					String catName = JOptionPane.showInputDialog("Please enter a Name for Category ");
 					if (catName.length() != 0) {
-						controller.addNewCategory(catName);
+						controller.addCategory(catName);
 					}
 					break;
 
@@ -358,7 +360,7 @@ public class GUI implements CategoryListener {
 						}
 					case 2:
 						DefaultMutableTreeNode parent = (DefaultMutableTreeNode) selectedNode.getParent();
-						controller.deleteObjectInCat(nodeName, parent.getUserObject().toString());
+						controller.delObjectCategory(nodeName, parent.getUserObject().toString());
 						break;
 
 					default:
@@ -418,11 +420,11 @@ public class GUI implements CategoryListener {
 					switch (objType) {
 
 					case "Switch":
-						controller.addNewSwitch(cat, objname, objType);
+						controller.addSwitch(cat, objname, objType);
 						break;
 
 					case "Transformer":
-						controller.addNewTransformer(cat, objname, objType);
+						controller.addTransformer(cat, objname, objType);
 						break;
 					}
 				}

+ 103 - 27
src/ui/view/MyCanvas.java

@@ -19,6 +19,8 @@ import java.awt.event.MouseMotionListener;
 import java.awt.geom.Line2D;
 import java.util.ArrayList;
 import java.util.LinkedList;
+import java.util.Timer;
+import java.util.TimerTask;
 
 import javax.swing.AbstractButton;
 import javax.swing.ImageIcon;
@@ -33,6 +35,10 @@ import classes.CpsObject;
 import classes.HolonElement;
 import classes.HolonObject;
 import classes.HolonSwitch;
+<<<<<<< HEAD
+=======
+import classes.HolonTransformer;
+>>>>>>> b21529a76393a3f2ba0825f9a04ab5b2a8e80a33
 import ui.controller.Control;
 import ui.model.*;
 
@@ -48,9 +54,9 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 	private int cy;
 	ArrayList<HolonElement> dataSelected = new ArrayList<HolonElement>();
 
-	boolean dragging = false;
-	boolean drawEdge = false;
-	boolean dropDelete = false;
+	private boolean dragging = false;	//for dragging
+	private boolean drawEdge = false;	//for drawing edges
+	private boolean click = false; 		// for double click
 	private CpsObject tempCps = null;
 	private Rectangle selectRect = new Rectangle();
 
@@ -68,6 +74,7 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 		itemDelete.addActionListener(new ActionListener() {
 			@Override
 			public void actionPerformed(ActionEvent e) {
+				//Remove the selected Object object
 				model.getObjectsOnCanvas().remove(tempCps);
 				for (CpsObject cps : model.getObjectsOnCanvas()) {
 					cps.getConnectedTo().remove(tempCps);
@@ -90,6 +97,7 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 	 */
 	public void paintComponent(Graphics g) {
 		super.paintComponent(g);
+		//Rendering
 		g2 = (Graphics2D) g;
 		RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
 		g2.setRenderingHints(rh);
@@ -105,14 +113,28 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 		// drawEdges
 		g2.setColor(Color.BLACK);
 		if (drawEdge)
+<<<<<<< HEAD
 			g2.drawLine(tempCps.getPos().x + controller.getScaleDiv2(), tempCps.getPos().y + controller.getScaleDiv2(),
 					x, y);
+=======
+			g2.drawLine(tempCps.getPosition().x + controller.getScaleDiv2(),
+					tempCps.getPosition().y + controller.getScaleDiv2(), x, y);
+>>>>>>> b21529a76393a3f2ba0825f9a04ab5b2a8e80a33
 
 		for (CpsObject cps : model.getObjectsOnCanvas()) {
 			for (CpsObject con : cps.getConnectedTo()) {
 				if (con.getID() != model.getSelectedObjectID() && cps.getID() != model.getSelectedObjectID())
+<<<<<<< HEAD
 					g2.drawLine(cps.getPos().x + controller.getScaleDiv2(), cps.getPos().y + controller.getScaleDiv2(),
 							con.getPos().x + controller.getScaleDiv2(), con.getPos().y + controller.getScaleDiv2());
+=======
+
+					g2.drawLine(cps.getPosition().x + controller.getScaleDiv2(),
+							cps.getPosition().y + controller.getScaleDiv2(),
+							con.getPosition().x + controller.getScaleDiv2(),
+							con.getPosition().y + controller.getScaleDiv2());
+
+>>>>>>> b21529a76393a3f2ba0825f9a04ab5b2a8e80a33
 			}
 		}
 
@@ -121,21 +143,44 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 		for (CpsObject cps : model.getObjectsOnCanvas()) {
 			for (CpsObject con : cps.getConnectedTo()) {
 				if (con.getID() == model.getSelectedObjectID())
+<<<<<<< HEAD
 					g2.drawLine(cps.getPos().x + controller.getScaleDiv2(), cps.getPos().y + controller.getScaleDiv2(),
 							con.getPos().x + controller.getScaleDiv2(), con.getPos().y + controller.getScaleDiv2());
+=======
+
+					g2.drawLine(cps.getPosition().x + controller.getScaleDiv2(),
+							cps.getPosition().y + controller.getScaleDiv2(),
+							con.getPosition().x + controller.getScaleDiv2(),
+							con.getPosition().y + controller.getScaleDiv2());
+
+>>>>>>> b21529a76393a3f2ba0825f9a04ab5b2a8e80a33
 			}
 		}
 
 		// Objects
 		for (CpsObject cps : model.getObjectsOnCanvas()) {
 			img = new ImageIcon(this.getClass().getResource(cps.getImage())).getImage();
-			g2.drawImage(img, cps.getPos().x, cps.getPos().y, controller.getScale(), controller.getScale(), null);
+
+			g2.drawImage(img, cps.getPosition().x, cps.getPosition().y, controller.getScale(), controller.getScale(),
+					null);
+
 		}
 	}
 
 	@Override
 	public void mouseClicked(MouseEvent e) {
-		// TODO Auto-generated method stub
+		//If double clicked on a Switch change the Image to on/off
+		if (doubleClick() && tempCps != null && tempCps.getClass() == HolonSwitch.class) {
+			System.out.println("trans double click");
+			if (tempCps.getImage().compareTo("/Images/switch-on.png") == 0) {
+				tempCps.setImage("/Images/switch-off.png");
+				System.out.println("off");
+			} else {
+				tempCps.setImage("/Images/switch-on.png");
+				System.out.println("on");
+			}
+		}
+		repaint();
 	}
 
 	@Override
@@ -159,11 +204,13 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 		tempCps = null;
 		// Object Selection
 		for (CpsObject cps : model.getObjectsOnCanvas()) {
-			cx = cps.getPos().x;
-			cy = cps.getPos().y;
+			cx = cps.getPosition().x;
+			cy = cps.getPosition().y;
 			if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy) {
 				tempCps = cps;
+				//If drawing an Edge (CTRL down)
 				if (e.isControlDown())
+<<<<<<< HEAD
 					drawEdge = true;
 				if (tempCps.getClass() == HolonObject.class) {
 					HolonObject tempObj = ((HolonObject) tempCps);
@@ -171,9 +218,11 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 				} else {
 					dataSelected = null;
 				}
+=======
+					drawEdge = true;		
+>>>>>>> b21529a76393a3f2ba0825f9a04ab5b2a8e80a33
 			}
 		}
-
 		// Object Selection Highlighting (selectRect)
 		objectSelectionHighlighting();
 
@@ -186,17 +235,16 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 			drawEdge = false;
 			drawDeleteEdge();
 		}
-
+		
+		//if Dragged reposition the Object
 		if (dragging) {
 			x = e.getX();
 			y = e.getY();
-
 			dragging = false;
-			tempCps.setPos(e.getX() - controller.getScaleDiv2(), e.getY() - controller.getScaleDiv2());
-			tempCps = null;
+			tempCps.setPosition(e.getX() - controller.getScaleDiv2(), e.getY() - controller.getScaleDiv2());
 		}
 
-		// Rechtsklick Liste
+		// Rightclick List
 		if (e.getButton() == e.BUTTON3) {
 			if (e.getButton() == e.BUTTON3 && tempCps != null) {
 				itemDelete.setEnabled(true);
@@ -211,22 +259,24 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 
 	@Override
 	public void mouseDragged(MouseEvent e) {
-		// TODO Auto-generated method stub
+		//If Edge is drawn
 		if (drawEdge) {
 			x = e.getX();
 			y = e.getY();
 			repaint();
 		} else {
 			try {
-				tempCps.setPos(e.getX() - controller.getScaleDiv2(), e.getY() - controller.getScaleDiv2());
+				//Drag Position
+				tempCps.setPosition(e.getX() - controller.getScaleDiv2(), e.getY() - controller.getScaleDiv2());
 				dragging = true;
-				selectRect.setLocation(tempCps.getPos().x - (controller.getScale() / 20),
-						tempCps.getPos().y - (controller.getScale() / 20));
+				//Highlighting Position
+				selectRect.setLocation(tempCps.getPosition().x - (controller.getScale() / 20),
+						tempCps.getPosition().y - (controller.getScale() / 20)); 
+				//TipText Position and name
 				objectTT.setTipText(tempCps.getName());
-				objectTT.setLocation(tempCps.getPos().x, tempCps.getPos().y);
+				objectTT.setLocation(tempCps.getPosition().x, tempCps.getPosition().y+controller.getScale());
 				repaint();
 			} catch (Exception e2) {
-				// TODO: handle exception
 			}
 		}
 	}
@@ -235,14 +285,16 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 	public void mouseMoved(MouseEvent e) {
 		x = e.getX();
 		y = e.getY();
-
+		//Everytghin for the tooltip :)
 		boolean on = false;
 		for (CpsObject cps : model.getObjectsOnCanvas()) {
-			cx = cps.getPos().x;
-			cy = cps.getPos().y;
+
+			cx = cps.getPosition().x;
+			cy = cps.getPosition().y;
 			if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy) {
+
 				objectTT.setTipText(cps.getName());
-				objectTT.setLocation(cx, cy);
+				objectTT.setLocation(cx, cy+controller.getScale());
 				on = true;
 			}
 		}
@@ -257,10 +309,11 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 	 */
 	private void objectSelectionHighlighting() {
 		if (tempCps != null) {
-			selectRect.setBounds(tempCps.getPos().x - (controller.getScale() / 20),
-					tempCps.getPos().y - (controller.getScale() / 20),
+			selectRect.setBounds(tempCps.getPosition().x - (controller.getScale() / 20),
+					tempCps.getPosition().y - (controller.getScale() / 20),
 					controller.getScale() + controller.getScale() / 10,
 					controller.getScale() + controller.getScale() / 10);
+
 			controller.setSelectedObjectID(tempCps.getID());
 		} else {
 			controller.setSelectedObjectID(0);
@@ -273,9 +326,10 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 	 */
 	private void drawDeleteEdge() {
 		for (CpsObject cps : model.getObjectsOnCanvas()) {
-			cx = cps.getPos().x;
-			cy = cps.getPos().y;
+			cx = cps.getPosition().x;
+			cy = cps.getPosition().y;
 			if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy) {
+
 				if (!cps.getConnectedTo().contains(tempCps)) {
 					cps.AddConnection(tempCps);
 					tempCps.AddConnection(cps);
@@ -286,4 +340,26 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 			}
 		}
 	}
+	
+	/**
+	 * Checks if a double click was made
+	 * 
+	 * @return true if doublecklick, false if not
+	 */
+	private boolean doubleClick(){
+		if (click) {
+	        click = false;
+	        return true;
+	    } else {
+	    	click = true;
+	        Timer t = new Timer("doubleclickTimer", false);
+	        t.schedule(new TimerTask() {
+	            @Override
+	            public void run() {
+	            	click = false;
+	            }
+	        }, 500);
+	    }
+		return false;
+	}
 }