瀏覽代碼

Fixed and Refactored

Jan Enders 8 年之前
父節點
當前提交
bce9b61234
共有 17 個文件被更改,包括 311 次插入765 次删除
  1. 13 13
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/debug/Debug.java
  2. 3 5
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/io/GraphMLImporter.java
  3. 19 19
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/io/MyFileSourceGraphML.java
  4. 118 161
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/io/MySourceBase.java
  5. 0 23
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/main/Main.java
  6. 1 1
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/main/MainApp.java
  7. 0 5
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/main/SelectionMode.java
  8. 1 0
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/ButtonManager.java
  9. 43 74
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/GUIController.java
  10. 1 1
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/GraphDisplayManager.java
  11. 0 46
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/MenuBarManager.java
  12. 1 0
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/OptionsManager.java
  13. 0 9
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/handlers/MyAnimationTimer.java
  14. 1 0
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/handlers/MyMouseManager.java
  15. 0 181
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/handlers/MyViewerListener.java
  16. 110 57
      scopviz/src/main/resources/MainWindow.fxml
  17. 0 170
      scopviz/src/main/resources/NewBetterCoolerWindowTest.fxml

+ 13 - 13
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/debug/Debug.java

@@ -55,19 +55,19 @@ public class Debug {
 
 	public static void out(XMLEvent e) {
 		MyFileSourceGraphML t = new MyFileSourceGraphML();
-		switch(e.getEventType()){
-	case XMLEvent.START_ELEMENT:
-		Debug.out(t.gotWhat(e.getEventType(),e.asStartElement().getName().getLocalPart()));
-		break;
-	case XMLEvent.END_ELEMENT:
-		Debug.out(t.gotWhat(e.getEventType(),e.asEndElement().getName().getLocalPart()));
-		break;
-	case XMLEvent.ATTRIBUTE:
-		Debug.out(t.gotWhat(e.getEventType(),((Attribute) e).getName().getLocalPart()));
-		break;
-	default:
-		Debug.out(e.toString());
-	}
+		switch (e.getEventType()) {
+		case XMLEvent.START_ELEMENT:
+			Debug.out(t.gotWhat(e.getEventType(), e.asStartElement().getName().getLocalPart()));
+			break;
+		case XMLEvent.END_ELEMENT:
+			Debug.out(t.gotWhat(e.getEventType(), e.asEndElement().getName().getLocalPart()));
+			break;
+		case XMLEvent.ATTRIBUTE:
+			Debug.out(t.gotWhat(e.getEventType(), ((Attribute) e).getName().getLocalPart()));
+			break;
+		default:
+			Debug.out(e.toString());
+		}
 
 	}
 }

+ 3 - 5
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/io/GraphMLImporter.java

@@ -7,8 +7,6 @@ import java.util.LinkedList;
 import org.graphstream.graph.Graph;
 import org.graphstream.graph.implementations.DefaultGraph;
 import org.graphstream.graph.implementations.SingleGraph;
-import org.graphstream.stream.file.FileSource;
-import org.graphstream.stream.file.FileSourceGraphML;
 
 import de.tu_darmstadt.informatik.tk.scopviz.main.Main;
 import javafx.stage.FileChooser;
