Browse Source

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

# Conflicts:
#	bin/ui/view/GUI.class
Teh-Hai Julian Zheng 7 years ago
parent
commit
701c2b1268

BIN
res/Images/Thumbs.db


BIN
res/Images/switch-off.png


+ 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();
 	}

+ 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.addObjectCategory(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;
 	}
 }

+ 3 - 1
src/ui/view/GUI.java

@@ -212,6 +212,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);
@@ -223,7 +225,7 @@ public class GUI implements CategoryListener {
 							h = new HolonTransformer(tempCps);
 						}
 
-						h.setPosition((int) canvas.getMousePosition().getX(), (int) canvas.getMousePosition().getY());
+						h.setPosition(x, y);
 						controller.addObjectCanvas(h);
 						for (int i = 0; i < model.getObjectsOnCanvas().size(); i++) {
 							CpsObject temp = model.getObjectsOnCanvas().get(i);

+ 56 - 25
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;
@@ -32,6 +34,8 @@ import javax.swing.JToolTip;
 import classes.CpsObject;
 import classes.HolonElement;
 import classes.HolonObject;
+import classes.HolonSwitch;
+import classes.HolonTransformer;
 import ui.controller.Control;
 import ui.model.*;
 
@@ -46,9 +50,9 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 	private int cx;
 	private int cy;
 
-	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();
 
@@ -66,6 +70,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);
@@ -88,6 +93,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);
@@ -102,7 +108,6 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 		// drawEdges
 		g2.setColor(Color.BLACK);
 		if (drawEdge)
-
 			g2.drawLine(tempCps.getPosition().x + controller.getScaleDiv2(),
 					tempCps.getPosition().y + controller.getScaleDiv2(), x, y);
 
@@ -144,7 +149,18 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 
 	@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
@@ -168,17 +184,15 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 		tempCps = null;
 		// Object Selection
 		for (CpsObject cps : model.getObjectsOnCanvas()) {
-
 			cx = cps.getPosition().x;
 			cy = cps.getPosition().y;
 			if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy) {
-
 				tempCps = cps;
+				//If drawing an Edge (CTRL down)
 				if (e.isControlDown())
-					drawEdge = true;
+					drawEdge = true;		
 			}
 		}
-
 		// Object Selection Highlighting (selectRect)
 		objectSelectionHighlighting();
 
@@ -191,19 +205,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.setPosition(e.getX() - controller.getScaleDiv2(), e.getY() - controller.getScaleDiv2());
-
-			tempCps = null;
 		}
 
-		// Rechtsklick Liste
+		// Rightclick List
 		if (e.getButton() == e.BUTTON3) {
 			if (e.getButton() == e.BUTTON3 && tempCps != null) {
 				itemDelete.setEnabled(true);
@@ -218,24 +229,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 {
-
+				//Drag Position
 				tempCps.setPosition(e.getX() - controller.getScaleDiv2(), e.getY() - controller.getScaleDiv2());
 				dragging = true;
+				//Highlighting Position
 				selectRect.setLocation(tempCps.getPosition().x - (controller.getScale() / 20),
-						tempCps.getPosition().y - (controller.getScale() / 20));
-
+						tempCps.getPosition().y - (controller.getScale() / 20)); 
+				//TipText Position and name
 				objectTT.setTipText(tempCps.getName());
-				objectTT.setLocation(tempCps.getPosition().x, tempCps.getPosition().y);
+				objectTT.setLocation(tempCps.getPosition().x, tempCps.getPosition().y+controller.getScale());
 				repaint();
 			} catch (Exception e2) {
-				// TODO: handle exception
 			}
 		}
 	}
@@ -244,7 +255,7 @@ 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()) {
 
@@ -253,7 +264,7 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 			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;
 			}
 		}
@@ -268,7 +279,6 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 	 */
 	private void objectSelectionHighlighting() {
 		if (tempCps != null) {
-
 			selectRect.setBounds(tempCps.getPosition().x - (controller.getScale() / 20),
 					tempCps.getPosition().y - (controller.getScale() / 20),
 					controller.getScale() + controller.getScale() / 10,
@@ -286,7 +296,6 @@ class MyCanvas extends JPanel implements MouseListener, MouseMotionListener {
 	 */
 	private void drawDeleteEdge() {
 		for (CpsObject cps : model.getObjectsOnCanvas()) {
-
 			cx = cps.getPosition().x;
 			cy = cps.getPosition().y;
 			if (x - controller.getScale() <= cx && y - controller.getScale() <= cy && x >= cx && y >= cy) {
@@ -301,4 +310,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;
+	}
 }