Просмотр исходного кода

Refactored node and edge creation

dominik 8 лет назад
Родитель
Сommit
02493258f1

+ 19 - 18
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/ButtonManager.java

@@ -19,29 +19,24 @@ import javafx.scene.input.MouseEvent;
  *
  */
 public class ButtonManager {
-
+	
 	/**
-	 * Reference to the GUIController used by the app for access to UI Elements.
+	 * Create more then one Edge at a time mode
 	 */
-	private static GUIController guiController;
+	public static final Boolean CREATE_MORE_THEN_ONE = true; 
 
 	/**
-	 * Initializes the ButtonManager by getting access to the GUIController.
-	 * 
-	 * @param guiCon
-	 *            a reference to the GUIController used by the App
+	 * Handler for zoom in Button
 	 */
-	public static void initialize(GUIController guiCon) {
-		guiController = guiCon;
-	}
-
-
 	public static EventHandler<ActionEvent> zoomInHandler = new EventHandler<ActionEvent>() {
 		public void handle(ActionEvent evt) {
 			Main.getInstance().getVisualizer().zoomIn();
 		}
 	};
 
+	/**
+	 * Handler for zoom out Button
+	 */
 	public static EventHandler<ActionEvent> zoomOutHandler = new EventHandler<ActionEvent>() {
 		public void handle(ActionEvent evt) {
 			Main.getInstance().getVisualizer().zoomOut();
@@ -63,19 +58,19 @@ public class ButtonManager {
 		@Override
 		public void handle(MouseEvent event) {
 			Visualizer visualizer = Main.getInstance().getVisualizer();
-			CreateModus currentMod = Main.getInstance().getCreateModus();
 			Graph graph = visualizer.getGraph();
 			Point3 cursorPos = visualizer.getView().getCamera().transformPxToGu(event.getX(), event.getY());
 			
 			Node n;
 			
-			switch(currentMod){
+			// Create node based on creation Mode
+			switch(Main.getInstance().getCreateModus()){
 			
 			case CREATE_STANDARD_NODE: 
 				n = graph.addNode(Main.getInstance().getUnusedID());
 				n.setAttribute("xyz", cursorPos);
 				Debug.out("Added Node at Position (" + cursorPos.x + "/" + cursorPos.y + ")");
-				Main.getInstance().setCreateModus(CreateModus.CREATE_NONE);
+		
 				break;
 			
 			case CREATE_SOURCE_NODE:
@@ -83,7 +78,7 @@ public class ButtonManager {
 				n.setAttribute("xyz", cursorPos);
 				n.setAttribute("ui.style", "fill-color: rgb(0, 0, 255);");
 				Debug.out("Added Source Node at Position (" + cursorPos.x + "/" + cursorPos.y + ")");
-				Main.getInstance().setCreateModus(CreateModus.CREATE_NONE);
+				
 				break;
 				
 			case CREATE_SINK_NODE:
@@ -91,7 +86,7 @@ public class ButtonManager {
 				n.setAttribute("xyz", cursorPos);
 				n.setAttribute("ui.style", "fill-color: rgb(255, 0, 0);");
 				Debug.out("Added Sink Node at Position (" + cursorPos.x + "/" + cursorPos.y + ")");
-				Main.getInstance().setCreateModus(CreateModus.CREATE_NONE);
+				
 				break;
 				
 			case CREATE_PROC_NODE:
@@ -99,12 +94,18 @@ public class ButtonManager {
 				n.setAttribute("xyz", cursorPos);
 				n.setAttribute("ui.style", "fill-color: rgb(0, 255, 0);");
 				Debug.out("Added ProcEn Node at Position (" + cursorPos.x + "/" + cursorPos.y + ")");
-				Main.getInstance().setCreateModus(CreateModus.CREATE_NONE);
+				
 				break;
 				
 			default:
 				break;
 			}
+			
+			PropertiesManager.setItemsProperties();
+			
+			if(!CREATE_MORE_THEN_ONE){
+				Main.getInstance().setCreateModus(CreateModus.CREATE_NONE);
+			}
 		}
 	};
 	

+ 1 - 24
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/GUIController.java

@@ -5,8 +5,6 @@ import java.util.ResourceBundle;
 
 import javax.swing.JPanel;
 
-import de.tu_darmstadt.informatik.tk.scopviz.debug.Debug;
-import de.tu_darmstadt.informatik.tk.scopviz.main.CreateModus;
 import de.tu_darmstadt.informatik.tk.scopviz.main.GraphManager;
 import de.tu_darmstadt.informatik.tk.scopviz.main.Main;
 import de.tu_darmstadt.informatik.tk.scopviz.ui.handlers.ResizeListener;
@@ -16,9 +14,7 @@ import javafx.embed.swing.SwingNode;
 import javafx.fxml.FXML;
 import javafx.fxml.Initializable;
 import javafx.scene.control.Button;
-import javafx.scene.control.ListCell;
 import javafx.scene.control.ListView;
-import javafx.scene.control.ScrollPane;
 import javafx.scene.control.MenuItem;
 import javafx.scene.control.TableCell;
 import javafx.scene.control.TableColumn;
@@ -147,8 +143,6 @@ public class GUIController implements Initializable {
 		// Initialize the Managers for the various managers for UI elements
 		ToolboxManager.initializeItems(toolbox);
 		PropertiesManager.initializeItems(properties);
-		ButtonManager.initialize(this);
-		ToolbarManager.initialize(this);
 		GraphManager.setGuiController(this);
 
 		// Bind all the handlers to their corresponding UI elements
@@ -223,24 +217,7 @@ public class GUIController implements Initializable {
 		// Click event for TableView row
 		toolbox.setRowFactory( tv -> {
 		    TableRow<Pair<Object, String>> row = new TableRow<>();
-		    row.setOnMouseClicked(event -> {
-		        if (! row.isEmpty()) {
-		            if(row.getItem().getValue().equals("Standard")){
-		            	Main.getInstance().setCreateModus(CreateModus.CREATE_STANDARD_NODE);
-		            	Debug.out(Main.getInstance().getCreateModus().toString());
-		            }else if(row.getItem().getValue().equals("Source")){
-			            Main.getInstance().setCreateModus(CreateModus.CREATE_SOURCE_NODE);
-		            }else if(row.getItem().getValue().equals("Sink")){
-		            	Main.getInstance().setCreateModus(CreateModus.CREATE_SINK_NODE);
-		            }else if(row.getItem().getValue().equals("EnProc")){
-		            	Main.getInstance().setCreateModus(CreateModus.CREATE_PROC_NODE);
-		            }else if(row.getItem().getValue().equals("Directed")){
-		            	Main.getInstance().setCreateModus(CreateModus.CREATE_DIRECTED_EDGE);
-		            }else if(row.getItem().getValue().equals("Undirected")){
-		            	Main.getInstance().setCreateModus(CreateModus.CREATE_UNDIRECTED_EDGE);
-		            }
-		        }
-		    });
+		    row.setOnMouseClicked(ToolboxManager.rowClickedHandler);
 		    return row ;
 		});
 

+ 3 - 18
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/ToolbarManager.java

@@ -10,20 +10,6 @@ import javafx.scene.control.MenuItem;
 
 public class ToolbarManager {
 
-	/**
-	 * Reference to the GUIController used by the app for access to UI Elements.
-	 */
-	private static GUIController guiController;
-
-	/**
-	 * Initializes the ButtonManager by getting access to the GUIController.
-	 * 
-	 * @param guiCon
-	 *            a reference to the GUIController used by the App
-	 */
-	public static void initialize(GUIController guiCon) {
-		guiController = guiCon;
-	}
 
 	/**
 	 * Handler for the "open" MenuItem.
@@ -115,12 +101,11 @@ public class ToolbarManager {
 	public static EventHandler<ActionEvent> selectModeHandler = new EventHandler<ActionEvent>() {
 		public void handle(ActionEvent evt) {
 			MenuItem src = (MenuItem) evt.getSource();
-			Visualizer v = Main.getInstance().getVisualizer();
-			if (src.getText().equals("select Edges")) {
-				src.setText("select Nodes");
+			if (src.getText().equals("Select Edges")) {
+				src.setText("Select Nodes");
 				Main.getInstance().setSelectModus(SelectionModus.SELECT_EDGES);
 			} else {
-				src.setText("select Edges");
+				src.setText("Select Edges");
 				Main.getInstance().setSelectModus(SelectionModus.SELECT_NODES);
 			}
 

+ 75 - 0
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/ToolboxManager.java

@@ -1,16 +1,22 @@
 package de.tu_darmstadt.informatik.tk.scopviz.ui;
 
+import de.tu_darmstadt.informatik.tk.scopviz.main.CreateModus;
+import de.tu_darmstadt.informatik.tk.scopviz.main.Main;
 import de.tu_darmstadt.informatik.tk.scopviz.main.MainApp;
 import javafx.beans.property.ReadOnlyObjectWrapper;
 import javafx.beans.value.ObservableValue;
 import javafx.collections.FXCollections;
 import javafx.collections.ObservableList;
+import javafx.event.EventHandler;
+import javafx.scene.Node;
 import javafx.scene.control.CheckBox;
 import javafx.scene.control.TableCell;
 import javafx.scene.control.TableColumn;
+import javafx.scene.control.TableRow;
 import javafx.scene.control.TableView;
 import javafx.scene.image.Image;
 import javafx.scene.image.ImageView;
+import javafx.scene.input.MouseEvent;
 import javafx.util.Callback;
 import javafx.util.Pair;
 
@@ -43,6 +49,75 @@ public class ToolboxManager {
 
 		toolbox.getItems().setAll(data);
 	}
+	
+	/**
+	 * Handler for TableRows
+	 */
+	public static EventHandler<MouseEvent> rowClickedHandler = new EventHandler<MouseEvent>(){
+
+		@SuppressWarnings("unchecked")
+		@Override
+		public void handle(MouseEvent event) {
+			
+			// Get TbaleRow
+			Node node = ((Node) event.getTarget()).getParent();
+            TableRow<Pair<Object, String>> row;
+            
+            if (node instanceof TableRow) {
+                row = (TableRow<Pair<Object, String>>) node;
+            } else {
+                // clicking on text part
+                row = (TableRow<Pair<Object, String>>) node.getParent();
+            }
+			
+            Main main = Main.getInstance();
+            
+            // Set CreateModus based on pressed TableRow
+			if (! row.isEmpty()) {
+				
+				String rowString = row.getItem().getValue();
+				
+	            if(rowString.equals("Standard")){
+	            	if(main.getCreateModus().equals(CreateModus.CREATE_STANDARD_NODE))
+	            		main.setCreateModus(CreateModus.CREATE_NONE);
+	            	else
+	            		main.setCreateModus(CreateModus.CREATE_STANDARD_NODE);
+	            	
+	            }else if(rowString.equals("Source")){
+	            	if(main.getCreateModus().equals(CreateModus.CREATE_SOURCE_NODE))
+	            		main.setCreateModus(CreateModus.CREATE_NONE);
+	            	else
+	            		main.setCreateModus(CreateModus.CREATE_SOURCE_NODE);
+		            
+	            }else if(rowString.equals("Sink")){
+	            	if(main.getCreateModus().equals(CreateModus.CREATE_SINK_NODE))
+	            		main.setCreateModus(CreateModus.CREATE_NONE);
+	            	else
+	            		main.setCreateModus(CreateModus.CREATE_SINK_NODE);
+	            	
+	            }else if(rowString.equals("EnProc")){
+	            	if(main.getCreateModus().equals(CreateModus.CREATE_PROC_NODE))
+	            		main.setCreateModus(CreateModus.CREATE_NONE);
+	            	else
+	            		main.setCreateModus(CreateModus.CREATE_PROC_NODE);
+	            	
+	            }else if(rowString.equals("Directed")){
+	            	if(main.getCreateModus().equals(CreateModus.CREATE_DIRECTED_EDGE))
+	            		main.setCreateModus(CreateModus.CREATE_NONE);
+	            	else
+	            		main.setCreateModus(CreateModus.CREATE_DIRECTED_EDGE);
+	            	
+	            }else if(rowString.equals("Undirected")){
+	            	if(main.getCreateModus().equals(CreateModus.CREATE_UNDIRECTED_EDGE))
+	            		main.setCreateModus(CreateModus.CREATE_NONE);
+	            	else
+	            		main.setCreateModus(CreateModus.CREATE_UNDIRECTED_EDGE);
+	            }
+	        }
+			
+		}
+		
+	};
 
 	private static Pair<Object, String> pair(Object picture, String name) {
 		return new Pair<>(picture, name);

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

@@ -17,6 +17,11 @@ import de.tu_darmstadt.informatik.tk.scopviz.ui.Visualizer;
  *
  */
 public class MyViewerListener implements ViewerListener {
+	
+	/**
+	 * Create more then one Edge at a time mode
+	 */
+	public static final Boolean CREATE_MORE_THEN_ONE = true; 
 
 	/**
 	 * Reference to the visualizer for easier access.
@@ -88,6 +93,11 @@ public class MyViewerListener implements ViewerListener {
 		PropertiesManager.setItemsProperties();
 	}
 	
+	
+	/**
+	 * Create Edges based on CreateMode
+	 * @param id
+	 */
 	private void createEdges(String id){
 		
 		switch(Main.getInstance().getCreateModus()){
@@ -105,8 +115,6 @@ public class MyViewerListener implements ViewerListener {
 					lastClickedID = null;
 					visualizer.setSelectedNodeID(null);
 					visualizer.setSelectedEdgeID(newID);
-					
-					Main.getInstance().setCreateModus(CreateModus.CREATE_NONE);
 				}
 			}
 			break;
@@ -124,8 +132,6 @@ public class MyViewerListener implements ViewerListener {
 					lastClickedID = null;
 					visualizer.setSelectedNodeID(null);
 					visualizer.setSelectedEdgeID(newID);
-					
-					Main.getInstance().setCreateModus(CreateModus.CREATE_NONE);
 				}
 			}
 			break;
@@ -133,6 +139,12 @@ public class MyViewerListener implements ViewerListener {
 		default:
 			break;
 		}
+		
+		PropertiesManager.setItemsProperties();
+		
+		if(!CREATE_MORE_THEN_ONE){
+			Main.getInstance().setCreateModus(CreateModus.CREATE_NONE);
+		}
 	}
 
 	/**