@@ -23,7 +21,7 @@ import javafx.stage.Stage;
  */
 public class GraphMLImporter {
 	private MyFileSourceGraphML fs = new MyFileSourceGraphML();
-	
+
 	/**
 	 * Imports a GraphML file.
 	 * 
@@ -75,7 +73,7 @@ public class GraphMLImporter {
 	 *            URL of the file
 	 * @return the imported Graphstream-Graph
 	 */
-	//TODO backup reader/Exception handling
+	// TODO backup reader/Exception handling
 	public Graph readGraph(String id, final URL fileURL) {
 		Graph g = new DefaultGraph(id);
 		fs.addSink(g);
@@ -88,7 +86,7 @@ public class GraphMLImporter {
 		fs.removeSink(g);
 		return g;
 	}
-	
+
 	public LinkedList<SingleGraph> subGraphs() {
 		return fs.getSubGraphs();
 	}

+ 19 - 19
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/io/MyFileSourceGraphML.java

@@ -53,6 +53,7 @@ import javax.xml.stream.events.Attribute;
 import javax.xml.stream.events.XMLEvent;
 
 import org.graphstream.stream.file.FileSource;
+
 import de.tu_darmstadt.informatik.tk.scopviz.debug.Debug;
 
 /**
@@ -233,7 +234,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 	protected Stack<String> graphId;
 	protected int graphCounter;
 	protected boolean edgeDefault;
-	protected Data yPosition =  null;
+	protected Data yPosition = null;
 
 	/**
 	 * Build a new source to parse an xml stream in GraphML format.
@@ -572,7 +573,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 
 		// reading the file
 		while (true) {
-			
+
 			switch (currentReaderState) {
 			case START:
 				checkValid(e, XMLEvent.START_ELEMENT, "graphml");
@@ -1104,7 +1105,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 		Key k = null;
 		switch (name) {
 		// TODO weight
-		
+
 		case "Geometry":
 			// the coordinates
 			yPosition = new Data();
@@ -1114,7 +1115,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 			k.name = "y";
 			k.type = KeyAttrType.DOUBLE;
 			yPosition.key = k;
-			
+
 			data = new Data();
 			k = new Key();
 			k.def = null;
@@ -1122,8 +1123,8 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 			k.name = "x";
 			k.type = KeyAttrType.STRING;
 			data.key = k;
-			
-			@SuppressWarnings("unchecked") 
+
+			@SuppressWarnings("unchecked")
 			Iterator<? extends Attribute> attributes = e.asStartElement().getAttributes();
 			while (attributes.hasNext()) {
 				Attribute a = attributes.next();
@@ -1138,12 +1139,11 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 					}
 				} catch (IllegalArgumentException ex) {
 					throw newParseError(e, "invalid attribute '%s' for '<data>'", a.getName().getLocalPart());
-				}	
+				}
 			}
 			break;
-			
-			
-		case "NodeLabel":			
+
+		case "NodeLabel":
 			// the label
 			data = new Data();
 			k = new Key();
@@ -1151,7 +1151,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 			k.domain = KeyDomain.ALL;
 			k.name = "ui.label";
 			k.type = KeyAttrType.STRING;
-		
+
 			StringBuffer buffer = new StringBuffer();
 			e = getNextEvent();
 			while (e.isCharacters()) {
@@ -1332,7 +1332,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 					pushback(e);
 					data = parseYed();
 					if (data != null) {
-						if(data.key.name.equals("x")) {
+						if (data.key.name.equals("x")) {
 							sendNodeAttributeAdded(sourceId, id, yPosition.key.name, getValue(yPosition));
 							sentAttributes.add(yPosition.key);
 						}
@@ -1347,7 +1347,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 						pushback(yEd);
 						data = parseYed();
 						if (data != null) {
-							if(data.key.name.equals("x")) {
+							if (data.key.name.equals("x")) {
 								sendNodeAttributeAdded(sourceId, id, yPosition.key.name, getValue(yPosition));
 								sentAttributes.add(yPosition.key);
 							}
@@ -1471,7 +1471,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 			sendEdgeAttributeAdded(sourceId, id, "desc", desc);
 		} else {
 			Data data;
-			//parsing yed and graphstream attribute data
+			// parsing yed and graphstream attribute data
 			while (isEvent(e, XMLEvent.START_ELEMENT, "data")
 					|| (e.isStartElement() && e.asStartElement().getName().getPrefix() == "y")
 					|| isEvent(e, END_ELEMENT, "data")) {
@@ -1480,31 +1480,31 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 					pushback(e);
 					data = parseYed();
 					if (data != null) {
-						if(data.key.name.equals("x")) {
+						if (data.key.name.equals("x")) {
 							sendNodeAttributeAdded(sourceId, id, yPosition.key.name, getValue(yPosition));
 							sentAttributes.add(yPosition.key);
 						}
 						sendNodeAttributeAdded(sourceId, id, data.key.name, getValue(data));
 						sentAttributes.add(data.key);
 					}
-				//</data> is being ignored
+					// </data> is being ignored
 				} else if (isEvent(e, END_ELEMENT, "data")) {
 				} else {
 					XMLEvent yEd = getNextEvent();
-					//parsing a <y: > after <data>
+					// parsing a <y: > after <data>
 					if (yEd.getEventType() == XMLEvent.START_ELEMENT
 							&& yEd.asStartElement().getName().getPrefix() == "y") {
 						pushback(yEd);
 						data = parseYed();
 						if (data != null) {
-							if(data.key.name.equals("x")) {
+							if (data.key.name.equals("x")) {
 								sendNodeAttributeAdded(sourceId, id, yPosition.key.name, getValue(yPosition));
 								sentAttributes.add(yPosition.key);
 							}
 							sendNodeAttributeAdded(sourceId, id, data.key.name, getValue(data));
 							sentAttributes.add(data.key);
 						}
-					//parsing <data>
+						// parsing <data>
 					} else {
 						pushback(yEd);
 						pushback(e);

+ 118 - 161
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/io/MySourceBase.java

@@ -68,7 +68,7 @@ import de.tu_darmstadt.informatik.tk.scopviz.debug.Debug;
  * loops if a sink modifies the input during event handling.
  * </p>
  */
-public class MySourceBase  implements Source {
+public class MySourceBase implements Source {
 	// Attribute
 
 	public enum ElementType {
@@ -122,13 +122,11 @@ public class MySourceBase  implements Source {
 	 */
 	protected String superID = "";
 
-	
 	// Construction
 
 	protected MySourceBase() {
-		this(String.format("sourceOnThread#%d_%d", Thread.currentThread()
-				.getId(), System.currentTimeMillis()
-				+ ((int) (Math.random() * 1000))));
+		this(String.format("sourceOnThread#%d_%d", Thread.currentThread().getId(),
+				System.currentTimeMillis() + ((int) (Math.random() * 1000))));
 	}
 
 	protected MySourceBase(String sourceId) {
@@ -154,17 +152,16 @@ public class MySourceBase  implements Source {
 		resetSubGraphs();
 		try {
 			superID = ((SingleGraph) sink).getId();
-		} catch (Exception e){
+		} catch (Exception e) {
 			Debug.out(e.toString() + "\n" + e.getStackTrace().toString());
 		}
 	}
-	
+
 	private void addSubGraphSink(Sink sink) {
 		addAttributeSink(sink);
 		addElementSink(sink);
 	}
-	
-	
+
 	public void addAttributeSink(AttributeSink sink) {
 		if (!eventProcessing) {
 			eventProcessing = true;
@@ -241,8 +238,7 @@ public class MySourceBase  implements Source {
 			manageEvents();
 			eventProcessing = false;
 		} else {
-			eventQueue.add(new RemoveFromListEvent<AttributeSink>(attrSinks,
-					sink));
+			eventQueue.add(new RemoveFromListEvent<AttributeSink>(attrSinks, sink));
 		}
 	}
 
@@ -256,8 +252,7 @@ public class MySourceBase  implements Source {
 			manageEvents();
 			eventProcessing = false;
 		} else {
-			eventQueue
-			.add(new RemoveFromListEvent<ElementSink>(eltsSinks, sink));
+			eventQueue.add(new RemoveFromListEvent<ElementSink>(eltsSinks, sink));
 		}
 	}
 
@@ -414,10 +409,8 @@ public class MySourceBase  implements Source {
 	 * @param directed
 	 *            Is the edge directed?.
 	 */
-	public void sendEdgeAdded(String sourceId, String edgeId,
-			String fromNodeId, String toNodeId, boolean directed) {
-		sendEdgeAdded(sourceId, sourceTime.newEvent(), edgeId, fromNodeId,
-				toNodeId, directed);
+	public void sendEdgeAdded(String sourceId, String edgeId, String fromNodeId, String toNodeId, boolean directed) {
+		sendEdgeAdded(sourceId, sourceTime.newEvent(), edgeId, fromNodeId, toNodeId, directed);
 	}
 
 	/**
@@ -435,21 +428,19 @@ public class MySourceBase  implements Source {
 	 * @param directed
 	 *            Is the edge directed?.
 	 */
-	public void sendEdgeAdded(String sourceId, long timeId, String edgeId,
-			String fromNodeId, String toNodeId, boolean directed) {
+	public void sendEdgeAdded(String sourceId, long timeId, String edgeId, String fromNodeId, String toNodeId,
+			boolean directed) {
 		if (!eventProcessing) {
 			eventProcessing = true;
 			manageEvents();
 
 			for (int i = 0; i < eltsSinks.size(); i++)
-				eltsSinks.get(i).edgeAdded(sourceId, timeId, edgeId,
-						fromNodeId, toNodeId, directed);
+				eltsSinks.get(i).edgeAdded(sourceId, timeId, edgeId, fromNodeId, toNodeId, directed);
 
 			manageEvents();
 			eventProcessing = false;
 		} else {
-			eventQueue.add(new AfterEdgeAddEvent(sourceId, timeId, edgeId,
-					fromNodeId, toNodeId, directed));
+			eventQueue.add(new AfterEdgeAddEvent(sourceId, timeId, edgeId, fromNodeId, toNodeId, directed));
 		}
 	}
 
@@ -501,10 +492,8 @@ public class MySourceBase  implements Source {
 	 * @param value
 	 *            The attribute value.
 	 */
-	public void sendEdgeAttributeAdded(String sourceId, String edgeId,
-			String attribute, Object value) {
-		sendAttributeChangedEvent(sourceId, edgeId, ElementType.EDGE,
-				attribute, AttributeChangeEvent.ADD, null, value);
+	public void sendEdgeAttributeAdded(String sourceId, String edgeId, String attribute, Object value) {
+		sendAttributeChangedEvent(sourceId, edgeId, ElementType.EDGE, attribute, AttributeChangeEvent.ADD, null, value);
 	}
 
 	/**
@@ -520,10 +509,9 @@ public class MySourceBase  implements Source {
 	 * @param value
 	 *            The attribute value.
 	 */
-	public void sendEdgeAttributeAdded(String sourceId, long timeId,
-			String edgeId, String attribute, Object value) {
-		sendAttributeChangedEvent(sourceId, timeId, edgeId, ElementType.EDGE,
-				attribute, AttributeChangeEvent.ADD, null, value);
+	public void sendEdgeAttributeAdded(String sourceId, long timeId, String edgeId, String attribute, Object value) {
+		sendAttributeChangedEvent(sourceId, timeId, edgeId, ElementType.EDGE, attribute, AttributeChangeEvent.ADD, null,
+				value);
 	}
 
 	/**
@@ -540,10 +528,10 @@ public class MySourceBase  implements Source {
 	 * @param newValue
 	 *            The new attribute value.
 	 */
-	public void sendEdgeAttributeChanged(String sourceId, String edgeId,
-			String attribute, Object oldValue, Object newValue) {
-		sendAttributeChangedEvent(sourceId, edgeId, ElementType.EDGE,
-				attribute, AttributeChangeEvent.CHANGE, oldValue, newValue);
+	public void sendEdgeAttributeChanged(String sourceId, String edgeId, String attribute, Object oldValue,
+			Object newValue) {
+		sendAttributeChangedEvent(sourceId, edgeId, ElementType.EDGE, attribute, AttributeChangeEvent.CHANGE, oldValue,
+				newValue);
 	}
 
 	/**
@@ -561,10 +549,10 @@ public class MySourceBase  implements Source {
 	 * @param newValue
 	 *            The new attribute value.
 	 */
-	public void sendEdgeAttributeChanged(String sourceId, long timeId,
-			String edgeId, String attribute, Object oldValue, Object newValue) {
-		sendAttributeChangedEvent(sourceId, timeId, edgeId, ElementType.EDGE,
-				attribute, AttributeChangeEvent.CHANGE, oldValue, newValue);
+	public void sendEdgeAttributeChanged(String sourceId, long timeId, String edgeId, String attribute, Object oldValue,
+			Object newValue) {
+		sendAttributeChangedEvent(sourceId, timeId, edgeId, ElementType.EDGE, attribute, AttributeChangeEvent.CHANGE,
+				oldValue, newValue);
 	}
 
 	/**
@@ -577,10 +565,9 @@ public class MySourceBase  implements Source {
 	 * @param attribute
 	 *            The attribute name.
 	 */
-	public void sendEdgeAttributeRemoved(String sourceId, String edgeId,
-			String attribute) {
-		sendAttributeChangedEvent(sourceId, edgeId, ElementType.EDGE,
-				attribute, AttributeChangeEvent.REMOVE, null, null);
+	public void sendEdgeAttributeRemoved(String sourceId, String edgeId, String attribute) {
+		sendAttributeChangedEvent(sourceId, edgeId, ElementType.EDGE, attribute, AttributeChangeEvent.REMOVE, null,
+				null);
 	}
 
 	/**
@@ -594,10 +581,9 @@ public class MySourceBase  implements Source {
 	 * @param attribute
 	 *            The attribute name.
 	 */
-	public void sendEdgeAttributeRemoved(String sourceId, long timeId,
-			String edgeId, String attribute) {
-		sendAttributeChangedEvent(sourceId, timeId, edgeId, ElementType.EDGE,
-				attribute, AttributeChangeEvent.REMOVE, null, null);
+	public void sendEdgeAttributeRemoved(String sourceId, long timeId, String edgeId, String attribute) {
+		sendAttributeChangedEvent(sourceId, timeId, edgeId, ElementType.EDGE, attribute, AttributeChangeEvent.REMOVE,
+				null, null);
 	}
 
 	/**
@@ -610,10 +596,8 @@ public class MySourceBase  implements Source {
 	 * @param value
 	 *            The attribute value.
 	 */
-	public void sendGraphAttributeAdded(String sourceId, String attribute,
-			Object value) {
-		sendAttributeChangedEvent(sourceId, null, ElementType.GRAPH, attribute,
-				AttributeChangeEvent.ADD, null, value);
+	public void sendGraphAttributeAdded(String sourceId, String attribute, Object value) {
+		sendAttributeChangedEvent(sourceId, null, ElementType.GRAPH, attribute, AttributeChangeEvent.ADD, null, value);
 	}
 
 	/**
@@ -627,10 +611,9 @@ public class MySourceBase  implements Source {
 	 * @param value
 	 *            The attribute value.
 	 */
-	public void sendGraphAttributeAdded(String sourceId, long timeId,
-			String attribute, Object value) {
-		sendAttributeChangedEvent(sourceId, timeId, null, ElementType.GRAPH,
-				attribute, AttributeChangeEvent.ADD, null, value);
+	public void sendGraphAttributeAdded(String sourceId, long timeId, String attribute, Object value) {
+		sendAttributeChangedEvent(sourceId, timeId, null, ElementType.GRAPH, attribute, AttributeChangeEvent.ADD, null,
+				value);
 	}
 
 	/**
@@ -645,10 +628,9 @@ public class MySourceBase  implements Source {
 	 * @param newValue
 	 *            The attribute new value.
 	 */
-	public void sendGraphAttributeChanged(String sourceId, String attribute,
-			Object oldValue, Object newValue) {
-		sendAttributeChangedEvent(sourceId, null, ElementType.GRAPH, attribute,
-				AttributeChangeEvent.CHANGE, oldValue, newValue);
+	public void sendGraphAttributeChanged(String sourceId, String attribute, Object oldValue, Object newValue) {
+		sendAttributeChangedEvent(sourceId, null, ElementType.GRAPH, attribute, AttributeChangeEvent.CHANGE, oldValue,
+				newValue);
 	}
 
 	/**
@@ -664,10 +646,10 @@ public class MySourceBase  implements Source {
 	 * @param newValue
 	 *            The attribute new value.
 	 */
-	public void sendGraphAttributeChanged(String sourceId, long timeId,
-			String attribute, Object oldValue, Object newValue) {
-		sendAttributeChangedEvent(sourceId, timeId, null, ElementType.GRAPH,
-				attribute, AttributeChangeEvent.CHANGE, oldValue, newValue);
+	public void sendGraphAttributeChanged(String sourceId, long timeId, String attribute, Object oldValue,
+			Object newValue) {
+		sendAttributeChangedEvent(sourceId, timeId, null, ElementType.GRAPH, attribute, AttributeChangeEvent.CHANGE,
+				oldValue, newValue);
 	}
 
 	/**
@@ -679,8 +661,8 @@ public class MySourceBase  implements Source {
 	 *            The attribute name.
 	 */
 	public void sendGraphAttributeRemoved(String sourceId, String attribute) {
-		sendAttributeChangedEvent(sourceId, null, ElementType.GRAPH, attribute,
-				AttributeChangeEvent.REMOVE, null, null);
+		sendAttributeChangedEvent(sourceId, null, ElementType.GRAPH, attribute, AttributeChangeEvent.REMOVE, null,
+				null);
 	}
 
 	/**
@@ -692,10 +674,9 @@ public class MySourceBase  implements Source {
 	 * @param attribute
 	 *            The attribute name.
 	 */
-	public void sendGraphAttributeRemoved(String sourceId, long timeId,
-			String attribute) {
-		sendAttributeChangedEvent(sourceId, timeId, null, ElementType.GRAPH,
-				attribute, AttributeChangeEvent.REMOVE, null, null);
+	public void sendGraphAttributeRemoved(String sourceId, long timeId, String attribute) {
+		sendAttributeChangedEvent(sourceId, timeId, null, ElementType.GRAPH, attribute, AttributeChangeEvent.REMOVE,
+				null, null);
 	}
 
 	/**
@@ -710,10 +691,8 @@ public class MySourceBase  implements Source {
 	 * @param value
 	 *            The attribute value.
 	 */
-	public void sendNodeAttributeAdded(String sourceId, String nodeId,
-			String attribute, Object value) {
-		sendAttributeChangedEvent(sourceId, nodeId, ElementType.NODE,
-				attribute, AttributeChangeEvent.ADD, null, value);
+	public void sendNodeAttributeAdded(String sourceId, String nodeId, String attribute, Object value) {
+		sendAttributeChangedEvent(sourceId, nodeId, ElementType.NODE, attribute, AttributeChangeEvent.ADD, null, value);
 	}
 
 	/**
@@ -729,10 +708,9 @@ public class MySourceBase  implements Source {
 	 * @param value
 	 *            The attribute value.
 	 */
-	public void sendNodeAttributeAdded(String sourceId, long timeId,
-			String nodeId, String attribute, Object value) {
-		sendAttributeChangedEvent(sourceId, timeId, nodeId, ElementType.NODE,
-				attribute, AttributeChangeEvent.ADD, null, value);
+	public void sendNodeAttributeAdded(String sourceId, long timeId, String nodeId, String attribute, Object value) {
+		sendAttributeChangedEvent(sourceId, timeId, nodeId, ElementType.NODE, attribute, AttributeChangeEvent.ADD, null,
+				value);
 	}
 
 	/**
@@ -749,10 +727,10 @@ public class MySourceBase  implements Source {
 	 * @param newValue
 	 *            The attribute new value.
 	 */
-	public void sendNodeAttributeChanged(String sourceId, String nodeId,
-			String attribute, Object oldValue, Object newValue) {
-		sendAttributeChangedEvent(sourceId, nodeId, ElementType.NODE,
-				attribute, AttributeChangeEvent.CHANGE, oldValue, newValue);
+	public void sendNodeAttributeChanged(String sourceId, String nodeId, String attribute, Object oldValue,
+			Object newValue) {
+		sendAttributeChangedEvent(sourceId, nodeId, ElementType.NODE, attribute, AttributeChangeEvent.CHANGE, oldValue,
+				newValue);
 	}
 
 	/**
@@ -770,10 +748,10 @@ public class MySourceBase  implements Source {
 	 * @param newValue
 	 *            The attribute new value.
 	 */
-	public void sendNodeAttributeChanged(String sourceId, long timeId,
-			String nodeId, String attribute, Object oldValue, Object newValue) {
-		sendAttributeChangedEvent(sourceId, timeId, nodeId, ElementType.NODE,
-				attribute, AttributeChangeEvent.CHANGE, oldValue, newValue);
+	public void sendNodeAttributeChanged(String sourceId, long timeId, String nodeId, String attribute, Object oldValue,
+			Object newValue) {
+		sendAttributeChangedEvent(sourceId, timeId, nodeId, ElementType.NODE, attribute, AttributeChangeEvent.CHANGE,
+				oldValue, newValue);
 	}
 
 	/**
@@ -786,10 +764,9 @@ public class MySourceBase  implements Source {
 	 * @param attribute
 	 *            The attribute name.
 	 */
-	public void sendNodeAttributeRemoved(String sourceId, String nodeId,
-			String attribute) {
-		sendAttributeChangedEvent(sourceId, nodeId, ElementType.NODE,
-				attribute, AttributeChangeEvent.REMOVE, null, null);
+	public void sendNodeAttributeRemoved(String sourceId, String nodeId, String attribute) {
+		sendAttributeChangedEvent(sourceId, nodeId, ElementType.NODE, attribute, AttributeChangeEvent.REMOVE, null,
+				null);
 	}
 
 	/**
@@ -803,10 +780,9 @@ public class MySourceBase  implements Source {
 	 * @param attribute
 	 *            The attribute name.
 	 */
-	public void sendNodeAttributeRemoved(String sourceId, long timeId,
-			String nodeId, String attribute) {
-		sendAttributeChangedEvent(sourceId, timeId, nodeId, ElementType.NODE,
-				attribute, AttributeChangeEvent.REMOVE, null, null);
+	public void sendNodeAttributeRemoved(String sourceId, long timeId, String nodeId, String attribute) {
+		sendAttributeChangedEvent(sourceId, timeId, nodeId, ElementType.NODE, attribute, AttributeChangeEvent.REMOVE,
+				null, null);
 	}
 
 	/**
@@ -830,16 +806,14 @@ public class MySourceBase  implements Source {
 	 * @param newValue
 	 *            The new attribute value (null if removed).
 	 */
-	public void sendAttributeChangedEvent(String sourceId, String eltId,
-			ElementType eltType, String attribute, AttributeChangeEvent event,
-			Object oldValue, Object newValue) {
-		sendAttributeChangedEvent(sourceId, sourceTime.newEvent(), eltId,
-				eltType, attribute, event, oldValue, newValue);
+	public void sendAttributeChangedEvent(String sourceId, String eltId, ElementType eltType, String attribute,
+			AttributeChangeEvent event, Object oldValue, Object newValue) {
+		sendAttributeChangedEvent(sourceId, sourceTime.newEvent(), eltId, eltType, attribute, event, oldValue,
+				newValue);
 	}
 
-	public void sendAttributeChangedEvent(String sourceId, long timeId,
-			String eltId, ElementType eltType, String attribute,
-			AttributeChangeEvent event, Object oldValue, Object newValue) {
+	public void sendAttributeChangedEvent(String sourceId, long timeId, String eltId, ElementType eltType,
+			String attribute, AttributeChangeEvent event, Object oldValue, Object newValue) {
 		if (!eventProcessing) {
 			eventProcessing = true;
 			manageEvents();
@@ -847,52 +821,43 @@ public class MySourceBase  implements Source {
 			if (event == AttributeChangeEvent.ADD) {
 				if (eltType == ElementType.NODE) {
 					for (int i = 0; i < attrSinks.size(); i++)
-						attrSinks.get(i).nodeAttributeAdded(sourceId, timeId,
-								eltId, attribute, newValue);
+						attrSinks.get(i).nodeAttributeAdded(sourceId, timeId, eltId, attribute, newValue);
 				} else if (eltType == ElementType.EDGE) {
 					for (int i = 0; i < attrSinks.size(); i++)
-						attrSinks.get(i).edgeAttributeAdded(sourceId, timeId,
-								eltId, attribute, newValue);
+						attrSinks.get(i).edgeAttributeAdded(sourceId, timeId, eltId, attribute, newValue);
 				} else {
 					for (int i = 0; i < attrSinks.size(); i++)
-						attrSinks.get(i).graphAttributeAdded(sourceId, timeId,
-								attribute, newValue);
+						attrSinks.get(i).graphAttributeAdded(sourceId, timeId, attribute, newValue);
 				}
 			} else if (event == AttributeChangeEvent.REMOVE) {
 				if (eltType == ElementType.NODE) {
 					for (int i = 0; i < attrSinks.size(); i++)
-						attrSinks.get(i).nodeAttributeRemoved(sourceId, timeId,
-								eltId, attribute);
+						attrSinks.get(i).nodeAttributeRemoved(sourceId, timeId, eltId, attribute);
 				} else if (eltType == ElementType.EDGE) {
 					for (int i = 0; i < attrSinks.size(); i++)
-						attrSinks.get(i).edgeAttributeRemoved(sourceId, timeId,
-								eltId, attribute);
+						attrSinks.get(i).edgeAttributeRemoved(sourceId, timeId, eltId, attribute);
 				} else {
 					for (int i = 0; i < attrSinks.size(); i++)
-						attrSinks.get(i).graphAttributeRemoved(sourceId,
-								timeId, attribute);
+						attrSinks.get(i).graphAttributeRemoved(sourceId, timeId, attribute);
 				}
 			} else {
 				if (eltType == ElementType.NODE) {
 					for (int i = 0; i < attrSinks.size(); i++)
-						attrSinks.get(i).nodeAttributeChanged(sourceId, timeId,
-								eltId, attribute, oldValue, newValue);
+						attrSinks.get(i).nodeAttributeChanged(sourceId, timeId, eltId, attribute, oldValue, newValue);
 				} else if (eltType == ElementType.EDGE) {
 					for (int i = 0; i < attrSinks.size(); i++)
-						attrSinks.get(i).edgeAttributeChanged(sourceId, timeId,
-								eltId, attribute, oldValue, newValue);
+						attrSinks.get(i).edgeAttributeChanged(sourceId, timeId, eltId, attribute, oldValue, newValue);
 				} else {
 					for (int i = 0; i < attrSinks.size(); i++)
-						attrSinks.get(i).graphAttributeChanged(sourceId,
-								timeId, attribute, oldValue, newValue);
+						attrSinks.get(i).graphAttributeChanged(sourceId, timeId, attribute, oldValue, newValue);
 				}
 			}
 
 			manageEvents();
 			eventProcessing = false;
 		} else {
-			eventQueue.add(new AttributeChangedEvent(sourceId, timeId, eltId,
-					eltType, attribute, event, oldValue, newValue));
+			eventQueue.add(
+					new AttributeChangedEvent(sourceId, timeId, eltId, eltType, attribute, event, oldValue, newValue));
 		}
 	}
 
@@ -932,8 +897,8 @@ public class MySourceBase  implements Source {
 		String toNodeId;
 		boolean directed;
 
-		AfterEdgeAddEvent(String sourceId, long timeId, String edgeId,
-				String fromNodeId, String toNodeId, boolean directed) {
+		AfterEdgeAddEvent(String sourceId, long timeId, String edgeId, String fromNodeId, String toNodeId,
+				boolean directed) {
 			super(sourceId, timeId);
 			this.edgeId = edgeId;
 			this.fromNodeId = fromNodeId;
@@ -943,8 +908,7 @@ public class MySourceBase  implements Source {
 
 		void trigger() {
 			for (int i = 0; i < eltsSinks.size(); i++)
-				eltsSinks.get(i).edgeAdded(sourceId, timeId, edgeId,
-						fromNodeId, toNodeId, directed);
+				eltsSinks.get(i).edgeAdded(sourceId, timeId, edgeId, fromNodeId, toNodeId, directed);
 		}
 	}
 
@@ -1028,8 +992,7 @@ public class MySourceBase  implements Source {
 
 		Object newValue;
 
-		AttributeChangedEvent(String sourceId, long timeId, String eltId,
-				ElementType eltType, String attribute,
+		AttributeChangedEvent(String sourceId, long timeId, String eltId, ElementType eltType, String attribute,
 				AttributeChangeEvent event, Object oldValue, Object newValue) {
 			super(sourceId, timeId);
 			this.eltType = eltType;
@@ -1046,54 +1009,45 @@ public class MySourceBase  implements Source {
 				switch (eltType) {
 				case NODE:
 					for (int i = 0; i < attrSinks.size(); i++)
-						attrSinks.get(i).nodeAttributeAdded(sourceId, timeId,
-								eltId, attribute, newValue);
+						attrSinks.get(i).nodeAttributeAdded(sourceId, timeId, eltId, attribute, newValue);
 					break;
 				case EDGE:
 					for (int i = 0; i < attrSinks.size(); i++)
-						attrSinks.get(i).edgeAttributeAdded(sourceId, timeId,
-								eltId, attribute, newValue);
+						attrSinks.get(i).edgeAttributeAdded(sourceId, timeId, eltId, attribute, newValue);
 					break;
 				default:
 					for (int i = 0; i < attrSinks.size(); i++)
-						attrSinks.get(i).graphAttributeAdded(sourceId, timeId,
-								attribute, newValue);
+						attrSinks.get(i).graphAttributeAdded(sourceId, timeId, attribute, newValue);
 				}
 				break;
 			case REMOVE:
 				switch (eltType) {
 				case NODE:
 					for (int i = 0; i < attrSinks.size(); i++)
-						attrSinks.get(i).nodeAttributeRemoved(sourceId, timeId,
-								eltId, attribute);
+						attrSinks.get(i).nodeAttributeRemoved(sourceId, timeId, eltId, attribute);
 					break;
 				case EDGE:
 					for (int i = 0; i < attrSinks.size(); i++)
-						attrSinks.get(i).edgeAttributeRemoved(sourceId, timeId,
-								eltId, attribute);
+						attrSinks.get(i).edgeAttributeRemoved(sourceId, timeId, eltId, attribute);
 					break;
 				default:
 					for (int i = 0; i < attrSinks.size(); i++)
-						attrSinks.get(i).graphAttributeRemoved(sourceId,
-								timeId, attribute);
+						attrSinks.get(i).graphAttributeRemoved(sourceId, timeId, attribute);
 				}
 				break;
 			default:
 				switch (eltType) {
 				case NODE:
 					for (int i = 0; i < attrSinks.size(); i++)
-						attrSinks.get(i).nodeAttributeChanged(sourceId, timeId,
-								eltId, attribute, oldValue, newValue);
+						attrSinks.get(i).nodeAttributeChanged(sourceId, timeId, eltId, attribute, oldValue, newValue);
 					break;
 				case EDGE:
 					for (int i = 0; i < attrSinks.size(); i++)
-						attrSinks.get(i).edgeAttributeChanged(sourceId, timeId,
-								eltId, attribute, oldValue, newValue);
+						attrSinks.get(i).edgeAttributeChanged(sourceId, timeId, eltId, attribute, oldValue, newValue);
 					break;
 				default:
 					for (int i = 0; i < attrSinks.size(); i++)
-						attrSinks.get(i).graphAttributeChanged(sourceId,
-								timeId, attribute, oldValue, newValue);
+						attrSinks.get(i).graphAttributeChanged(sourceId, timeId, attribute, oldValue, newValue);
 				}
 			}
 		}
@@ -1141,42 +1095,47 @@ public class MySourceBase  implements Source {
 			l.clear();
 		}
 	}
-	
+
 	/**
 	 * how many inner graphs were generated for the current graph
 	 */
-	private int subGraphCounter = 1; 
+	private int subGraphCounter = 1;
+
 	/**
-	 * adds a new sub graph, it will be populated until InnerGraphFInished is called
+	 * adds a new sub graph, it will be populated until InnerGraphFInished is
+	 * called
 	 */
-	protected void newSubGraph(){
+	protected void newSubGraph() {
 		SingleGraph g = new SingleGraph(superID + "sub" + subGraphCounter);
 		subGraphCounter++;
 		addSubGraphSink(g);
 		usedSubGraphs.push(g);
 	}
-	
+
 	/**
-	 * adds the sub Graph to the List of subGraphs and removes it from the sinkLists
+	 * adds the sub Graph to the List of subGraphs and removes it from the
+	 * sinkLists
 	 */
-	protected void subGraphFinished(){
+	protected void subGraphFinished() {
 		SingleGraph g = usedSubGraphs.pop();
 		removeSink(g);
 		subGraphs.add(g);
 	}
-	
+
 	/**
-	 * this returns all finished subgraphs, but does not reset the internal dataStructures.
-	 * This can be called  until a new Graph is added using addSink().
+	 * this returns all finished subgraphs, but does not reset the internal
+	 * dataStructures. This can be called until a new Graph is added using
+	 * addSink().
+	 * 
 	 * @return all subGraphs
 	 */
-	public LinkedList<SingleGraph> getSubGraphs(){
+	public LinkedList<SingleGraph> getSubGraphs() {
 		return subGraphs;
 	}
-	
+
 	/**
-	 * resets the internal datastructures used for the subgraphs. 
-	 * This is automatically called with addGraph().
+	 * resets the internal datastructures used for the subgraphs. This is
+	 * automatically called with addGraph().
 	 */
 	protected void resetSubGraphs() {
 		usedSubGraphs.removeAllElements();
@@ -1184,6 +1143,4 @@ public class MySourceBase  implements Source {
 		subGraphs.clear();
 	}
 
-
 }
-

+ 0 - 23
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/main/Main.java

@@ -23,10 +23,6 @@ public final class Main {
 	 * Current mode of the application for creating new Nodes and Edges.
 	 */
 	private CreationMode creationMode = CreationMode.CREATE_NONE;
-	/**
-	 * Current mode of the application for selecting Nodes and Edges.
-	 */
-	private SelectionMode selectionMode = SelectionMode.SELECT_NODES;
 
 	/**
 	 * The root window of the application
@@ -128,23 +124,4 @@ public final class Main {
 		this.creationMode = creationMode;
 	}
 
-	/**
-	 * Returns the current Selection Mode.
-	 * 
-	 * @return the current selectionMode
-	 */
-	public SelectionMode getSelectionMode() {
-		return selectionMode;
-	}
-
-	/**
-	 * Switches the App to a given Selection Mode.
-	 * 
-	 * @param selectionMode
-	 *            the selectionMode to switch to
-	 */
-	public void setSelectionMode(SelectionMode selectionMode) {
-		this.selectionMode = selectionMode;
-	}
-
 }

+ 1 - 1
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/main/MainApp.java

@@ -79,7 +79,7 @@ public class MainApp extends Application {
 		// Load root layout from fxml file.
 		try {
 			FXMLLoader loader = new FXMLLoader();
-			loader.setLocation(MainApp.class.getResource("/NewBetterCoolerWindowTest.fxml"));
+			loader.setLocation(MainApp.class.getResource("/MainWindow.fxml"));
 			rootLayout = (VBox) loader.load();
 		} catch (IOException e) {
 			System.err.println("FXML File could not be loaded. Could the Path be incorrect?");

+ 0 - 5
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/main/SelectionMode.java

@@ -1,5 +0,0 @@
-package de.tu_darmstadt.informatik.tk.scopviz.main;
-
-public enum SelectionMode {
-	SELECT_NODES, SELECT_EDGES, CREATE
-}

+ 1 - 0
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/ButtonManager.java

@@ -3,6 +3,7 @@ package de.tu_darmstadt.informatik.tk.scopviz.ui;
 import java.util.ArrayList;
 
 import org.graphstream.graph.Edge;
+
 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;

+ 43 - 74
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/GUIController.java

@@ -5,10 +5,10 @@ import java.util.ArrayList;
 import java.util.ResourceBundle;
 
 import javax.swing.JPanel;
+
 import de.tu_darmstadt.informatik.tk.scopviz.main.Main;
 import de.tu_darmstadt.informatik.tk.scopviz.ui.handlers.KeyboardShortcuts;
 import de.tu_darmstadt.informatik.tk.scopviz.ui.handlers.MyAnimationTimer;
-import de.tu_darmstadt.informatik.tk.scopviz.ui.handlers.MyViewerListener;
 import de.tu_darmstadt.informatik.tk.scopviz.ui.handlers.ResizeListener;
 import javafx.beans.value.ChangeListener;
 import javafx.beans.value.ObservableValue;
@@ -28,7 +28,6 @@ import javafx.scene.control.cell.PropertyValueFactory;
 import javafx.scene.control.cell.TextFieldTableCell;
 import javafx.scene.layout.Pane;
 import javafx.scene.layout.VBox;
-import javafx.scene.text.Text;
 import javafx.util.Callback;
 import javafx.util.Pair;
 
@@ -86,8 +85,6 @@ public class GUIController implements Initializable {
 	@FXML
 	public MenuItem undelete;
 	@FXML
-	public MenuItem selectMode;
-	@FXML
 	public MenuItem about;
 
 	// The contents of the corresponding ScrollPanes
@@ -106,7 +103,7 @@ public class GUIController implements Initializable {
 	@FXML
 	public TableColumn<Pair<Object, String>, Object> toolboxObjectColumn;
 
-	// The columns of the Properites pane
+	// The columns of the Properties pane
 	// TODO: Fix Generic type arguments for propertiesObjectColumn
 	@FXML
 	public TableColumn<KeyValuePair, String> propertiesStringColumn;
@@ -115,13 +112,6 @@ public class GUIController implements Initializable {
 	@FXML
 	public TableColumn<KeyValuePair, String> propertiesTypeColumn;
 
-	@FXML
-	public Text createModusText;
-	@FXML
-	public Text selectModusText;
-	@FXML
-	public Text actualLayerText;
-
 	@FXML
 	public VBox symbolToolVBox;
 	@FXML
@@ -162,10 +152,6 @@ public class GUIController implements Initializable {
 		initializeMenuBar();
 		initializeSymbolRepToolbox();
 
-		// Initialize the Text Labels for displaying the current state of the
-		// Application
-		initializeTextFields();
-
 		// Setup the Keyboard Shortcuts
 		KeyboardShortcuts.initialize(Main.getInstance().getPrimaryStage());
 
@@ -175,7 +161,6 @@ public class GUIController implements Initializable {
 	 * Initializes the Menu Bar with all its contents.
 	 */
 	private void initializeMenuBar() {
-		MenuBarManager.setGUIController(this);
 
 		newItem.setOnAction(MenuBarManager.newHandler);
 		open.setOnAction(MenuBarManager.openHandler);
@@ -186,7 +171,6 @@ public class GUIController implements Initializable {
 		quit.setOnAction(MenuBarManager.quitHandler);
 		delete.setOnAction(MenuBarManager.deleteHandler);
 		undelete.setOnAction(MenuBarManager.undeleteHandler);
-		selectMode.setOnAction(MenuBarManager.selectModeHandler);
 		about.setOnAction(MenuBarManager.aboutHandler);
 
 	}
@@ -242,7 +226,6 @@ public class GUIController implements Initializable {
 	private void initializeToolbox() {
 
 		ToolboxManager.initialize(this);
-		MyViewerListener.setGUIController(this);
 
 		toolboxStringColumn.setCellValueFactory(new ToolboxManager.PairKeyFactory());
 		toolboxObjectColumn.setCellValueFactory(new ToolboxManager.PairValueFactory());
@@ -295,15 +278,6 @@ public class GUIController implements Initializable {
 
 	}
 
-	/**
-	 * Initialize the Text Labels for displaying the State of the Application.
-	 */
-	private void initializeTextFields() {
-		createModusText.setText(Main.getInstance().getCreationMode().toString());
-		selectModusText.setText(Main.getInstance().getSelectionMode().toString());
-		actualLayerText.setText(GraphDisplayManager.getCurrentLayer().toString());
-	}
-
 	/**
 	 * Removes the TableView Header for a given TableView
 	 * 
@@ -331,51 +305,46 @@ public class GUIController implements Initializable {
 	 * Asserts the correct Injection of all Elements from the FXML File.
 	 */
 	private void assertFXMLInjections() {
-		assert swingNode != null : "fx:id=\"swingNode\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert pane != null : "fx:id=\"pane\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-
-		assert zoomIn != null : "fx:id=\"zoomIn\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert zoomOut != null : "fx:id=\"zoomOut\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-
-		assert underlayButton != null : "fx:id=\"underlayButton\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert operatorButton != null : "fx:id=\"operatorButton\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert mappingButton != null : "fx:id=\"mappingButton\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert symbolRepButton != null : "fx:id=\"symbolRepButton\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-
-		assert newItem != null : "fx:id=\"newItem\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert open != null : "fx:id=\"open\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert add != null : "fx:id=\"add\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert save != null : "fx:id=\"save\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert saveAs != null : "fx:id=\"saveAs\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert preferences != null : "fx:id=\"preferences\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert quit != null : "fx:id=\"quit\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert delete != null : "fx:id=\"delete\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert undelete != null : "fx:id=\"undelete\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert selectMode != null : "fx:id=\"selectMode\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert about != null : "fx:id=\"about\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-
-		assert layerListView != null : "fx:id=\"layerListView\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-
-		assert toolbox != null : "fx:id=\"toolbox\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert properties != null : "fx:id=\"properties\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert metricListView != null : "fx:id=\"metricListView\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-
-		assert toolboxStringColumn != null : "fx:id=\"toolboxString\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert toolboxObjectColumn != null : "fx:id=\"toolboxObject\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-
-		assert propertiesStringColumn != null : "fx:id=\"propertiesString\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert propertiesObjectColumn != null : "fx:id=\"propertiesObject\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert propertiesTypeColumn != null : "fx:id=\"propertiesType\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-
-		assert createModusText != null : "fx:id=\"createModusText\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert selectModusText != null : "fx:id=\"selectModusText\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert actualLayerText != null : "fx:id=\"actualLayerText\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-
-		assert symbolToolVBox != null : "fx:id=\"symbolToolVBox\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert edgesVisibleCheckbox != null : "fx:id=\"edgesVisibleCheckbox\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert nodeLabelCheckbox != null : "fx:id=\"nodeLabelCheckbox\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-		assert edgeWeightCheckbox != null : "fx:id=\"egdeWeightCheckbox\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
-
-		assert swingNodeWorldView != null : "fx:id=\"swingNodeWorldView\" was not injected: check your FXML file 'NewBetterCoolerWindowTest.fxml'.";
+		assert swingNode != null : "fx:id=\"swingNode\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert pane != null : "fx:id=\"pane\" was not injected: check your FXML file 'MainWindow.fxml'.";
+
+		assert zoomIn != null : "fx:id=\"zoomIn\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert zoomOut != null : "fx:id=\"zoomOut\" was not injected: check your FXML file 'MainWindow.fxml'.";
+
+		assert underlayButton != null : "fx:id=\"underlayButton\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert operatorButton != null : "fx:id=\"operatorButton\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert mappingButton != null : "fx:id=\"mappingButton\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert symbolRepButton != null : "fx:id=\"symbolRepButton\" was not injected: check your FXML file 'MainWindow.fxml'.";
+
+		assert newItem != null : "fx:id=\"newItem\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert open != null : "fx:id=\"open\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert add != null : "fx:id=\"add\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert save != null : "fx:id=\"save\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert saveAs != null : "fx:id=\"saveAs\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert preferences != null : "fx:id=\"preferences\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert quit != null : "fx:id=\"quit\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert delete != null : "fx:id=\"delete\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert undelete != null : "fx:id=\"undelete\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert about != null : "fx:id=\"about\" was not injected: check your FXML file 'MainWindow.fxml'.";
+
+		assert layerListView != null : "fx:id=\"layerListView\" was not injected: check your FXML file 'MainWindow.fxml'.";
+
+		assert toolbox != null : "fx:id=\"toolbox\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert properties != null : "fx:id=\"properties\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert metricListView != null : "fx:id=\"metricListView\" was not injected: check your FXML file 'MainWindow.fxml'.";
+
+		assert toolboxStringColumn != null : "fx:id=\"toolboxString\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert toolboxObjectColumn != null : "fx:id=\"toolboxObject\" was not injected: check your FXML file 'MainWindow.fxml'.";
+
+		assert propertiesStringColumn != null : "fx:id=\"propertiesString\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert propertiesObjectColumn != null : "fx:id=\"propertiesObject\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert propertiesTypeColumn != null : "fx:id=\"propertiesType\" was not injected: check your FXML file 'MainWindow.fxml'.";
+
+		assert symbolToolVBox != null : "fx:id=\"symbolToolVBox\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert edgesVisibleCheckbox != null : "fx:id=\"edgesVisibleCheckbox\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert nodeLabelCheckbox != null : "fx:id=\"nodeLabelCheckbox\" was not injected: check your FXML file 'MainWindow.fxml'.";
+		assert edgeWeightCheckbox != null : "fx:id=\"egdeWeightCheckbox\" was not injected: check your FXML file 'MainWindow.fxml'.";
+
+		assert swingNodeWorldView != null : "fx:id=\"swingNodeWorldView\" was not injected: check your FXML file 'MainWindow.fxml'.";
 	}
 }

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

@@ -7,6 +7,7 @@ import java.util.ArrayList;
 import org.apache.commons.math3.exception.NullArgumentException;
 import org.graphstream.graph.Graph;
 import org.graphstream.graph.implementations.SingleGraph;
+
 import de.tu_darmstadt.informatik.tk.scopviz.io.GraphMLImporter;
 import de.tu_darmstadt.informatik.tk.scopviz.main.CreationMode;
 import de.tu_darmstadt.informatik.tk.scopviz.main.GraphManager;
@@ -33,7 +34,6 @@ public final class GraphDisplayManager {
 	/** Prefix to add to the Name of the Graphs. */
 	private static final String GRAPH_STRING_ID_PREFIX = "graph";
 
-
 	/** A List of all GraphManagers managed by this class. */
 	private static ArrayList<GraphManager> vList = new ArrayList<GraphManager>();
 	/** The number of GraphManagers currently being managed. */

+ 0 - 46
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/MenuBarManager.java

@@ -1,16 +1,13 @@
 package de.tu_darmstadt.informatik.tk.scopviz.ui;
 
 import de.tu_darmstadt.informatik.tk.scopviz.io.GraphMLExporter;
-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.Main;
-import de.tu_darmstadt.informatik.tk.scopviz.main.SelectionMode;
 import javafx.event.ActionEvent;
 import javafx.event.EventHandler;
 import javafx.scene.control.Alert;
 import javafx.scene.control.Alert.AlertType;
 import javafx.scene.control.Label;
-import javafx.scene.control.MenuItem;
 import javafx.scene.layout.Region;
 
 /**
@@ -22,9 +19,6 @@ import javafx.scene.layout.Region;
  */
 public final class MenuBarManager {
 
-	/** Reference to the GUI Controller. */
-	private static GUIController controller;
-
 	/**
 	 * Private Constructor to prevent Instantiation.
 	 */
@@ -156,36 +150,6 @@ public final class MenuBarManager {
 		}
 	};
 
-	/**
-	 * Handler for the "change select mode" button.
-	 */
-	public static final EventHandler<ActionEvent> selectModeHandler = new EventHandler<ActionEvent>() {
-		public void handle(ActionEvent evt) {
-			MenuItem src = (MenuItem) evt.getSource();
-			if (src.getText().equals("Select Edges")) {
-				src.setText("Select Nodes");
-
-				// unselect CreationMode
-				Main.getInstance().setCreationMode(CreationMode.CREATE_NONE);
-				controller.toolbox.getSelectionModel().clearSelection();
-
-				// set SelectMode
-				Main.getInstance().setSelectionMode(SelectionMode.SELECT_EDGES);
-
-			} else {
-				src.setText("Select Edges");
-
-				// unselect CreationMode
-				Main.getInstance().setCreationMode(CreationMode.CREATE_NONE);
-				controller.toolbox.getSelectionModel().clearSelection();
-
-				// set SelectMode
-				Main.getInstance().setSelectionMode(SelectionMode.SELECT_NODES);
-
-			}
-		}
-	};
-
 	/**
 	 * Handler for the "preferences" MenuItem.
 	 */
@@ -229,14 +193,4 @@ public final class MenuBarManager {
 		}
 	};
 
-	/**
-	 * Sets the Reference to the GUI Controller for Access to UI Elements.
-	 * 
-	 * @param con
-	 *            the GUI Controller to use.
-	 */
-	public static void setGUIController(GUIController con) {
-		controller = con;
-	}
-
 }

+ 1 - 0
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/OptionsManager.java

@@ -1,6 +1,7 @@
 package de.tu_darmstadt.informatik.tk.scopviz.ui;
 
 import java.util.ArrayList;
+
 import de.tu_darmstadt.informatik.tk.scopviz.debug.Debug;
 import de.tu_darmstadt.informatik.tk.scopviz.main.Layer;
 import de.tu_darmstadt.informatik.tk.scopviz.main.Main;

+ 0 - 9
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/handlers/MyAnimationTimer.java

@@ -2,7 +2,6 @@ package de.tu_darmstadt.informatik.tk.scopviz.ui.handlers;
 
 import de.tu_darmstadt.informatik.tk.scopviz.main.Main;
 import de.tu_darmstadt.informatik.tk.scopviz.ui.GUIController;
-import de.tu_darmstadt.informatik.tk.scopviz.ui.GraphDisplayManager;
 import javafx.animation.AnimationTimer;
 
 public class MyAnimationTimer extends AnimationTimer {
@@ -23,14 +22,6 @@ public class MyAnimationTimer extends AnimationTimer {
 			Main.getInstance().getGraphManager().pumpIt();
 			Main.getInstance().getGraphManager().correctCoordinates();
 			Main.getInstance().getGraphManager().handleEdgeWeight();
-			try {
-				guiController.createModusText.setText(Main.getInstance().getCreationMode().toString());
-				guiController.selectModusText.setText(Main.getInstance().getSelectionMode().toString());
-				guiController.actualLayerText.setText(GraphDisplayManager.getCurrentLayer().toString());
-			} catch (NullPointerException e) {
-				// TODO find a better soultion for the null pointer that pops up
-				// on startup
-			}
 
 		}
 	}

+ 1 - 0
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/handlers/MyMouseManager.java

@@ -9,6 +9,7 @@ import org.graphstream.ui.geom.Point3;
 import org.graphstream.ui.graphicGraph.GraphicElement;
 import org.graphstream.ui.view.Camera;
 import org.graphstream.ui.view.util.DefaultMouseManager;
+
 import de.tu_darmstadt.informatik.tk.scopviz.debug.Debug;
 import de.tu_darmstadt.informatik.tk.scopviz.main.AuxilFunctions;
 import de.tu_darmstadt.informatik.tk.scopviz.main.CreationMode;

+ 0 - 181
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/handlers/MyViewerListener.java

@@ -1,181 +0,0 @@
-package de.tu_darmstadt.informatik.tk.scopviz.ui.handlers;
-
-import org.graphstream.ui.view.ViewerListener;
-
-import de.tu_darmstadt.informatik.tk.scopviz.debug.Debug;
-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.Main;
-import de.tu_darmstadt.informatik.tk.scopviz.ui.GUIController;
-import de.tu_darmstadt.informatik.tk.scopviz.ui.PropertiesManager;
-
-/**
- * Listener to react to changes in the graph viewer. OBSOLETE, functionality
- * moved to MyMouseManager!
- * 
- * @author Jascha Bohne
- * @version 1.0
- *
- */
-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.
-	 */
-	private GraphManager graphManager;
-
-	/**
-	 * The Id of the Node that was last clicked.
-	 */
-	private String lastClickedID;
-
-	/**
-	 * GUIController reference.
-	 */
-	private static GUIController controller;
-
-	/**
-	 * Creates a new MyViewerListener object.
-	 * 
-	 * @param viz
-	 *            the visualizer that manages the view this listener listens to
-	 */
-	public MyViewerListener(GraphManager viz) {
-		graphManager = viz;
-	}
-
-	/**
-	 * Set GUIController
-	 * 
-	 * @param guiController
-	 */
-	public static void setGUIController(GUIController guiController) {
-		controller = guiController;
-	}
-
-	/**
-	 * Gets called whenever one of the nodes within the viewer is clicked.
-	 * 
-	 * @param id
-	 *            the id of the Node that was clicked
-	 */
-	@Override
-	public void buttonPushed(String id) {
-		if (Main.getInstance().getCreationMode() != CreationMode.CREATE_NONE) {
-			createEdges(id);
-			return;
-		}
-		deselectNodesAfterEdgeCreation(id);
-
-		switch (Main.getInstance().getSelectionMode()) {
-		case SELECT_NODES:
-			graphManager.selectNode(id);
-			break;
-		default:
-			break;
-		}
-		PropertiesManager.setItemsProperties();
-	}
-
-	/**
-	 * Create Edges based on CreateMode
-	 * 
-	 * @param id
-	 */
-	private void createEdges(String id) {
-		String newID = null;
-		switch (Main.getInstance().getCreationMode()) {
-
-		case CREATE_DIRECTED_EDGE:
-
-			if (lastClickedID == null) {
-				lastClickedID = id;
-				selectNodeForEdgeCreation(lastClickedID);
-			} else {
-				if (!id.equals(lastClickedID)) {
-					newID = Main.getInstance().getUnusedID();
-					graphManager.getGraph().addEdge(newID, lastClickedID, id, true);
-					Debug.out("Created an directed edge with Id " + newID + " between " + lastClickedID + " and " + id);
-
-					deselectNodesAfterEdgeCreation(lastClickedID);
-
-					lastClickedID = null;
-					graphManager.selectEdge(newID);
-				}
-			}
-			break;
-
-		case CREATE_UNDIRECTED_EDGE:
-			if (lastClickedID == null) {
-				lastClickedID = id;
-				selectNodeForEdgeCreation(lastClickedID);
-			} else {
-				if (!id.equals(lastClickedID)) {
-					newID = Main.getInstance().getUnusedID();
-					graphManager.getGraph().addEdge(newID, lastClickedID, id);
-
-					Debug.out(
-							"Created an undirected edge with Id " + newID + " between " + lastClickedID + " and " + id);
-
-					deselectNodesAfterEdgeCreation(lastClickedID);
-					lastClickedID = null;
-					graphManager.selectEdge(newID);
-				}
-			}
-			break;
-
-		default:
-			break;
-		}
-		PropertiesManager.setItemsProperties();
-
-		controller.createModusText.setText(Main.getInstance().getCreationMode().toString());
-
-		if (!CREATE_MORE_THEN_ONE) {
-			Main.getInstance().setCreationMode(CreationMode.CREATE_NONE);
-		}
-	}
-
-	/**
-	 * Selects a Node as the starting point for creating a new Edge.
-	 * 
-	 * @param nodeID
-	 *            the ID of the Node to select
-	 */
-	private void selectNodeForEdgeCreation(String nodeID) {
-		graphManager.getGraph().getNode(nodeID).changeAttribute("ui.style", "fill-color: #00FF00; size: 15px;");
-	}
-
-	/**
-	 * Reset the Selection of the Node after Edge has been successfully created.
-	 * 
-	 * @param nodeID
-	 *            the Id of the node to deselect.
-	 */
-	private void deselectNodesAfterEdgeCreation(String nodeID) {
-		String uiStyle = "fill-color: #000000; size: 10px;";
-		graphManager.getGraph().getNode(nodeID).changeAttribute("ui.style", uiStyle);
-	}
-
-	/**
-	 * Gets called whenever the click on the node is released.
-	 */
-	@Override
-	public void buttonReleased(String id) {
-
-	}
-
-	/**
-	 * Gets called whenever the view is closed.
-	 */
-	@Override
-	public void viewClosed(String viewName) {
-
-	}
-
-}

+ 110 - 57
scopviz/src/main/resources/MainWindow.fxml

@@ -2,100 +2,153 @@
 
 <?import javafx.embed.swing.SwingNode?>
 <?import javafx.geometry.Insets?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.CheckBox?>
+<?import javafx.scene.control.ListView?>
 <?import javafx.scene.control.Menu?>
 <?import javafx.scene.control.MenuBar?>
 <?import javafx.scene.control.MenuItem?>
-<?import javafx.scene.control.ScrollPane?>
 <?import javafx.scene.control.SeparatorMenuItem?>
+<?import javafx.scene.control.SplitPane?>
+<?import javafx.scene.control.TableColumn?>
+<?import javafx.scene.control.TableView?>
 <?import javafx.scene.layout.AnchorPane?>
 <?import javafx.scene.layout.Pane?>
 <?import javafx.scene.layout.VBox?>
+<?import javafx.scene.text.Font?>
 <?import javafx.scene.text.Text?>
 
-<VBox minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="640.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1">
+<VBox minHeight="400.0" minWidth="640.0" prefHeight="400.0" prefWidth="640.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.tu_darmstadt.informatik.tk.scopviz.ui.GUIController">
   <children>
-    <MenuBar VBox.vgrow="NEVER">
+    <MenuBar stylesheets="@GUITheme.css" VBox.vgrow="NEVER">
       <menus>
         <Menu mnemonicParsing="false" text="File">
           <items>
-            <MenuItem mnemonicParsing="false" text="New" />
-            <MenuItem mnemonicParsing="false" text="Open…" />
-            <Menu mnemonicParsing="false" text="Open Recent" />
+            <MenuItem fx:id="newItem" mnemonicParsing="false" text="New" />
+            <MenuItem fx:id="open" mnemonicParsing="false" text="Open…" />
+            <MenuItem fx:id="add" mnemonicParsing="false" text="Add…" />
             <SeparatorMenuItem mnemonicParsing="false" />
-            <MenuItem mnemonicParsing="false" text="Close" />
-            <MenuItem mnemonicParsing="false" text="Save" />
-            <MenuItem mnemonicParsing="false" text="Save As…" />
-            <MenuItem mnemonicParsing="false" text="Revert" />
+            <MenuItem fx:id="save" accelerator="Shortcut+S" mnemonicParsing="false" text="Save" />
+            <MenuItem fx:id="saveAs" accelerator="Shortcut+Shift+S" mnemonicParsing="false" text="Save As…" />
             <SeparatorMenuItem mnemonicParsing="false" />
-            <MenuItem mnemonicParsing="false" text="Preferences" />
+            <MenuItem fx:id="preferences" mnemonicParsing="false" text="Preferences" />
             <SeparatorMenuItem mnemonicParsing="false" />
-            <MenuItem mnemonicParsing="false" text="Quit" />
+            <MenuItem fx:id="quit" mnemonicParsing="false" text="Quit" />
           </items>
         </Menu>
         <Menu mnemonicParsing="false" text="Edit">
           <items>
-            <MenuItem mnemonicParsing="false" text="Undo" />
-            <MenuItem mnemonicParsing="false" text="Redo" />
             <SeparatorMenuItem mnemonicParsing="false" />
-            <MenuItem mnemonicParsing="false" text="Cut" />
-            <MenuItem mnemonicParsing="false" text="Copy" />
-            <MenuItem mnemonicParsing="false" text="Paste" />
-            <MenuItem mnemonicParsing="false" text="Delete" />
+            <MenuItem fx:id="delete" accelerator="Shortcut+D" mnemonicParsing="false" text="Delete" />
+            <MenuItem fx:id="undelete" accelerator="Shortcut+Z" mnemonicParsing="false" text="Undelete" />
             <SeparatorMenuItem mnemonicParsing="false" />
-            <MenuItem mnemonicParsing="false" text="Select All" />
-            <MenuItem mnemonicParsing="false" text="Unselect All" />
           </items>
         </Menu>
         <Menu mnemonicParsing="false" text="Help">
           <items>
-            <MenuItem mnemonicParsing="false" text="About MyHelloApp" />
+            <MenuItem fx:id="about" mnemonicParsing="false" text="About MyHelloApp" />
           </items>
         </Menu>
       </menus>
     </MenuBar>
     <AnchorPane maxHeight="-1.0" maxWidth="-1.0" prefHeight="-1.0" prefWidth="-1.0" VBox.vgrow="ALWAYS">
-      <children>
-            <ScrollPane prefHeight="371.0" prefWidth="130.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="0.0">
-              <content>
-                <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="200.0" prefWidth="200.0">
+         <children>
+            <SplitPane dividerPositions="0.15" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+              <items>
+                <AnchorPane SplitPane.resizableWithParent="false">
                      <children>
-                        <Text layoutX="42.0" layoutY="26.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Toolbox" />
+                        <SplitPane dividerPositions="0.5" orientation="VERTICAL" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+                          <items>
+                            <AnchorPane>
+                                 <children>
+                                    <TableView fx:id="toolbox" stylesheets="@GUITheme.css" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+                                      <columns>
+                                        <TableColumn fx:id="toolboxObjectColumn" editable="false" maxWidth="-1.0" minWidth="90.0" prefWidth="-1.0" sortable="false" />
+                                        <TableColumn fx:id="toolboxStringColumn" editable="false" maxWidth="-1.0" minWidth="90.0" prefWidth="-1.0" sortable="false" />
+                                      </columns>
+                                    </TableView>
+                                    <VBox fx:id="symbolToolVBox" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+                                       <children>
+                                          <CheckBox fx:id="edgesVisibleCheckbox" mnemonicParsing="false" selected="true" text="Edges">
+                                             <padding>
+                                                <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+                                             </padding>
+                                          </CheckBox>
+                                          <CheckBox fx:id="nodeLabelCheckbox" mnemonicParsing="false" selected="true" text="Labels">
+                                             <padding>
+                                                <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+                                             </padding>
+                                          </CheckBox>
+                                          <CheckBox fx:id="edgeWeightCheckbox" mnemonicParsing="false" selected="true" text="Weights">
+                                             <padding>
+                                                <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
+                                             </padding>
+                                          </CheckBox>
+                                       </children></VBox>
+                                </children>
+                              </AnchorPane>
+                            <AnchorPane>
+                                 <children>
+                                    <TableView fx:id="properties" editable="true" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+                                      <columns>
+                                        <TableColumn fx:id="propertiesStringColumn" editable="false" maxWidth="1920.0" minWidth="90.0" prefWidth="150.0" sortable="false" text="Property" />
+                                        <TableColumn fx:id="propertiesObjectColumn" maxWidth="1920.0" minWidth="90.0" prefWidth="150.0" sortable="false" text="Value" />
+                                        <TableColumn fx:id="propertiesTypeColumn" editable="false" maxWidth="1920.0" minWidth="90.0" prefWidth="150.0" sortable="false" text="Type" />
+                                      </columns>
+                                       <columnResizePolicy>
+                                          <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
+                                       </columnResizePolicy>
+                                    </TableView>
+                                 </children>
+                              </AnchorPane>
+                          </items>
+                        </SplitPane>
                      </children>
                   </AnchorPane>
-              </content>
-            </ScrollPane>
-            <Pane layoutX="131.0" prefHeight="371.0" prefWidth="379.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="131.0" AnchorPane.rightAnchor="130.0" AnchorPane.topAnchor="0.0">
-               <children>
-                  <SwingNode />
-               </children>
-               <opaqueInsets>
-                  <Insets />
-               </opaqueInsets>
-            </Pane>
-            <ScrollPane layoutX="510.0" layoutY="186.0" prefHeight="112.0" prefWidth="130.0" AnchorPane.bottomAnchor="0.0" AnchorPane.rightAnchor="0.0">
-               <content>
-                  <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="200.0" prefWidth="200.0">
+                <AnchorPane SplitPane.resizableWithParent="false">
                      <children>
-                        <Text layoutX="28.0" layoutY="52.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Metriken" />
+                        <SplitPane dividerPositions="0.8" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+                          <items>
+                            <AnchorPane styleClass="background" SplitPane.resizableWithParent="false">
+                                 <children>
+                                    <Pane fx:id="pane" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+                                       <children>
+                                          <SwingNode fx:id="swingNode" />
+                                          <SwingNode fx:id="swingNodeWorldView" />
+                                       </children></Pane>
+                                    <Button fx:id="zoomOut" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="30.0" prefWidth="30.0" text="-" textAlignment="JUSTIFY" AnchorPane.bottomAnchor="10.0" AnchorPane.rightAnchor="10.0" />
+                                    <Button fx:id="zoomIn" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="30.0" prefWidth="30.0" text="+" textAlignment="JUSTIFY" AnchorPane.bottomAnchor="45.0" AnchorPane.rightAnchor="10.0" />
+                                 </children>
+                              </AnchorPane>
+                            <AnchorPane SplitPane.resizableWithParent="false">
+                                 <children>
+                                    <SplitPane dividerPositions="0.5" orientation="VERTICAL" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
+                                      <items>
+                                        <AnchorPane stylesheets="@GUITheme.css">
+                                             <children>
+                                                <ListView fx:id="layerListView" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
+                                                <Button fx:id="underlayButton" mnemonicParsing="false" text="Underlay" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="5.0" />
+                                                <Button fx:id="operatorButton" layoutX="10.0" layoutY="10.0" mnemonicParsing="false" text="Operator" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="35.0" />
+                                                <Button fx:id="mappingButton" layoutX="10.0" layoutY="10.0" mnemonicParsing="false" text="Mapping" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="65.0" />
+                                                <Button fx:id="symbolRepButton" layoutX="10.0" layoutY="10.0" mnemonicParsing="false" text="Symbol Rep." AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="95.0" />
+                                             </children>
+                                          </AnchorPane>
+                                        <AnchorPane>
+                                             <children>
+                                                <ListView fx:id="metricListView" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
+                                             </children>
+                                          </AnchorPane>
+                                      </items>
+                                    </SplitPane>
+                                 </children>
+                              </AnchorPane>
+                          </items>
+                        </SplitPane>
                      </children>
                   </AnchorPane>
-               </content>
-            </ScrollPane>
-            <ScrollPane layoutX="510.0" layoutY="113.0" prefHeight="145.0" prefWidth="130.0" AnchorPane.rightAnchor="0.0">
-               <content>
-                  <AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="144.0" prefWidth="200.0">
-                     <children>
-                        <Text layoutX="31.0" layoutY="58.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Attribute" />
-                     </children>
-                  </AnchorPane>
-               </content>
-            </ScrollPane>
-            <Pane layoutX="510.0" prefHeight="112.0" prefWidth="130.0">
-               <children>
-                  <Text layoutX="51.0" layoutY="52.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Layer" />
-               </children>
-            </Pane>
-      </children>
+              </items>
+            </SplitPane>
+         </children>
     </AnchorPane>
   </children>
 </VBox>

+ 0 - 170
scopviz/src/main/resources/NewBetterCoolerWindowTest.fxml

@@ -1,170 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<?import javafx.embed.swing.SwingNode?>
-<?import javafx.geometry.Insets?>
-<?import javafx.scene.control.Button?>
-<?import javafx.scene.control.CheckBox?>
-<?import javafx.scene.control.ListView?>
-<?import javafx.scene.control.Menu?>
-<?import javafx.scene.control.MenuBar?>
-<?import javafx.scene.control.MenuItem?>
-<?import javafx.scene.control.SeparatorMenuItem?>
-<?import javafx.scene.control.SplitPane?>
-<?import javafx.scene.control.TableColumn?>
-<?import javafx.scene.control.TableView?>
-<?import javafx.scene.layout.AnchorPane?>
-<?import javafx.scene.layout.Pane?>
-<?import javafx.scene.layout.VBox?>
-<?import javafx.scene.text.Font?>
-<?import javafx.scene.text.Text?>
-
-<VBox minHeight="400.0" minWidth="640.0" prefHeight="400.0" prefWidth="640.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.tu_darmstadt.informatik.tk.scopviz.ui.GUIController">
-  <children>
-    <MenuBar stylesheets="@GUITheme.css" VBox.vgrow="NEVER">
-      <menus>
-        <Menu mnemonicParsing="false" text="File">
-          <items>
-            <MenuItem fx:id="newItem" mnemonicParsing="false" text="New" />
-            <MenuItem fx:id="open" mnemonicParsing="false" text="Open…" />
-            <MenuItem fx:id="add" mnemonicParsing="false" text="Add…" />
-            <SeparatorMenuItem mnemonicParsing="false" />
-            <MenuItem fx:id="save" accelerator="Shortcut+S" mnemonicParsing="false" text="Save" />
-            <MenuItem fx:id="saveAs" accelerator="Shortcut+Shift+S" mnemonicParsing="false" text="Save As…" />
-            <SeparatorMenuItem mnemonicParsing="false" />
-            <MenuItem fx:id="preferences" mnemonicParsing="false" text="Preferences" />
-            <SeparatorMenuItem mnemonicParsing="false" />
-            <MenuItem fx:id="quit" mnemonicParsing="false" text="Quit" />
-          </items>
-        </Menu>
-        <Menu mnemonicParsing="false" text="Edit">
-          <items>
-            <SeparatorMenuItem mnemonicParsing="false" />
-            <MenuItem fx:id="delete" accelerator="Shortcut+D" mnemonicParsing="false" text="Delete" />
-            <MenuItem fx:id="undelete" accelerator="Shortcut+Z" mnemonicParsing="false" text="Undelete" />
-            <SeparatorMenuItem mnemonicParsing="false" />
-            <MenuItem fx:id="selectMode" accelerator="Shortcut+E" mnemonicParsing="false" text="Select Edges" />
-          </items>
-        </Menu>
-        <Menu mnemonicParsing="false" text="Help">
-          <items>
-            <MenuItem fx:id="about" mnemonicParsing="false" text="About MyHelloApp" />
-          </items>
-        </Menu>
-      </menus>
-    </MenuBar>
-    <AnchorPane maxHeight="-1.0" maxWidth="-1.0" prefHeight="-1.0" prefWidth="-1.0" VBox.vgrow="ALWAYS">
-         <children>
-            <SplitPane dividerPositions="0.15" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
-              <items>
-                <AnchorPane SplitPane.resizableWithParent="false">
-                     <children>
-                        <SplitPane dividerPositions="0.5" orientation="VERTICAL" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
-                          <items>
-                            <AnchorPane>
-                                 <children>
-                                    <TableView fx:id="toolbox" stylesheets="@GUITheme.css" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
-                                      <columns>
-                                        <TableColumn fx:id="toolboxObjectColumn" editable="false" maxWidth="-1.0" minWidth="90.0" prefWidth="-1.0" sortable="false" />
-                                        <TableColumn fx:id="toolboxStringColumn" editable="false" maxWidth="-1.0" minWidth="90.0" prefWidth="-1.0" sortable="false" />
-                                      </columns>
-                                    </TableView>
-                                    <VBox fx:id="symbolToolVBox" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
-                                       <children>
-                                          <CheckBox fx:id="edgesVisibleCheckbox" mnemonicParsing="false" selected="true" text="Edges">
-                                             <padding>
-                                                <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
-                                             </padding>
-                                          </CheckBox>
-                                          <CheckBox fx:id="nodeLabelCheckbox" mnemonicParsing="false" selected="true" text="Labels">
-                                             <padding>
-                                                <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
-                                             </padding>
-                                          </CheckBox>
-                                          <CheckBox fx:id="edgeWeightCheckbox" mnemonicParsing="false" selected="true" text="Weights">
-                                             <padding>
-                                                <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
-                                             </padding>
-                                          </CheckBox>
-                                       </children></VBox>
-                                </children>
-                              </AnchorPane>
-                            <AnchorPane>
-                                 <children>
-                                    <TableView fx:id="properties" editable="true" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
-                                      <columns>
-                                        <TableColumn fx:id="propertiesStringColumn" editable="false" maxWidth="1920.0" minWidth="90.0" prefWidth="150.0" sortable="false" text="Property" />
-                                        <TableColumn fx:id="propertiesObjectColumn" maxWidth="1920.0" minWidth="90.0" prefWidth="150.0" sortable="false" text="Value" />
-                                        <TableColumn fx:id="propertiesTypeColumn" editable="false" maxWidth="1920.0" minWidth="90.0" prefWidth="150.0" sortable="false" text="Type" />
-                                      </columns>
-                                       <columnResizePolicy>
-                                          <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
-                                       </columnResizePolicy>
-                                    </TableView>
-                                 </children>
-                              </AnchorPane>
-                          </items>
-                        </SplitPane>
-                     </children>
-                  </AnchorPane>
-                <AnchorPane SplitPane.resizableWithParent="false">
-                     <children>
-                        <SplitPane dividerPositions="0.8" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
-                          <items>
-                            <AnchorPane styleClass="background" SplitPane.resizableWithParent="false">
-                                 <children>
-                                    <Pane fx:id="pane" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
-                                       <children>
-                                          <SwingNode fx:id="swingNode" />
-                                          <SwingNode fx:id="swingNodeWorldView" />
-                                       </children></Pane>
-                                    <Button fx:id="zoomOut" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="30.0" prefWidth="30.0" text="-" textAlignment="JUSTIFY" AnchorPane.bottomAnchor="10.0" AnchorPane.rightAnchor="10.0" />
-                                    <Button fx:id="zoomIn" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" mnemonicParsing="false" prefHeight="30.0" prefWidth="30.0" text="+" textAlignment="JUSTIFY" AnchorPane.bottomAnchor="45.0" AnchorPane.rightAnchor="10.0" />
-                                    <Text fx:id="createModusText" fill="RED" strokeType="OUTSIDE" strokeWidth="0.0" text="Create None" textAlignment="JUSTIFY" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="5.0">
-                                       <font>
-                                          <Font size="9.0" />
-                                       </font>
-                                    </Text>
-                                    <Text fx:id="selectModusText" fill="#eb0303" strokeType="OUTSIDE" strokeWidth="0.0" text="Select Node" textAlignment="JUSTIFY" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="20.0">
-                                       <font>
-                                          <Font size="9.0" />
-                                       </font>
-                                    </Text>
-                                    <Text fx:id="actualLayerText" fill="#eb0303" layoutX="10.0" layoutY="10.0" strokeType="OUTSIDE" strokeWidth="0.0" text="Underlay" textAlignment="JUSTIFY" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="35.0">
-                                       <font>
-                                          <Font size="9.0" />
-                                       </font>
-                                    </Text>
-                                 </children>
-                              </AnchorPane>
-                            <AnchorPane SplitPane.resizableWithParent="false">
-                                 <children>
-                                    <SplitPane dividerPositions="0.5" orientation="VERTICAL" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
-                                      <items>
-                                        <AnchorPane stylesheets="@GUITheme.css">
-                                             <children>
-                                                <ListView fx:id="layerListView" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
-                                                <Button fx:id="underlayButton" mnemonicParsing="false" text="Underlay" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="5.0" />
-                                                <Button fx:id="operatorButton" layoutX="10.0" layoutY="10.0" mnemonicParsing="false" text="Operator" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="35.0" />
-                                                <Button fx:id="mappingButton" layoutX="10.0" layoutY="10.0" mnemonicParsing="false" text="Mapping" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="65.0" />
-                                                <Button fx:id="symbolRepButton" layoutX="10.0" layoutY="10.0" mnemonicParsing="false" text="Symbol Rep." AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="95.0" />
-                                             </children>
-                                          </AnchorPane>
-                                        <AnchorPane>
-                                             <children>
-                                                <ListView fx:id="metricListView" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
-                                             </children>
-                                          </AnchorPane>
-                                      </items>
-                                    </SplitPane>
-                                 </children>
-                              </AnchorPane>
-                          </items>
-                        </SplitPane>
-                     </children>
-                  </AnchorPane>
-              </items>
-            </SplitPane>
-         </children>
-    </AnchorPane>
-  </children>
-</VBox>