瀏覽代碼

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

Teh-Hai Julian Zheng 8 年之前
父節點
當前提交
36c1833e2b
共有 3 個文件被更改,包括 83 次插入31 次删除
  1. 76 21
      src/ui/view/GUI.java
  2. 3 7
      src/ui/view/MyCanvas.java
  3. 4 3
      src/ui/view/UpperNodeCanvas.java

+ 76 - 21
src/ui/view/GUI.java

@@ -24,6 +24,8 @@ import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Timer;
+import java.util.TimerTask;
 
 import javax.swing.AbstractAction;
 import javax.swing.ActionMap;
@@ -90,6 +92,9 @@ import ui.model.Model;
  */
 public class GUI<E> implements CategoryListener {
 
+	// for doubleclick
+	private boolean click = false;
+
 	private JFrame frmCyberPhysical;
 
 	private final SimulationMenu simMenu;
@@ -1010,24 +1015,49 @@ public class GUI<E> implements CategoryListener {
 			public void mouseReleased(MouseEvent e) {
 				try {
 					if (dragging) {
-						int x = (int) canvas.getMousePosition().getX();
-						int y = (int) canvas.getMousePosition().getY();
-						AbstractCpsObject h = null;
-						if (tempCps.getClass() == HolonObject.class) {
-							h = new HolonObject(tempCps);
-						}
-						if (tempCps.getClass() == HolonSwitch.class) {
-							h = new HolonSwitch(tempCps);
-						}
-						if (tempCps.getClass() == HolonTransformer.class) {
-							h = new HolonTransformer(tempCps);
-						}
+						if (((JScrollPane) tabbedPane.getSelectedComponent()).getViewport().getComponent(0) instanceof UpperNodeCanvas) {
+							UpperNodeCanvas unc =  ((UpperNodeCanvas)((JScrollPane) tabbedPane.getSelectedComponent()).getViewport().getComponent(0));
+							
+							int x = (int) unc.getMousePosition().getX();
+							int y = (int) unc.getMousePosition().getY();
+							
+							AbstractCpsObject 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);
+							}
 
-						h.setPosition(x, y);
-						controller.addObjectCanvas(h);
-						canvas.invalidate();
-						canvas.repaint();
+							h.setPosition(x, y);
+
+							controller.addObjUpperNode(h, unc.upperNode);
+							unc.invalidate();
+							unc.repaint();
+						} else {
+							int x = (int) canvas.getMousePosition().getX();
+							int y = (int) canvas.getMousePosition().getY();
+							
+							AbstractCpsObject 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);
+							}
 
+							h.setPosition(x, y);
+
+							controller.addObjectCanvas(h);
+							canvas.invalidate();
+							canvas.repaint();
+						}
 						dragging = false;
 					}
 				} catch (Exception eex) {
@@ -1308,15 +1338,16 @@ public class GUI<E> implements CategoryListener {
 					tableHolonElement.setModel(tableModelHolonElementSingle);
 				}
 				// New Tab with NodeOfNode
-				if (canvas.click && temp instanceof CpsUpperNode) {
+				if (doubleClick() && temp instanceof CpsUpperNode) {
 					UpperNodeCanvas unc = new UpperNodeCanvas(model, controller, (CpsUpperNode) temp);
 					unc.setBorder(null);
 					unc.setBackground(Color.WHITE);
 					unc.setPreferredSize(new Dimension(model.getCanvasX(), model.getCanvasY()));
 					JScrollPane sp = new JScrollPane(unc);
 					sp.setBorder(null);
-					tabbedPane.addTab(temp.getName(), sp);
-					tabbedPane.setTabComponentAt(Math.max(2, tabbedPane.getComponentCount()-2), new ButtonTabComponent(tabbedPane));
+					tabbedPane.add(temp.getName(), sp);
+					tabbedPane.setSelectedComponent(sp);
+					tabbedPane.setTabComponentAt(tabbedPane.getTabCount() - 1, new ButtonTabComponent(tabbedPane));
 				}
 			}
 
@@ -1606,8 +1637,8 @@ public class GUI<E> implements CategoryListener {
 		splitPane.setLeftComponent(scrollPane1);
 		splitPaneCanvasConsole.setLeftComponent(panelTapped_SimMenu);
 		tabbedPane.addTab("View", canvasSP);
-		tabbedPane.addTab("Statistics", statScrollPane);
-		
+		tabbedPane.addTab("Statistics", statScrollPane);
+
 		splitPaneCanvasConsole.setRightComponent(console);
 		splitPane1.setLeftComponent(splitPaneCanvasConsole);
 		splitPane1.setRightComponent(splitHolonElPro);
@@ -2003,4 +2034,28 @@ public class GUI<E> implements CategoryListener {
 		// Image Size Slider
 		lblImageSize.setText(Languages.getLanguage()[94]);
 	}
+
+	/**
+	 * Checks if a double click was made.
+	 * 
+	 * @return
+	 * 
+	 * @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;
+				}
+			}, 350);
+		}
+		return false;
+	}
 }

+ 3 - 7
src/ui/view/MyCanvas.java

@@ -403,13 +403,9 @@ public class MyCanvas extends JPanel implements MouseListener, MouseMotionListen
 					img = new ImageIcon(this.getClass().getResource(cps.getImage())).getImage();
 				}
 			}
-			if (cps instanceof CpsUpperNode) {
-				g2.drawImage(img, cps.getPosition().x, cps.getPosition().y, (int)(controller.getScale()*1.5),
-						(int)(controller.getScale()*1.5), null);
-			} else {
-				g2.drawImage(img, cps.getPosition().x, cps.getPosition().y, controller.getScale(),
-						controller.getScale(), null);
-			}
+			g2.drawImage(img, cps.getPosition().x, cps.getPosition().y, controller.getScale(), controller.getScale(),
+					null);
+
 		}
 
 		// Dragg Highlighting

+ 4 - 3
src/ui/view/UpperNodeCanvas.java

@@ -61,7 +61,7 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 	ArrayList<AbstractCpsObject> tempSelected = new ArrayList<AbstractCpsObject>();
 	
 	//The UpperNode
-	CpsUpperNode upperNode;
+	public CpsUpperNode upperNode;
 	
 	private boolean[] showedInformation = new boolean[3];
 	private boolean dragging = false; // for dragging
@@ -733,7 +733,7 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 				CpsNode n = new CpsNode("Node");
 
 				n.setPosition(x - model.getScaleDiv2(), y - model.getScaleDiv2());
-				controller.addObjectCanvas(n);
+				controller.addObjUpperNode(n, upperNode);
 
 				AbstractCpsObject r, k;
 				r = p.getA();
@@ -745,6 +745,7 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 
 				e2 = new CpsEdge(n, k, edgeCapacity);
 
+				
 				controller.removeEdgesOnCanvas(p);
 				controller.addEdgeOnCanvas(e);
 				controller.addEdgeOnCanvas(e1);
@@ -757,7 +758,7 @@ public class UpperNodeCanvas extends JPanel implements MouseListener, MouseMotio
 			CpsNode n = new CpsNode("Node");
 
 			n.setPosition(x - model.getScaleDiv2(), y - model.getScaleDiv2());
-			controller.addObjectCanvas(n);
+			controller.addObjUpperNode(n, upperNode);
 
 			e = new CpsEdge(n, tempCps, edgeCapacity);