Ver código fonte

Activated Edge selection by Click on Edge, refactored GraphManager

Jan Enders 8 anos atrás
pai
commit
700ea56841

+ 28 - 2
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/main/GraphManager.java

@@ -185,7 +185,7 @@ public class GraphManager {
 	 * @param selectedNodeID
 	 *            the ID of the node to select
 	 */
-	public void setSelectedNodeID(String selectedNodeID) {
+	private void setSelectedNodeID(String selectedNodeID) {
 		this.selectedNodeID = selectedNodeID;
 	}
 
@@ -205,10 +205,36 @@ public class GraphManager {
 	 * @param selectedEdgeID
 	 *            the ID of the edge to select
 	 */
-	public void setSelectedEdgeID(String selectedEdgeID) {
+	private void setSelectedEdgeID(String selectedEdgeID) {
 		this.selectedEdgeID = selectedEdgeID;
 	}
 
+	/**
+	 * Selects the Node with the given ID, resets Edge selection.
+	 * 
+	 * @param nodeID
+	 *            the ID of the Node to select
+	 */
+	public void selectNode(String nodeID) {
+		if (nodeID != null && g.getNode(nodeID) != null) {
+			setSelectedNodeID(nodeID);
+			setSelectedEdgeID(null);
+		}
+	}
+
+	/**
+	 * Selects the Edge with the given ID, resets Node selection.
+	 * 
+	 * @param edgeID
+	 *            the ID of the Edge to select
+	 */
+	public void selectEdge(String edgeID) {
+		if (edgeID != null && g.getEdge(edgeID) != null) {
+			setSelectedNodeID(null);
+			setSelectedEdgeID(edgeID);
+		}
+	}
+
 	/**
 	 * Deselect any currently selected nodes or edges.
 	 */

+ 7 - 3
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/ButtonManager.java

@@ -1,5 +1,6 @@
 package de.tu_darmstadt.informatik.tk.scopviz.ui;
 
+import org.graphstream.graph.Edge;
 import org.graphstream.graph.Graph;
 import org.graphstream.graph.Node;
 import org.graphstream.ui.geom.Point3;
@@ -10,6 +11,7 @@ import de.tu_darmstadt.informatik.tk.scopviz.main.CreationMode;
 import de.tu_darmstadt.informatik.tk.scopviz.main.GraphManager;
 import de.tu_darmstadt.informatik.tk.scopviz.main.Layer;
 import de.tu_darmstadt.informatik.tk.scopviz.main.Main;
+import de.tu_darmstadt.informatik.tk.scopviz.main.SelectionMode;
 import javafx.event.ActionEvent;
 import javafx.event.EventHandler;
 import javafx.scene.input.MouseEvent;
@@ -64,11 +66,13 @@ public class ButtonManager {
 			GraphManager graphManager = Main.getInstance().getGraphManager();
 			Graph graph = graphManager.getGraph();
 			Point3 cursorPos = graphManager.getView().getCamera().transformPxToGu(event.getX(), event.getY());
-			if (Main.getInstance().getCreationMode() == CreationMode.CREATE_NONE) {
+			Node n;
+			Edge selectedEdge = AuxilFunctions.getClosestEdge(cursorPos);
+			if (Main.getInstance().getSelectionMode() == SelectionMode.SELECT_EDGES && selectedEdge != null) {
 				// TODO this is just a example usage for the Function
-				Debug.out(AuxilFunctions.getClosestEdge(cursorPos));
+				// Debug.out(AuxilFunctions.getClosestEdge(cursorPos));
+				Main.getInstance().getGraphManager().selectEdge(selectedEdge.getId());
 			}
-			Node n;
 
 			// Create node based on creation Mode
 			switch (Main.getInstance().getCreationMode()) {

+ 0 - 2
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/GUIController.java

@@ -224,7 +224,6 @@ public class GUIController implements Initializable {
 	/**
 	 * 
 	 */
-	@SuppressWarnings({ "unchecked" })
 	private void initializeToolbox() {
 
 		ToolboxManager.initialize(this);
@@ -256,7 +255,6 @@ public class GUIController implements Initializable {
 	/**
 	 * 
 	 */
-	@SuppressWarnings("unchecked")
 	private void initializeProperties() {
 
 		// removeHeaderTableView(properties);

+ 21 - 11
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/PropertiesManager.java

@@ -180,25 +180,35 @@ public class PropertiesManager {
 	private static void showNewDataSet(Element selected) {
 
 		ObservableList<KeyValuePair> newData = FXCollections.observableArrayList();
-
 		for (String key : selected.getAttributeKeySet()) {
-
-			if (key.equals("xyz") && selected instanceof Node) {
-
+			switch (key) {
+			case "ui.label":
+				if (selected instanceof Node) {
+					Object actualAttribute = selected.getAttribute(key);
+					// remove the "ui."
+					key = key.substring(3, key.length());
+					newData.add(new KeyValuePair(key, String.valueOf(actualAttribute), actualAttribute.getClass()));
+				}
+				// TODO figure out if Edges have to have real labels
+				break;
+			case "layout.frozen":
+				break;
+			case "ui.j2dsk":
+				break;
+			case "ui.clicked":
+				break;
+			case "xyz":
 				double[] pos = Toolkit.nodePosition((Node) selected);
-
 				newData.add(new KeyValuePair("x", String.valueOf(pos[0]), double.class));
 				newData.add(new KeyValuePair("y", String.valueOf(pos[1]), double.class));
 				newData.add(new KeyValuePair("z", String.valueOf(pos[2]), double.class));
-
-			} else {
+				break;
+			default:
 				Object actualAttribute = selected.getAttribute(key);
-
 				newData.add(new KeyValuePair(key, String.valueOf(actualAttribute), actualAttribute.getClass()));
+				break;
 			}
-
 		}
-
 		properties.setItems(newData);
 	}
 
@@ -233,7 +243,7 @@ public class PropertiesManager {
 
 		selected.removeAttribute(pair.getKey());
 
-		// Caution VERY BAD CODE! BY JULIAN
+		// TODO: Caution VERY BAD CODE! BY JULIAN
 		Debug.out(String.valueOf(properties.getPrefWidth()));
 	}
 

+ 4 - 8
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/handlers/MyViewerListener.java

@@ -69,8 +69,7 @@ public class MyViewerListener implements ViewerListener {
 		}
 		switch (Main.getInstance().getSelectionMode()) {
 		case SELECT_NODES:
-			graphManager.setSelectedNodeID(id);
-			graphManager.setSelectedEdgeID(null);
+			graphManager.selectNode(id);
 			break;
 		case SELECT_EDGES:
 			if (lastClickedID == null) {
@@ -78,8 +77,7 @@ public class MyViewerListener implements ViewerListener {
 			} else {
 				Edge e = graphManager.getGraph().getNode(lastClickedID).getEdgeToward(id);
 				if (e != null) {
-					graphManager.setSelectedEdgeID(e.getId());
-					graphManager.setSelectedNodeID(null);
+					graphManager.selectEdge(e.getId());
 					lastClickedID = null;
 				} else {
 					lastClickedID = id;
@@ -112,8 +110,7 @@ public class MyViewerListener implements ViewerListener {
 					Debug.out("Created an directed edge with Id " + newID + " between " + lastClickedID + " and " + id);
 
 					lastClickedID = null;
-					graphManager.setSelectedNodeID(null);
-					graphManager.setSelectedEdgeID(newID);
+					graphManager.selectEdge(newID);
 				}
 			}
 			break;
@@ -130,8 +127,7 @@ public class MyViewerListener implements ViewerListener {
 							"Created an undirected edge with Id " + newID + " between " + lastClickedID + " and " + id);
 
 					lastClickedID = null;
-					graphManager.setSelectedNodeID(null);
-					graphManager.setSelectedEdgeID(newID);
+					graphManager.selectEdge(newID);
 				}
 			}
 			break;