Browse Source

all the stuff

MW 7 years ago
parent
commit
2504fe110b
23 changed files with 270 additions and 181 deletions
  1. 5 4
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/debug/Debug.java
  2. 8 8
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/graphs/GraphHelper.java
  3. 12 55
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/graphs/GraphManager.java
  4. 3 9
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/graphs/MappingGraphManager.java
  5. 20 4
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/graphs/MyEdge.java
  6. 46 0
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/graphs/MyGraph.java
  7. 20 3
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/graphs/MyNode.java
  8. 77 66
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/io/MyFileSourceGraphML.java
  9. 19 0
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/io/MySourceBase.java
  10. 7 6
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/main/EdgeSelectionHelper.java
  11. 8 3
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/main/MainApp.java
  12. 2 1
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/ButtonManager.java
  13. 1 1
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/GUIController.java
  14. 5 5
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/GraphDisplayManager.java
  15. 1 1
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/MetricboxManager.java
  16. 1 1
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/PropertiesManager.java
  17. 1 1
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/StylesheetManager.java
  18. 10 8
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/css/CSSManager.java
  19. 4 2
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/css/CSSSelector.java
  20. 2 2
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/css/CSSable.java
  21. 6 0
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/handlers/MyMouseManager.java
  22. 7 0
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/mapView/CustomTile.java
  23. 5 1
      scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/mapView/CustomTileFactory.java

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

@@ -1,5 +1,6 @@
 package de.tu_darmstadt.informatik.tk.scopviz.debug;
 
+import javax.xml.stream.XMLStreamConstants;
 import javax.xml.stream.events.Attribute;
 import javax.xml.stream.events.XMLEvent;
 
@@ -95,7 +96,7 @@ public final class Debug {
 	 */
 	public static void out(String s, int severity) {
 		if (severity >= logLevel) {
-			if (DEBUG_ENABLED){
+			if (DEBUG_ENABLED) {
 				System.out.println(s);
 			}
 
@@ -128,13 +129,13 @@ public final class Debug {
 	public static void out(XMLEvent e) {
 		MyFileSourceGraphML t = new MyFileSourceGraphML();
 		switch (e.getEventType()) {
-		case XMLEvent.START_ELEMENT:
+		case XMLStreamConstants.START_ELEMENT:
 			Debug.out(t.gotWhat(e.getEventType(), e.asStartElement().getName().getLocalPart()));
 			break;
-		case XMLEvent.END_ELEMENT:
+		case XMLStreamConstants.END_ELEMENT:
 			Debug.out(t.gotWhat(e.getEventType(), e.asEndElement().getName().getLocalPart()));
 			break;
-		case XMLEvent.ATTRIBUTE:
+		case XMLStreamConstants.ATTRIBUTE:
 			Debug.out(t.gotWhat(e.getEventType(), ((Attribute) e).getName().getLocalPart()));
 			break;
 		default:

+ 8 - 8
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/graphs/GraphHelper.java

@@ -5,9 +5,10 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Random;
 
-import org.graphstream.algorithm.Toolkit;
 import org.graphstream.graph.Element;
+import org.graphstream.graph.Node;
 import org.graphstream.ui.geom.Point3;
+import org.graphstream.ui.graphicGraph.GraphPosLengthUtils;
 
 import de.tu_darmstadt.informatik.tk.scopviz.debug.Debug;
 import de.tu_darmstadt.informatik.tk.scopviz.main.Layer;
@@ -73,8 +74,7 @@ public class GraphHelper {
 					if (e.getAttribute("originalElement") == null) {
 						target.getEdge(newId).addAttribute("originalElement", source.getId().concat("+#" + e.getId()));
 					} else {
-						target.getEdge(newId).addAttribute("originalElement",
-								(Object) e.getAttribute("originalElement"));
+						target.getEdge(newId).addAttribute("originalElement", e.getAttribute("originalElement"));
 					}
 
 				} else {
@@ -82,7 +82,7 @@ public class GraphHelper {
 				}
 			}
 			for (String s : e.getAttributeKeySet()) {
-				target.getEdge(newId).addAttribute(s, (Object) e.getAttribute(s));
+				target.getEdge(newId).addAttribute(s, e.getAttribute(s));
 			}
 		}
 	}
@@ -103,14 +103,14 @@ public class GraphHelper {
 					if (n.getAttribute("originalElement") == null) {
 						target.getNode(newId).addAttribute("originalElement", source.getId().concat("+#" + n.getId()));
 					} else {
-						target.getNode(newId).addAttribute("originalElement",
-								(Object) n.getAttribute("originalElement"));
+						target.getNode(newId).addAttribute("originalElement", n.getAttribute("originalElement"));
 					}
 				} else {
 					newId = newId.concat(String.valueOf((char) (ran.nextInt(52) + 'a')));
 				}
 			}
 			for (String s : n.getAttributeKeySet()) {
+				Debug.out(s);
 				target.getNode(newId).addAttribute(s, (Object) n.getAttribute(s));
 			}
 		}
@@ -159,7 +159,7 @@ public class GraphHelper {
 		while (allNodes.hasNext()) {
 			n = allNodes.next();
 			if (n.hasAttribute("xyz")) {
-				coords = Toolkit.nodePointPosition(n);
+				coords = GraphPosLengthUtils.nodePointPosition(n);
 				n.setAttribute("x", coords.x);
 				propagateAttribute(g, n, "x", coords.x);
 				n.setAttribute("y", coords.y);
@@ -200,7 +200,7 @@ public class GraphHelper {
 	 *            the graph that the attributes will be added onto
 	 */
 	public static void setAllDefaults(MyGraph g) {
-		for (MyNode n : g.<MyNode>getNodeSet()) {
+		for (Node n : g.getNodeSet()) {
 			// general defaults
 			if (!n.hasAttribute("ui.label")) {
 				n.addAttribute("ui.label", "");

+ 12 - 55
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/graphs/GraphManager.java

@@ -15,7 +15,6 @@ import de.tu_darmstadt.informatik.tk.scopviz.main.Layer;
 import de.tu_darmstadt.informatik.tk.scopviz.main.Main;
 import de.tu_darmstadt.informatik.tk.scopviz.ui.GraphDisplayManager;
 import de.tu_darmstadt.informatik.tk.scopviz.ui.PropertiesManager;
-import de.tu_darmstadt.informatik.tk.scopviz.ui.StylesheetManager;
 import de.tu_darmstadt.informatik.tk.scopviz.ui.handlers.MyMouseManager;
 
 /**
@@ -37,12 +36,6 @@ public class GraphManager {
 
 	protected MyGraph activeSubGraph;
 
-	/**
-	 * The Stylesheet for this Graph, excluding parts that can be set by
-	 * NodeGraphics.
-	 */
-	protected String stylesheet = "";
-
 	/** The last Node that was deleted. */
 	protected MyNode deletedNode;
 	/** The last Edge that was deleted. */
@@ -241,12 +234,8 @@ public class GraphManager {
 			this.selectedNodeID = nodeID;
 
 			MyNode n = g.getNode(nodeID);
-			// set selected node color to red
-			if (!hasClass(n, UI_CLASS_PROCESSING_ENABLED)
-					|| !GraphDisplayManager.getCurrentLayer().equals(Layer.MAPPING)) {
-				n.changeAttribute("ui.style", "fill-color : #F00; size: 15px;");
-				PropertiesManager.setItemsProperties();
-			}
+			n.addCSSClass("selected");
+			PropertiesManager.setItemsProperties();
 		}
 	}
 
@@ -261,7 +250,7 @@ public class GraphManager {
 			deselect();
 			this.selectedEdgeID = edgeID;
 
-			addClass(edgeID, "selected");
+			g.<MyEdge>getEdge(edgeID).addCSSClass("selected");
 			PropertiesManager.setItemsProperties();
 		}
 	}
@@ -273,19 +262,13 @@ public class GraphManager {
 	protected void deselect() {
 		// Set last selected Edge Color to Black
 		if (getSelectedEdgeID() != null && g.getEdge(getSelectedEdgeID()) != null) {
-			removeClass(getSelectedEdgeID(), "selected");
+			g.<MyEdge>getEdge(getSelectedEdgeID()).removeCSSClass("selected");
 		}
 		// Set last selected Node color to black
 		else if (getSelectedNodeID() != null && g.getNode(getSelectedNodeID()) != null) {
-			MyNode n = g.getNode(getSelectedNodeID());
-			if (!hasClass(n, UI_CLASS_PROCESSING_ENABLED)
-					|| !GraphDisplayManager.getCurrentLayer().equals(Layer.MAPPING)) {
-				String nodeType = n.getAttribute("ui.class");
-				n.removeAttribute("ui.style");
-				n.changeAttribute("ui.style", "fill-color: #000000; size: 15px;");
-				n.changeAttribute("ui.class", nodeType.split("_")[0]);
-			}
+			g.<MyNode>getNode(getSelectedNodeID()).removeCSSClass("selected");
 		}
+		PropertiesManager.setItemsProperties();
 		this.selectedNodeID = null;
 		this.selectedEdgeID = null;
 	}
@@ -439,29 +422,11 @@ public class GraphManager {
 		return g.getMaxY();
 	}
 
-	/**
-	 * Returns the Stylesheet used by the Graph.
-	 * 
-	 * @return the Stylesheet in use
-	 */
-	public String getStylesheet() {
-		return stylesheet;
-	}
-
 	/**
 	 * Sets the Stylesheet to be used by the Graph.
-	 * 
-	 * @param stylesheet
-	 *            the new stylesheet to use
 	 */
-	public void setStylesheet(String stylesheet) {
-		this.stylesheet = stylesheet;
-		g.removeAttribute("ui.stylesheet");
-		String completeStylesheet = stylesheet;
-		completeStylesheet = completeStylesheet.concat(StylesheetManager.getNodeStylesheet());
-		completeStylesheet = completeStylesheet
-				.concat(StylesheetManager.getLayerStyle((Layer) g.getAttribute("layer")));
-		g.addAttribute("ui.stylesheet", completeStylesheet);
+	public void setStylesheet() {
+		g.addAttribute("ui.stylesheet", "edge{text-offset: 4px,-4px;}");
 	}
 
 	/**
@@ -472,7 +437,7 @@ public class GraphManager {
 	 *            the EdgeCreatedListener
 	 */
 	public void addEdgeCreatedListener(EdgeCreatedListener e) {
-		((MyGraph) g).addEdgeCreatedListener(e);
+		g.addEdgeCreatedListener(e);
 	}
 
 	/**
@@ -483,14 +448,7 @@ public class GraphManager {
 	 *            the NodeCreatedListener
 	 */
 	public void addNodeCreatedListener(NodeCreatedListener n) {
-		((MyGraph) g).addNodeCreatedListener(n);
-	}
-
-	/**
-	 * Updates the Stylesheet, causing any changes to it to come into effect.
-	 */
-	public void updateStylesheet() {
-		setStylesheet(this.stylesheet);
+		g.addNodeCreatedListener(n);
 	}
 
 	/**
@@ -570,7 +528,7 @@ public class GraphManager {
 		deselect();
 		MyNode n = getGraph().getNode(nodeID);
 		if (!hasClass(n, UI_CLASS_PROCESSING_ENABLED) || !GraphDisplayManager.getCurrentLayer().equals(Layer.MAPPING)) {
-			n.changeAttribute("ui.style", "fill-color:green; size: 15px;");
+			n.addCSSClass("selectedForEdgeCreation");
 		}
 		return true;
 	}
@@ -587,8 +545,7 @@ public class GraphManager {
 			return;
 		}
 		if (!hasClass(n, UI_CLASS_PROCESSING_ENABLED) || !GraphDisplayManager.getCurrentLayer().equals(Layer.MAPPING)) {
-			n.removeAttribute("ui.style");
-			n.changeAttribute("ui.style", "fill-color: #000000; size: 15px;");
+			n.removeCSSClass("selectedForEdgeCreation");
 		}
 	}
 

+ 3 - 9
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/graphs/MappingGraphManager.java

@@ -4,7 +4,7 @@ import java.util.Collection;
 import java.util.HashMap;
 import java.util.LinkedList;
 
-import org.graphstream.algorithm.Toolkit;
+import org.graphstream.ui.graphicGraph.GraphPosLengthUtils;
 
 import de.tu_darmstadt.informatik.tk.scopviz.debug.Debug;
 import de.tu_darmstadt.informatik.tk.scopviz.main.Main;
@@ -127,7 +127,6 @@ public class MappingGraphManager extends GraphManager implements EdgeCreatedList
 
 		for (MyEdge edge : gm.getGraph().<MyEdge>getEdgeSet()) {
 			addEdge(edge, idPrefix);
-
 			// Debug only
 			i++;
 		}
@@ -190,7 +189,7 @@ public class MappingGraphManager extends GraphManager implements EdgeCreatedList
 			}
 
 			// normalize coordinates
-			double[] n = Toolkit.nodePosition(node);
+			double[] n = GraphPosLengthUtils.nodePosition(node);
 			double cX = n[0];
 			double x = cX * scaleX + addX;
 			double cY = n[1];
@@ -289,6 +288,7 @@ public class MappingGraphManager extends GraphManager implements EdgeCreatedList
 
 		g.addNode(idPrefix + n.getId());
 		g.getNode(idPrefix + n.getId()).addAttributes(attributes);
+		g.<MyNode>getNode(idPrefix + n.getId()).addCSSClass("onMapping");
 	}
 
 	@Override
@@ -318,12 +318,6 @@ public class MappingGraphManager extends GraphManager implements EdgeCreatedList
 					if (hasClass(n, UI_CLASS_PROCESSING_ENABLED))
 						showExpectedCapacity(n, need);
 		}
-		// erstmal drin lassen, sollte von deselectNodesAfterEdgeCreation
-		// gehandelt werden
-		/*
-		 * else { for (Node n : g.getNodeSet()) if (hasClass(n,
-		 * UI_CLASS_PROCESSING_ENABLED)) showExpectedCapacity(n, 0); }
-		 */
 	}
 
 	@Override

+ 20 - 4
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/graphs/MyEdge.java

@@ -1,16 +1,17 @@
 package de.tu_darmstadt.informatik.tk.scopviz.graphs;
 
-import java.util.Set;
+import java.util.HashSet;
 
 import org.graphstream.graph.implementations.AbstractEdge;
 import org.graphstream.graph.implementations.AbstractNode;
 
+import de.tu_darmstadt.informatik.tk.scopviz.debug.Debug;
 import de.tu_darmstadt.informatik.tk.scopviz.ui.css.CSSManager;
 import de.tu_darmstadt.informatik.tk.scopviz.ui.css.CSSable;
 
 public class MyEdge extends AbstractEdge implements CSSable {
 	// TODO comment
-	Set<String> classes;
+	HashSet<String> classes;
 	// TODO comment
 	String type = "edge";
 	// TODO comment
@@ -18,17 +19,20 @@ public class MyEdge extends AbstractEdge implements CSSable {
 
 	public MyEdge(String id, AbstractNode source, AbstractNode target, boolean directed) {
 		super(id, source, target, directed);
-		// TODO Auto-generated constructor stub
+		updateCSS();
+		classes = new HashSet<String>();
 	}
 
 	@Override
 	public void addCSSClass(String c) {
 		classes.add(c);
+		updateCSS();
 	}
 
 	@Override
 	public void removeCSSClass(String c) {
 		classes.remove(c);
+		updateCSS();
 	}
 
 	@Override
@@ -45,7 +49,7 @@ public class MyEdge extends AbstractEdge implements CSSable {
 	}
 
 	@Override
-	public Set<String> getClasses() {
+	public HashSet<String> getClasses() {
 		return classes;
 	}
 
@@ -58,10 +62,22 @@ public class MyEdge extends AbstractEdge implements CSSable {
 	public void updateCSS() {
 		css = CSSManager.getCSS(this);
 		addAttribute("ui.style", css);
+		Debug.out(id + ": " + type + classes + "\n" + css);
 	}
 
 	@Override
 	public String getCSS() {
 		return css;
 	}
+
+	@Override
+	protected void attributeChanged(AttributeChangeEvent event, String attribute, Object oldValue, Object newValue) {
+		super.attributeChanged(event, attribute, oldValue, newValue);
+		if (attribute.equals("ui.class")) {
+			if (oldValue != null && oldValue instanceof String)
+				removeCSSClass((String) oldValue);
+			if (newValue != null && newValue instanceof String)
+				addCSSClass((String) newValue);
+		}
+	}
 }

+ 46 - 0
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/graphs/MyGraph.java

@@ -4,7 +4,12 @@ import java.util.Iterator;
 import java.util.LinkedList;
 
 import org.graphstream.graph.Edge;
+import org.graphstream.graph.EdgeFactory;
+import org.graphstream.graph.Graph;
 import org.graphstream.graph.Node;
+import org.graphstream.graph.NodeFactory;
+import org.graphstream.graph.implementations.AbstractGraph;
+import org.graphstream.graph.implementations.AbstractNode;
 import org.graphstream.graph.implementations.SingleGraph;
 
 import de.tu_darmstadt.informatik.tk.scopviz.debug.Debug;
@@ -12,6 +17,7 @@ import de.tu_darmstadt.informatik.tk.scopviz.main.Layer;
 import de.tu_darmstadt.informatik.tk.scopviz.main.Main;
 import de.tu_darmstadt.informatik.tk.scopviz.ui.OptionsManager;
 import de.tu_darmstadt.informatik.tk.scopviz.ui.ToolboxManager;
+import de.tu_darmstadt.informatik.tk.scopviz.ui.css.CSSManager;
 
 /**
  * Our own Class to extend GraphStreams Graph with our own Functionality.
@@ -39,6 +45,7 @@ public class MyGraph extends SingleGraph {
 	 */
 	public MyGraph(final String id) {
 		super(id);
+		setMyFactory();
 	}
 
 	/**
@@ -55,6 +62,7 @@ public class MyGraph extends SingleGraph {
 	 */
 	public MyGraph(final String id, final boolean strictChecking, final boolean autoCreate) {
 		super(id, strictChecking, autoCreate);
+		setMyFactory();
 	}
 
 	/**
@@ -82,6 +90,25 @@ public class MyGraph extends SingleGraph {
 	public MyGraph(final String id, final boolean strictChecking, final boolean autoCreate,
 			final int initialNodeCapacity, final int initialEdgeCapacity) {
 		super(id, strictChecking, autoCreate, initialNodeCapacity, initialEdgeCapacity);
+		setMyFactory();
+	}
+
+	/**
+	 * sets Factories to MyNode and MyEdge
+	 */
+	private void setMyFactory() {
+		setNodeFactory(new NodeFactory<MyNode>() {
+			@Override
+			public MyNode newInstance(String id, Graph graph) {
+				return new MyNode((AbstractGraph) graph, id);
+			}
+		});
+		setEdgeFactory(new EdgeFactory<MyEdge>() {
+			@Override
+			public MyEdge newInstance(String id, Node src, Node dst, boolean directed) {
+				return new MyEdge(id, (AbstractNode) src, (AbstractNode) dst, directed);
+			}
+		});
 	}
 
 	/**
@@ -144,6 +171,8 @@ public class MyGraph extends SingleGraph {
 	@Override
 	public <T extends Edge> T addEdge(String id, int index1, int index2) {
 		T e = super.addEdge(id, index1, index2);
+		if (e instanceof MyEdge)
+			CSSManager.addCSSAble((MyEdge) e);
 		edgeCreatedNotify(e);
 		return e;
 	}
@@ -154,6 +183,8 @@ public class MyGraph extends SingleGraph {
 	@Override
 	public <T extends Edge> T addEdge(String id, Node node1, Node node2) {
 		T e = super.addEdge(id, node1, node2);
+		if (e instanceof MyEdge)
+			CSSManager.addCSSAble((MyEdge) e);
 		edgeCreatedNotify(e);
 		return e;
 	}
@@ -164,6 +195,8 @@ public class MyGraph extends SingleGraph {
 	@Override
 	public <T extends Edge> T addEdge(String id, String node1, String node2) {
 		T e = super.addEdge(id, node1, node2);
+		if (e instanceof MyEdge)
+			CSSManager.addCSSAble((MyEdge) e);
 		edgeCreatedNotify(e);
 		return e;
 	}
@@ -174,6 +207,8 @@ public class MyGraph extends SingleGraph {
 	@Override
 	public <T extends Edge> T addEdge(String id, int fromIndex, int toIndex, boolean directed) {
 		T e = super.addEdge(id, fromIndex, toIndex, directed);
+		if (e instanceof MyEdge)
+			CSSManager.addCSSAble((MyEdge) e);
 		edgeCreatedNotify(e);
 		return e;
 	}
@@ -184,6 +219,8 @@ public class MyGraph extends SingleGraph {
 	@Override
 	public <T extends Edge> T addEdge(String id, Node from, Node to, boolean directed) {
 		T e = super.addEdge(id, from, to, directed);
+		if (e instanceof MyEdge)
+			CSSManager.addCSSAble((MyEdge) e);
 		edgeCreatedNotify(e);
 		return e;
 	}
@@ -194,6 +231,8 @@ public class MyGraph extends SingleGraph {
 	@Override
 	public <T extends Edge> T addEdge(String id, String from, String to, boolean directed) {
 		T e = super.addEdge(id, from, to, directed);
+		if (e instanceof MyEdge)
+			CSSManager.addCSSAble((MyEdge) e);
 		edgeCreatedNotify(e);
 		return e;
 	}
@@ -204,10 +243,17 @@ public class MyGraph extends SingleGraph {
 	@Override
 	public <T extends Node> T addNode(String id) {
 		T n = super.addNode(id);
+		if (n instanceof MyNode)
+			CSSManager.addCSSAble((MyNode) n);
 		nodeCreatedNotify(n);
 		return n;
 	}
 
+	@Override
+	public void nodeAdded(String sourceId, long timeId, String nodeId) {
+		super.nodeAdded(sourceId, timeId, nodeId);
+	}
+
 	/**
 	 * Returns the smallest X Coordinate of any Node in the Graph.
 	 * 

+ 20 - 3
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/graphs/MyNode.java

@@ -1,16 +1,17 @@
 package de.tu_darmstadt.informatik.tk.scopviz.graphs;
 
-import java.util.Set;
+import java.util.HashSet;
 
 import org.graphstream.graph.implementations.AbstractGraph;
 import org.graphstream.graph.implementations.SingleNode;
 
+import de.tu_darmstadt.informatik.tk.scopviz.debug.Debug;
 import de.tu_darmstadt.informatik.tk.scopviz.ui.css.CSSManager;
 import de.tu_darmstadt.informatik.tk.scopviz.ui.css.CSSable;
 
 public class MyNode extends SingleNode implements CSSable {
 	// TODO comment
-	Set<String> classes;
+	HashSet<String> classes;
 	// TODO comment
 	String type = "node";
 	// TODO comment
@@ -19,16 +20,19 @@ public class MyNode extends SingleNode implements CSSable {
 	public MyNode(AbstractGraph graph, String id) {
 		super(graph, id);
 		updateCSS();
+		classes = new HashSet<String>();
 	}
 
 	@Override
 	public void addCSSClass(String c) {
 		classes.add(c);
+		updateCSS();
 	}
 
 	@Override
 	public void removeCSSClass(String c) {
 		classes.remove(c);
+		updateCSS();
 	}
 
 	@Override
@@ -45,7 +49,7 @@ public class MyNode extends SingleNode implements CSSable {
 	}
 
 	@Override
-	public Set<String> getClasses() {
+	public HashSet<String> getClasses() {
 		return classes;
 	}
 
@@ -58,10 +62,23 @@ public class MyNode extends SingleNode implements CSSable {
 	public void updateCSS() {
 		css = CSSManager.getCSS(this);
 		addAttribute("ui.style", css);
+		Debug.out(id + ": " + type + classes + "\n" + css);
 	}
 
 	@Override
 	public String getCSS() {
 		return css;
 	}
+
+	@Override
+	protected void attributeChanged(AttributeChangeEvent event, String attribute, Object oldValue, Object newValue) {
+		super.attributeChanged(event, attribute, oldValue, newValue);
+		if (attribute.equals("ui.class")) {
+			if (oldValue != null && oldValue instanceof String)
+				removeCSSClass((String) oldValue);
+			if (newValue != null && newValue instanceof String)
+				addCSSClass((String) newValue);
+		}
+	}
+
 }

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

@@ -266,6 +266,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 	 * 
 	 * @see org.graphstream.stream.file.FileSource#readAll(java.lang.String)
 	 */
+	@Override
 	public void readAll(String fileName) throws IOException {
 		readAll(new FileReader(fileName));
 	}
@@ -275,6 +276,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 	 * 
 	 * @see org.graphstream.stream.file.FileSource#readAll(java.net.URL)
 	 */
+	@Override
 	public void readAll(URL url) throws IOException {
 		readAll(url.openStream());
 	}
@@ -284,6 +286,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 	 * 
 	 * @see org.graphstream.stream.file.FileSource#readAll(java.io.InputStream)
 	 */
+	@Override
 	public void readAll(InputStream stream) throws IOException {
 		readAll(new InputStreamReader(stream));
 	}
@@ -293,6 +296,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 	 * 
 	 * @see org.graphstream.stream.file.FileSource#readAll(java.io.Reader)
 	 */
+	@Override
 	public void readAll(Reader reader) throws IOException {
 		begin(reader);
 		while (nextEvents())
@@ -305,6 +309,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 	 * 
 	 * @see org.graphstream.stream.file.FileSource#begin(java.lang.String)
 	 */
+	@Override
 	public void begin(String fileName) throws IOException {
 		begin(new FileReader(fileName));
 	}
@@ -314,6 +319,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 	 * 
 	 * @see org.graphstream.stream.file.FileSource#begin(java.net.URL)
 	 */
+	@Override
 	public void begin(URL url) throws IOException {
 		begin(url.openStream());
 	}
@@ -323,6 +329,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 	 * 
 	 * @see org.graphstream.stream.file.FileSource#begin(java.io.InputStream)
 	 */
+	@Override
 	public void begin(InputStream stream) throws IOException {
 		begin(new InputStreamReader(stream));
 	}
@@ -332,6 +339,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 	 * 
 	 * @see org.graphstream.stream.file.FileSource#begin(java.io.Reader)
 	 */
+	@Override
 	public void begin(Reader reader) throws IOException {
 		openStream(reader);
 	}
@@ -341,6 +349,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 	 * 
 	 * @see org.graphstream.stream.file.FileSource#nextEvents()
 	 */
+	@Override
 	public boolean nextEvents() throws IOException {
 		try {
 			__graphml();
@@ -356,6 +365,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 	 * 
 	 * @see org.graphstream.stream.file.FileSource#nextStep()
 	 */
+	@Override
 	public boolean nextStep() throws IOException {
 		return nextEvents();
 	}
@@ -365,6 +375,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 	 * 
 	 * @see org.graphstream.stream.file.FileSource#end()
 	 */
+	@Override
 	public void end() throws IOException {
 		closeStream();
 	}
@@ -377,7 +388,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 		else {
 			temp = reader.nextEvent();
 		}
-		if (temp.getEventType() == XMLEvent.COMMENT) {
+		if (temp.getEventType() == XMLStreamConstants.COMMENT) {
 			temp = getNextEvent();
 		}
 		return temp;
@@ -538,7 +549,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 				e = events.pop();
 			else
 				e = reader.nextEvent();
-		} while (isEvent(e, XMLEvent.CHARACTERS, null) && e.asCharacters().getData().matches("^\\s*$"));
+		} while (isEvent(e, XMLStreamConstants.CHARACTERS, null) && e.asCharacters().getData().matches("^\\s*$"));
 
 		pushback(e);
 	}
@@ -553,7 +564,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 			reader = XMLInputFactory.newInstance().createXMLEventReader(stream);
 
 			e = getNextEvent();
-			checkValid(e, XMLEvent.START_DOCUMENT, null);
+			checkValid(e, XMLStreamConstants.START_DOCUMENT, null);
 
 		} catch (XMLStreamException e) {
 			throw new IOException(e);
@@ -596,13 +607,13 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 
 			switch (currentReaderState) {
 			case START:
-				checkValid(e, XMLEvent.START_ELEMENT, "graphml");
+				checkValid(e, XMLStreamConstants.START_ELEMENT, "graphml");
 				currentReaderState = ReaderState.DESC;
 				e = getNextEvent();
 
 				break;
 			case DESC:
-				if (isEvent(e, XMLEvent.START_ELEMENT, "desc")) {
+				if (isEvent(e, XMLStreamConstants.START_ELEMENT, "desc")) {
 					pushback(e);
 					__desc();
 					e = getNextEvent();
@@ -612,7 +623,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 
 				break;
 			case KEYS:
-				if (isEvent(e, XMLEvent.START_ELEMENT, "key")) {
+				if (isEvent(e, XMLStreamConstants.START_ELEMENT, "key")) {
 					pushback(e);
 					__key();
 					e = getNextEvent();
@@ -621,18 +632,18 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 				}
 				break;
 			case NEW_GRAPH:
-				if (isEvent(e, XMLEvent.START_ELEMENT, "graph")) {
+				if (isEvent(e, XMLStreamConstants.START_ELEMENT, "graph")) {
 					newSubGraph();
 					pushback(e);
 					__graph();
 					e = getNextEvent();
 				}
 
-				if (isEvent(e, XMLEvent.START_ELEMENT, "node") || isEvent(e, XMLEvent.START_ELEMENT, "edge")) {
+				if (isEvent(e, XMLStreamConstants.START_ELEMENT, "node") || isEvent(e, XMLStreamConstants.START_ELEMENT, "edge")) {
 					currentReaderState = ReaderState.NODES_EDGES;
-				} else if (isEvent(e, XMLEvent.END_ELEMENT, "graph")) {
+				} else if (isEvent(e, XMLStreamConstants.END_ELEMENT, "graph")) {
 					currentReaderState = ReaderState.GRAPH_END;
-				} else if (isEvent(e, XMLEvent.START_ELEMENT, "data")) {
+				} else if (isEvent(e, XMLStreamConstants.START_ELEMENT, "data")) {
 					pushback(e);
 					Data data = __data();
 					sendGraphAttributeAdded(sourceId, data.key.name, data.value);
@@ -645,22 +656,22 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 			case NODES_EDGES:
 				pushback(e);
 
-				if (isEvent(e, XMLEvent.START_ELEMENT, "node")) {
+				if (isEvent(e, XMLStreamConstants.START_ELEMENT, "node")) {
 					__node();
 					e = getNextEvent();
-				} else if (isEvent(e, XMLEvent.START_ELEMENT, "edge")) {
+				} else if (isEvent(e, XMLStreamConstants.START_ELEMENT, "edge")) {
 					__edge(edgeDefault);
 					e = getNextEvent();
-				} else if (isEvent(e, XMLEvent.END_ELEMENT, "graph")) {
+				} else if (isEvent(e, XMLStreamConstants.END_ELEMENT, "graph")) {
 					currentReaderState = ReaderState.GRAPH_END;
 					e = getNextEvent();
-				} else if (isEvent(e, XMLEvent.END_ELEMENT, "graphml")) {
+				} else if (isEvent(e, XMLStreamConstants.END_ELEMENT, "graphml")) {
 					currentReaderState = ReaderState.END;
 					e = getNextEvent();
-				} else if (isEvent(e, XMLEvent.START_ELEMENT, "data")) {
+				} else if (isEvent(e, XMLStreamConstants.START_ELEMENT, "data")) {
 					datas.add(__data());
 					e = getNextEvent();
-				} else if (isEvent(e, XMLEvent.START_ELEMENT, "hyperedge")) {
+				} else if (isEvent(e, XMLStreamConstants.START_ELEMENT, "hyperedge")) {
 					__hyperedge();
 					e = getNextEvent();
 				} else {
@@ -673,16 +684,16 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 					e = getNextEvent();
 					subGraphFinished();
 				}
-				if (isEvent(e, XMLEvent.START_ELEMENT, "graph")) {
+				if (isEvent(e, XMLStreamConstants.START_ELEMENT, "graph")) {
 					currentReaderState = ReaderState.NEW_GRAPH;
-				} else if (isEvent(e, XMLEvent.END_ELEMENT, "graphml")) {
+				} else if (isEvent(e, XMLStreamConstants.END_ELEMENT, "graphml")) {
 					currentReaderState = ReaderState.END;
-				} else if (isEvent(e, XMLEvent.START_ELEMENT, "key")) {
+				} else if (isEvent(e, XMLStreamConstants.START_ELEMENT, "key")) {
 					currentReaderState = ReaderState.KEYS;
 
-				} else if (isEvent(e, XMLEvent.START_ELEMENT, "node") || isEvent(e, XMLEvent.START_ELEMENT, "edge")) {
+				} else if (isEvent(e, XMLStreamConstants.START_ELEMENT, "node") || isEvent(e, XMLStreamConstants.START_ELEMENT, "edge")) {
 					currentReaderState = ReaderState.NODES_EDGES;
-				} else if (isEvent(e, XMLEvent.START_ELEMENT, "data")) {
+				} else if (isEvent(e, XMLStreamConstants.START_ELEMENT, "data")) {
 					// ignore <data>
 					pushback(e);
 					__data();
@@ -705,7 +716,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 
 		e = getNextEvent();
 
-		while (e.getEventType() == XMLEvent.CHARACTERS) {
+		while (e.getEventType() == XMLStreamConstants.CHARACTERS) {
 			buffer.append(e.asCharacters());
 			e = getNextEvent();
 		}
@@ -729,12 +740,12 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 		String desc;
 
 		e = getNextEvent();
-		checkValid(e, XMLEvent.START_ELEMENT, "desc");
+		checkValid(e, XMLStreamConstants.START_ELEMENT, "desc");
 
 		desc = __characters();
 
 		e = getNextEvent();
-		checkValid(e, XMLEvent.END_ELEMENT, "desc");
+		checkValid(e, XMLStreamConstants.END_ELEMENT, "desc");
 
 		return desc;
 	}
@@ -757,7 +768,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 		XMLEvent e;
 
 		e = getNextEvent();
-		checkValid(e, XMLEvent.START_ELEMENT, "locator");
+		checkValid(e, XMLStreamConstants.START_ELEMENT, "locator");
 
 		@SuppressWarnings("unchecked")
 		Iterator<? extends Attribute> attributes = e.asStartElement().getAttributes();
@@ -787,7 +798,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 		}
 
 		e = getNextEvent();
-		checkValid(e, XMLEvent.END_ELEMENT, "locator");
+		checkValid(e, XMLStreamConstants.END_ELEMENT, "locator");
 
 		if (loc.href == null)
 			throw newParseError(e, "locator requires an href");
@@ -811,7 +822,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 		XMLEvent e;
 
 		e = getNextEvent();
-		checkValid(e, XMLEvent.START_ELEMENT, "key");
+		checkValid(e, XMLStreamConstants.START_ELEMENT, "key");
 
 		@SuppressWarnings("unchecked")
 		Iterator<? extends Attribute> attributes = e.asStartElement().getAttributes();
@@ -864,16 +875,16 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 
 		e = getNextEvent();
 
-		if (isEvent(e, XMLEvent.START_ELEMENT, "default")) {
+		if (isEvent(e, XMLStreamConstants.START_ELEMENT, "default")) {
 			def = __characters();
 
 			e = getNextEvent();
-			checkValid(e, XMLEvent.END_ELEMENT, "default");
+			checkValid(e, XMLStreamConstants.END_ELEMENT, "default");
 
 			e = getNextEvent();
 		}
 
-		checkValid(e, XMLEvent.END_ELEMENT, "key");
+		checkValid(e, XMLStreamConstants.END_ELEMENT, "key");
 
 		if (id == null)
 			throw newParseError(e, "key requires an id");
@@ -907,7 +918,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 		XMLEvent e;
 
 		e = getNextEvent();
-		checkValid(e, XMLEvent.START_ELEMENT, "port");
+		checkValid(e, XMLStreamConstants.START_ELEMENT, "port");
 
 		Port port = new Port();
 		@SuppressWarnings("unchecked")
@@ -932,12 +943,12 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 			throw newParseError(e, "'<port>' element requires a 'name' attribute");
 
 		e = getNextEvent();
-		if (isEvent(e, XMLEvent.START_ELEMENT, "desc")) {
+		if (isEvent(e, XMLStreamConstants.START_ELEMENT, "desc")) {
 			pushback(e);
 			port.desc = __desc();
 		} else {
-			while (isEvent(e, XMLEvent.START_ELEMENT, "data") || isEvent(e, XMLEvent.START_ELEMENT, "port")) {
-				if (isEvent(e, XMLEvent.START_ELEMENT, "data")) {
+			while (isEvent(e, XMLStreamConstants.START_ELEMENT, "data") || isEvent(e, XMLStreamConstants.START_ELEMENT, "port")) {
+				if (isEvent(e, XMLStreamConstants.START_ELEMENT, "data")) {
 					Data data;
 
 					pushback(e);
@@ -958,7 +969,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 		}
 
 		e = getNextEvent();
-		checkValid(e, XMLEvent.END_ELEMENT, "port");
+		checkValid(e, XMLStreamConstants.END_ELEMENT, "port");
 
 		return port;
 	}
@@ -982,7 +993,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 		XMLEvent e;
 
 		e = getNextEvent();
-		checkValid(e, XMLEvent.START_ELEMENT, "endpoint");
+		checkValid(e, XMLStreamConstants.START_ELEMENT, "endpoint");
 
 		@SuppressWarnings("unchecked")
 		Iterator<? extends Attribute> attributes = e.asStartElement().getAttributes();
@@ -1023,13 +1034,13 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 
 		e = getNextEvent();
 
-		if (isEvent(e, XMLEvent.START_ELEMENT, "desc")) {
+		if (isEvent(e, XMLStreamConstants.START_ELEMENT, "desc")) {
 			pushback(e);
 			ep.desc = __desc();
 		}
 
 		e = getNextEvent();
-		checkValid(e, XMLEvent.END_ELEMENT, "endpoint");
+		checkValid(e, XMLStreamConstants.END_ELEMENT, "endpoint");
 
 		return ep;
 	}
@@ -1052,7 +1063,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 		StringBuilder buffer = new StringBuilder();
 
 		e = getNextEvent();
-		checkValid(e, XMLEvent.START_ELEMENT, "data");
+		checkValid(e, XMLStreamConstants.START_ELEMENT, "data");
 
 		@SuppressWarnings("unchecked")
 		Iterator<? extends Attribute> attributes = e.asStartElement().getAttributes();
@@ -1081,7 +1092,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 			throw newParseError(e, "'<data>' element must have a 'key' attribute");
 
 		e = getNextEvent();
-		while (e.getEventType() == XMLEvent.CHARACTERS) {
+		while (e.getEventType() == XMLStreamConstants.CHARACTERS) {
 			buffer.append(e.asCharacters());
 			e = getNextEvent();
 		}
@@ -1091,7 +1102,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 			parseYed();
 			e = getNextEvent();
 		}
-		checkValid(e, XMLEvent.END_ELEMENT, "data");
+		checkValid(e, XMLStreamConstants.END_ELEMENT, "data");
 
 		if (keys.containsKey(key))
 			newParseError(e, "unknown key '%s'", key);
@@ -1216,7 +1227,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 	private void __graph() throws IOException, XMLStreamException {
 		XMLEvent e;
 		e = getNextEvent();
-		checkValid(e, XMLEvent.START_ELEMENT, "graph");
+		checkValid(e, XMLStreamConstants.START_ELEMENT, "graph");
 
 		@SuppressWarnings("unchecked")
 		Iterator<? extends Attribute> attributes = e.asStartElement().getAttributes();
@@ -1269,7 +1280,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 
 		e = getNextEvent();
 
-		if (isEvent(e, XMLEvent.START_ELEMENT, "desc")) {
+		if (isEvent(e, XMLStreamConstants.START_ELEMENT, "desc")) {
 			pushback(e);
 			desc = __desc();
 
@@ -1278,7 +1289,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 			e = getNextEvent();
 		}
 
-		if (isEvent(e, XMLEvent.START_ELEMENT, "locator")) {
+		if (isEvent(e, XMLStreamConstants.START_ELEMENT, "locator")) {
 			pushback(e);
 			__locator();
 			e = getNextEvent();
@@ -1302,7 +1313,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 		XMLEvent e;
 
 		e = getNextEvent();
-		checkValid(e, XMLEvent.START_ELEMENT, "node");
+		checkValid(e, XMLStreamConstants.START_ELEMENT, "node");
 
 		@SuppressWarnings("unchecked")
 		Iterator<? extends Attribute> attributes = e.asStartElement().getAttributes();
@@ -1332,23 +1343,23 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 
 		e = getNextEvent();
 
-		if (isEvent(e, XMLEvent.START_ELEMENT, "desc")) {
+		if (isEvent(e, XMLStreamConstants.START_ELEMENT, "desc")) {
 			String desc;
 
 			pushback(e);
 			desc = __desc();
 
 			sendNodeAttributeAdded(sourceId, id, "desc", desc);
-		} else if (isEvent(e, XMLEvent.START_ELEMENT, "locator")) {
+		} else if (isEvent(e, XMLStreamConstants.START_ELEMENT, "locator")) {
 			pushback(e);
 			__locator();
 		} else {
 			Data data;
-			while (isEvent(e, XMLEvent.START_ELEMENT, "data") || isEvent(e, XMLEvent.START_ELEMENT, "port")
+			while (isEvent(e, XMLStreamConstants.START_ELEMENT, "data") || isEvent(e, XMLStreamConstants.START_ELEMENT, "port")
 					|| (e.isStartElement() && e.asStartElement().getName().getPrefix() == "y")
 					|| isEvent(e, END_ELEMENT, "data")) {
 				// Yed parsing
-				if (e.getEventType() == XMLEvent.START_ELEMENT && e.asStartElement().getName().getPrefix() == "y") {
+				if (e.getEventType() == XMLStreamConstants.START_ELEMENT && e.asStartElement().getName().getPrefix() == "y") {
 					pushback(e);
 					data = parseYed();
 					if (data != null) {
@@ -1360,9 +1371,9 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 						sentAttributes.add(data.key);
 					}
 				} else if (isEvent(e, END_ELEMENT, "data")) {
-				} else if (isEvent(e, XMLEvent.START_ELEMENT, "data")) {
+				} else if (isEvent(e, XMLStreamConstants.START_ELEMENT, "data")) {
 					XMLEvent yEd = getNextEvent();
-					if (yEd.getEventType() == XMLEvent.START_ELEMENT
+					if (yEd.getEventType() == XMLStreamConstants.START_ELEMENT
 							&& yEd.asStartElement().getName().getPrefix() == "y") {
 						pushback(yEd);
 						data = parseYed();
@@ -1391,7 +1402,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 			}
 		}
 
-		if (isEvent(e, XMLEvent.START_ELEMENT, "graph")) {
+		if (isEvent(e, XMLStreamConstants.START_ELEMENT, "graph")) {
 			Location loc = e.getLocation();
 
 			Debug.out(String.format("[WARNING] %d:%d graph inside node is not implemented", loc.getLineNumber(),
@@ -1403,7 +1414,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 			e = getNextEvent();
 		}
 
-		checkValid(e, XMLEvent.END_ELEMENT, "node");
+		checkValid(e, XMLStreamConstants.END_ELEMENT, "node");
 	}
 
 	/**
@@ -1427,7 +1438,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 		XMLEvent e;
 
 		e = getNextEvent();
-		checkValid(e, XMLEvent.START_ELEMENT, "edge");
+		checkValid(e, XMLStreamConstants.START_ELEMENT, "edge");
 
 		@SuppressWarnings("unchecked")
 		Iterator<? extends Attribute> attributes = e.asStartElement().getAttributes();
@@ -1476,7 +1487,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 
 		e = getNextEvent();
 
-		if (isEvent(e, XMLEvent.START_ELEMENT, "desc")) {
+		if (isEvent(e, XMLStreamConstants.START_ELEMENT, "desc")) {
 			String desc;
 
 			pushback(e);
@@ -1486,11 +1497,11 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 		} else {
 			Data data;
 			// parsing yed and graphstream attribute data
-			while (isEvent(e, XMLEvent.START_ELEMENT, "data")
+			while (isEvent(e, XMLStreamConstants.START_ELEMENT, "data")
 					|| (e.isStartElement() && e.asStartElement().getName().getPrefix() == "y")
 					|| isEvent(e, END_ELEMENT, "data")) {
 				// Yed parsing
-				if (e.getEventType() == XMLEvent.START_ELEMENT && e.asStartElement().getName().getPrefix() == "y") {
+				if (e.getEventType() == XMLStreamConstants.START_ELEMENT && e.asStartElement().getName().getPrefix() == "y") {
 					pushback(e);
 					data = parseYed();
 					if (data != null) {
@@ -1506,7 +1517,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 				} else {
 					XMLEvent yEd = getNextEvent();
 					// parsing a <y: > after <data>
-					if (yEd.getEventType() == XMLEvent.START_ELEMENT
+					if (yEd.getEventType() == XMLStreamConstants.START_ELEMENT
 							&& yEd.asStartElement().getName().getPrefix() == "y") {
 						pushback(yEd);
 						data = parseYed();
@@ -1539,7 +1550,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 				sendEdgeAttributeAdded(sourceId, id, k.name, getDefaultValue(k));
 		}
 
-		if (isEvent(e, XMLEvent.START_ELEMENT, "graph")) {
+		if (isEvent(e, XMLStreamConstants.START_ELEMENT, "graph")) {
 			Location loc = e.getLocation();
 
 			System.err.printf("[WARNING] %d:%d graph inside node is not implemented", loc.getLineNumber(),
@@ -1551,7 +1562,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 			e = getNextEvent();
 		}
 
-		checkValid(e, XMLEvent.END_ELEMENT, "edge");
+		checkValid(e, XMLStreamConstants.END_ELEMENT, "edge");
 	}
 
 	/**
@@ -1569,7 +1580,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 		XMLEvent e;
 
 		e = getNextEvent();
-		checkValid(e, XMLEvent.START_ELEMENT, "hyperedge");
+		checkValid(e, XMLStreamConstants.START_ELEMENT, "hyperedge");
 
 		Location loc = e.getLocation();
 
@@ -1602,12 +1613,12 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 
 		e = getNextEvent();
 
-		if (isEvent(e, XMLEvent.START_ELEMENT, "desc")) {
+		if (isEvent(e, XMLStreamConstants.START_ELEMENT, "desc")) {
 			pushback(e);
 			__desc();
 		} else {
-			while (isEvent(e, XMLEvent.START_ELEMENT, "data") || isEvent(e, XMLEvent.START_ELEMENT, "endpoint")) {
-				if (isEvent(e, XMLEvent.START_ELEMENT, "data")) {
+			while (isEvent(e, XMLStreamConstants.START_ELEMENT, "data") || isEvent(e, XMLStreamConstants.START_ELEMENT, "endpoint")) {
+				if (isEvent(e, XMLStreamConstants.START_ELEMENT, "data")) {
 					pushback(e);
 					__data();
 				} else {
@@ -1619,7 +1630,7 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 			}
 		}
 
-		if (isEvent(e, XMLEvent.START_ELEMENT, "graph")) {
+		if (isEvent(e, XMLStreamConstants.START_ELEMENT, "graph")) {
 			loc = e.getLocation();
 
 			System.err.printf("[WARNING] %d:%d graph inside node is not implemented", loc.getLineNumber(),
@@ -1632,6 +1643,6 @@ public class MyFileSourceGraphML extends MySourceBase implements FileSource, XML
 		}
 
 		e = getNextEvent();
-		checkValid(e, XMLEvent.END_ELEMENT, "hyperedge");
+		checkValid(e, XMLStreamConstants.END_ELEMENT, "hyperedge");
 	}
 }

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

@@ -188,6 +188,7 @@ public class MySourceBase implements Source {
 
 	// Command
 
+	@Override
 	public void addSink(Sink sink) {
 		multiGraph = false;
 		originalSink = sink;
@@ -212,6 +213,7 @@ public class MySourceBase implements Source {
 		addElementSink(sink);
 	}
 
+	@Override
 	public void addAttributeSink(AttributeSink sink) {
 		if (!eventProcessing) {
 			eventProcessing = true;
@@ -226,6 +228,7 @@ public class MySourceBase implements Source {
 		}
 	}
 
+	@Override
 	public void addElementSink(ElementSink sink) {
 		if (!eventProcessing) {
 			eventProcessing = true;
@@ -240,11 +243,13 @@ public class MySourceBase implements Source {
 		}
 	}
 
+	@Override
 	public void clearSinks() {
 		clearElementSinks();
 		clearAttributeSinks();
 	}
 
+	@Override
 	public void clearElementSinks() {
 		if (!eventProcessing) {
 			eventProcessing = true;
@@ -259,6 +264,7 @@ public class MySourceBase implements Source {
 		}
 	}
 
+	@Override
 	public void clearAttributeSinks() {
 		if (!eventProcessing) {
 			eventProcessing = true;
@@ -273,11 +279,13 @@ public class MySourceBase implements Source {
 		}
 	}
 
+	@Override
 	public void removeSink(Sink sink) {
 		removeAttributeSink(sink);
 		removeElementSink(sink);
 	}
 
+	@Override
 	public void removeAttributeSink(AttributeSink sink) {
 		if (!eventProcessing) {
 			eventProcessing = true;
@@ -292,6 +300,7 @@ public class MySourceBase implements Source {
 		}
 	}
 
+	@Override
 	public void removeElementSink(ElementSink sink) {
 		if (!eventProcessing) {
 			eventProcessing = true;
@@ -994,6 +1003,7 @@ public class MySourceBase implements Source {
 			this.directed = directed;
 		}
 
+		@Override
 		void trigger() {
 			for (int i = 0; i < eltsSinks.size(); i++)
 				eltsSinks.get(i).edgeAdded(sourceId, timeId, edgeId, fromNodeId, toNodeId, directed);
@@ -1008,6 +1018,7 @@ public class MySourceBase implements Source {
 			this.edgeId = edgeId;
 		}
 
+		@Override
 		void trigger() {
 			for (int i = 0; i < eltsSinks.size(); i++)
 				eltsSinks.get(i).edgeRemoved(sourceId, timeId, edgeId);
@@ -1022,6 +1033,7 @@ public class MySourceBase implements Source {
 			this.nodeId = nodeId;
 		}
 
+		@Override
 		void trigger() {
 			for (int i = 0; i < eltsSinks.size(); i++)
 				eltsSinks.get(i).nodeAdded(sourceId, timeId, nodeId);
@@ -1036,6 +1048,7 @@ public class MySourceBase implements Source {
 			this.nodeId = nodeId;
 		}
 
+		@Override
 		void trigger() {
 			for (int i = 0; i < eltsSinks.size(); i++)
 				eltsSinks.get(i).nodeRemoved(sourceId, timeId, nodeId);
@@ -1047,6 +1060,7 @@ public class MySourceBase implements Source {
 			super(sourceId, timeId);
 		}
 
+		@Override
 		void trigger() {
 			for (int i = 0; i < eltsSinks.size(); i++)
 				eltsSinks.get(i).graphCleared(sourceId, timeId);
@@ -1061,6 +1075,7 @@ public class MySourceBase implements Source {
 			this.step = step;
 		}
 
+		@Override
 		void trigger() {
 			for (int i = 0; i < eltsSinks.size(); i++)
 				eltsSinks.get(i).stepBegins(sourceId, timeId, step);
@@ -1091,6 +1106,7 @@ public class MySourceBase implements Source {
 			this.newValue = newValue;
 		}
 
+		@Override
 		void trigger() {
 			switch (event) {
 			case ADD:
@@ -1151,6 +1167,7 @@ public class MySourceBase implements Source {
 			this.obj = obj;
 		}
 
+		@Override
 		void trigger() {
 			l.add(obj);
 		}
@@ -1166,6 +1183,7 @@ public class MySourceBase implements Source {
 			this.obj = obj;
 		}
 
+		@Override
 		void trigger() {
 			l.remove(obj);
 		}
@@ -1179,6 +1197,7 @@ public class MySourceBase implements Source {
 			this.l = l;
 		}
 
+		@Override
 		void trigger() {
 			l.clear();
 		}

+ 7 - 6
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/main/EdgeSelectionHelper.java

@@ -4,6 +4,7 @@ import java.util.Iterator;
 
 import org.graphstream.algorithm.Toolkit;
 import org.graphstream.ui.geom.Point3;
+import org.graphstream.ui.graphicGraph.GraphPosLengthUtils;
 import org.graphstream.ui.view.Camera;
 
 import de.tu_darmstadt.informatik.tk.scopviz.graphs.GraphManager;
@@ -90,11 +91,11 @@ public final class EdgeSelectionHelper {
 		// Iterates over every edge, calculates the distance and updates the
 		// best edge and corresponding distance
 		for (Iterator<MyEdge> iterator = gm.getGraph().getEdgeIterator(); iterator.hasNext();) {
-			MyEdge edge = (MyEdge) iterator.next();
+			MyEdge edge = iterator.next();
 
 			// Get the positions of the nodes of the currently selected edge.
-			double[] n1 = Toolkit.nodePosition(edge.getNode0());
-			double[] n2 = Toolkit.nodePosition(edge.getNode1());
+			double[] n1 = GraphPosLengthUtils.nodePosition(edge.getNode0());
+			double[] n2 = GraphPosLengthUtils.nodePosition(edge.getNode1());
 
 			// Extract the x and y values of the positions of the nodes
 			double x1 = n1[0];
@@ -147,8 +148,8 @@ public final class EdgeSelectionHelper {
 	 * @return the distance between the two Nodes as a double
 	 */
 	public static double distance(MyNode a, MyNode b) {
-		double[] n1 = Toolkit.nodePosition(a);
-		double[] n2 = Toolkit.nodePosition(b);
+		double[] n1 = GraphPosLengthUtils.nodePosition(a);
+		double[] n2 = GraphPosLengthUtils.nodePosition(b);
 
 		return distance(n1[0], n1[1], n2[0], n2[1]);
 	}
@@ -165,7 +166,7 @@ public final class EdgeSelectionHelper {
 	 * @return the distance between the position and the Node as a double
 	 */
 	public static double distance(double x0, double y0, MyNode a) {
-		double[] n1 = Toolkit.nodePosition(a);
+		double[] n1 = GraphPosLengthUtils.nodePosition(a);
 
 		return distance(x0, y0, n1[0], n1[1]);
 	}

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

@@ -74,9 +74,14 @@ public class MainApp extends Application {
 			GraphDisplayManager.addGraph(Debug.getDefaultUnderlayGraph(), true);
 		}
 
-		CSSManager.addRule("node{text-alignment:at-right; size:15px;} \n"
-			+ "edge{text-offset: 4px,-4px;} edge.selected{fill-color: #FF0000;}"+"node.standard{shape: diamond;}" + "node.source{shape: triangle;}"
-			+ "node.procEn{shape: circle;}" + "node.sink{shape: box;}" + "node.operator{shape: diamond;}");
+		CSSManager.addRule("node{text-alignment:at-right; size:15px;fill-color: #000000;}"
+				+ "edge{text-offset: 4px,-4px;fill-color: #000000;}" + ".selected{fill-color: #FF0000;}"
+				+ "node.standard{shape: diamond;}" + "node.source{shape: triangle;}" + "node.procEn{shape: circle;}"
+				+ "node.sink{shape: box;}" + "node.operator{shape: diamond;}"
+				+ ".selectedForEdgeCreation{fill-color: #00ff00;}"
+				+ "edge.mapping {stroke-color: #33ff33; stroke-mode: dashes; fill-mode: none; size: 0px;}"
+				+ "node.procEn.onMapping {fill-mode: plain; shape: pie-chart; fill-color: #555555, #cccc00, #32cd32, #8b0000; size: 20px;}"
+				+ "edge.mapping.selected{stroke-color: #FF0000;}"+"node.procEn.onMapping.selected{size: 15px;}");
 	}
 
 	/**

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

@@ -513,7 +513,8 @@ public final class ButtonManager {
 			Platform.runLater(() -> controller.opGraphSelectionBox.setValue(controller.opGraphSelectionBox.getItems()
 					.get(controller.opGraphSelectionBox.getItems().size() - 2)));
 		} else {
-			GraphDisplayManager.getGraphManager(Layer.OPERATOR).setActiveSubGraph(controller.opGraphSelectionBox.getValue());
+			GraphDisplayManager.getGraphManager(Layer.OPERATOR)
+					.setActiveSubGraph(controller.opGraphSelectionBox.getValue());
 			// FIXME: aktuell zu bearbeitenden graphen im GraphManager setzen
 			// (erfordert Jaschas Implementierung)!
 		}

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

@@ -377,7 +377,7 @@ public class GUIController implements Initializable {
 		pane.heightProperty().addListener(rLis);
 		pane.widthProperty().addListener(rLis);
 		pane.setOnScroll(GraphDisplayManager.scrollHandler);
-		swingNode.setContent((JPanel) Main.getInstance().getGraphManager().getView());
+		swingNode.setContent(Main.getInstance().getGraphManager().getView());
 		pane.setMinSize(200, 200);
 	}
 

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

@@ -209,7 +209,7 @@ public final class GraphDisplayManager {
 			vList.add(v);
 			count++;
 			// set basic style
-			v.setStylesheet(StylesheetManager.DEFAULT_STYLESHEET);
+			v.setStylesheet();
 		} else {
 			v = new GraphManager(GraphHelper.newMerge(false, getGraphManager().getGraph(), g));
 			v.getGraph().addAttribute("layer", currentLayer);
@@ -220,7 +220,7 @@ public final class GraphDisplayManager {
 			vList.add(v);
 			count++;
 			// set basic style
-			v.setStylesheet(StylesheetManager.DEFAULT_STYLESHEET);
+			v.setStylesheet();
 		}
 
 		// set ui.class
@@ -265,7 +265,7 @@ public final class GraphDisplayManager {
 				.setPreferredSize(new Dimension((int) pane.getWidth() - 5, (int) pane.getHeight() - 5));
 		guiController.swingNode.setContent(Main.getInstance().getGraphManager().getView());
 
-		Main.getInstance().getGraphManager().updateStylesheet();
+		Main.getInstance().getGraphManager().setStylesheet();
 		Main.getInstance().setCreationMode(CreationMode.CREATE_NONE);
 	}
 
@@ -378,7 +378,7 @@ public final class GraphDisplayManager {
 			mapping = new MappingGraphManager(g, underlay, operator);
 			g.addAttribute("layer", Layer.MAPPING);
 			g.addAttribute("ui.antialias");
-			mapping.setStylesheet(StylesheetManager.DEFAULT_STYLESHEET);
+			mapping.setStylesheet();
 			vList.add(mapping);
 
 		}
@@ -460,7 +460,7 @@ public final class GraphDisplayManager {
 		count++;
 		g.addAttribute("layer", Layer.MAPPING);
 		g.addAttribute("ui.antialias");
-		map.setStylesheet(StylesheetManager.DEFAULT_STYLESHEET);
+		map.setStylesheet();
 		currentLayer = Layer.MAPPING;
 		removeAllCurrentGraphs();
 		vList.add(map);

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

@@ -53,7 +53,7 @@ public class MetricboxManager {
 		metrics.add(new MetricRowData(new TaskFulfillmentMetric()));
 		metrics.add(new MetricRowData(new PlacementCostMetric()));
 		metrics.add(new MetricRowData(new CommunicationCostMetric()));
-		
+
 	}
 
 	/**

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

@@ -113,7 +113,7 @@ public final class PropertiesManager {
 
 		// properties, which shall be filtered out of the properties window
 		itemVisibilityRules.put("layout.frozen", -1);
-		itemVisibilityRules.put("ui.style", -1);
+		//itemVisibilityRules.put("ui.style", -1);
 		itemVisibilityRules.put("ui.j2dsk", -1);
 		itemVisibilityRules.put("ui.clicked", -1);
 		itemVisibilityRules.put("ui.map.selected", -1);

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

@@ -74,7 +74,7 @@ public class StylesheetManager {
 				throw new RuntimeException("These graphics do not exist");
 			}
 		}
-		Main.getInstance().getGraphManager().updateStylesheet();
+		Main.getInstance().getGraphManager().setStylesheet();
 	}
 
 	/**

+ 10 - 8
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/css/CSSManager.java

@@ -10,7 +10,7 @@ public class CSSManager {
 	 * Du zerstörst diesen REGEX und Matthias zerstört dich
 	 */
 	// TODO comment
-	private static final String CSS_MATCH_REGEX = "(\\s*([A-Za-z]+|[A-Za-z]*(\\.[A-Za-z_-]*)+)\\s*\\{(\\s*[A-Za-z_-]+\\s*\\:\\s*[0-9A-Za-z\\(\\)\\_\\#\\'\\\"\\,-]+\\s*\\;?)+\\s*\\})+\\s*";
+	private static final String CSS_MATCH_REGEX = "(\\s*([A-Za-z]+|[A-Za-z]*(\\.[A-Za-z_-]*)+\\s*\\,?)*\\s*\\{(\\s*[A-Za-z_-]+\\s*\\:\\s*[0-9A-Za-z\\(\\)\\_\\#\\'\\\"\\,\\s-]+\\s*\\;?)+\\s*\\})+\\s*";
 
 	// TODO comment
 	static HashSet<CSSRule> rules = new HashSet<CSSRule>();
@@ -51,17 +51,19 @@ public class CSSManager {
 
 	// TODO comment
 	public static String getCSS(CSSable ca) {
-		// TODO implement
 		// <Property, <CSSValue, RuleValue>>
 		HashMap<String, CSSValueValue> cssDeclarations = new HashMap<>();
 		for (CSSRule r : rules) {
 			int ruleValue = r.ConditionsMetBy(ca);
-			HashSet<CSSDeclaration> declarations = r.getDeclarations();
-			for (CSSDeclaration d : declarations) {
-				String property = d.getProperty();
-				String value = d.getValue();
-				if (!cssDeclarations.containsKey(property) || ruleValue >= cssDeclarations.get(property).getRuleValue())
-					cssDeclarations.put(property, new CSSValueValue(value, ruleValue));
+			if (ruleValue > 0) {
+				HashSet<CSSDeclaration> declarations = r.getDeclarations();
+				for (CSSDeclaration d : declarations) {
+					String property = d.getProperty();
+					String value = d.getValue();
+					if (!cssDeclarations.containsKey(property)
+							|| ruleValue >= cssDeclarations.get(property).getRuleValue())
+						cssDeclarations.put(property, new CSSValueValue(value, ruleValue));
+				}
 			}
 		}
 		String result = "";

+ 4 - 2
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/css/CSSSelector.java

@@ -13,7 +13,8 @@ class CSSSelector {
 
 	// TODO comment
 	CSSSelector(String type, HashSet<String> classes) {
-		this.type = type;
+		if (type != null && type.trim().length() > 0)
+			this.type = type;
 		this.classes = classes;
 		value = (type != null ? 1 : 0) + classes.size() << 1;
 	}
@@ -23,8 +24,9 @@ class CSSSelector {
 		if (type != null && !type.equals(suspect.getType()))
 			return false;
 		Iterator<String> i = classes.iterator();
+		HashSet<String> sC = suspect.getClasses();
 		while (i.hasNext()) {
-			if (!suspect.getClasses().contains(i.next()))
+			if (sC == null || !sC.contains(i.next()))
 				return false;
 		}
 		return true;

+ 2 - 2
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/css/CSSable.java

@@ -1,6 +1,6 @@
 package de.tu_darmstadt.informatik.tk.scopviz.ui.css;
 
-import java.util.Set;
+import java.util.HashSet;
 
 public interface CSSable {
 	/**
@@ -44,7 +44,7 @@ public interface CSSable {
 	 * 
 	 * @return a Set of Strings containing all the previously added CSS classes
 	 */
-	public Set<String> getClasses();
+	public HashSet<String> getClasses();
 
 	/**
 	 * 

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

@@ -66,6 +66,7 @@ public class MyMouseManager extends DefaultMouseManager {
 	 * @param event
 	 *            the corresponding MouseEvent
 	 */
+	@Override
 	protected void mouseButtonPress(MouseEvent event) {
 		view.requestFocus();
 
@@ -172,6 +173,7 @@ public class MyMouseManager extends DefaultMouseManager {
 	 * @param event
 	 *            the corresponding MouseEvent
 	 */
+	@Override
 	protected void mouseButtonPressOnElement(GraphicElement element, MouseEvent event) {
 		view.freezeElement(element, true);
 		String id = element.getId();
@@ -197,6 +199,7 @@ public class MyMouseManager extends DefaultMouseManager {
 	 * @param event
 	 *            the corresponding MouseEvent
 	 */
+	@Override
 	protected void mouseButtonReleaseOffElement(GraphicElement element, MouseEvent event) {
 		view.freezeElement(element, false);
 		// update the Attributes of a Node after moving it
@@ -211,6 +214,7 @@ public class MyMouseManager extends DefaultMouseManager {
 	 * @param event
 	 *            the corresponding MouseEvent
 	 */
+	@Override
 	public void mousePressed(MouseEvent event) {
 		// Left Click -> Find out whether the User clicked on an Element
 		if (event.getButton() == MouseEvent.BUTTON1) {
@@ -238,6 +242,7 @@ public class MyMouseManager extends DefaultMouseManager {
 	 * @param event
 	 *            the corresponding MouseEvent
 	 */
+	@Override
 	public void mouseDragged(MouseEvent event) {
 		// If the Mouse is dragging an Element, move it
 		if (curElement != null) {
@@ -271,6 +276,7 @@ public class MyMouseManager extends DefaultMouseManager {
 	 * @param event
 	 *            the corresponding MouseEvent
 	 */
+	@Override
 	public void mouseReleased(MouseEvent event) {
 		if (curElement != null) {
 			mouseButtonReleaseOffElement(curElement, event);

+ 7 - 0
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/mapView/CustomTile.java

@@ -94,6 +94,7 @@ public class CustomTile extends Tile {
 	 *         This may return null at any time, however if this returns null, a
 	 *         load operation will automatically be started for it.
 	 */
+	@Override
 	public BufferedImage getImage() {
 		BufferedImage img = image.get();
 		if (img == null) {
@@ -114,6 +115,7 @@ public class CustomTile extends Tile {
 	 * 
 	 * @return true if the Tile has been loaded
 	 */
+	@Override
 	public synchronized boolean isLoaded() {
 		return loaded;
 	}
@@ -139,6 +141,7 @@ public class CustomTile extends Tile {
 	/**
 	 * @return the isLoading
 	 */
+	@Override
 	public boolean isLoading() {
 		return isLoading;
 	}
@@ -147,6 +150,7 @@ public class CustomTile extends Tile {
 	 * @param isLoading
 	 *            the isLoading to set
 	 */
+	@Override
 	public void setLoading(boolean isLoading) {
 		this.isLoading = isLoading;
 	}
@@ -175,6 +179,7 @@ public class CustomTile extends Tile {
 	 * 
 	 * @return the priority
 	 */
+	@Override
 	public Priority getPriority() {
 		return priority;
 	}
@@ -185,6 +190,7 @@ public class CustomTile extends Tile {
 	 * @param priority
 	 *            the priority to set
 	 */
+	@Override
 	public void setPriority(Priority priority) {
 		this.priority = priority;
 	}
@@ -194,6 +200,7 @@ public class CustomTile extends Tile {
 	 * 
 	 * @return the url
 	 */
+	@Override
 	public String getURL() {
 		return url;
 	}

+ 5 - 1
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/mapView/CustomTileFactory.java

@@ -86,7 +86,7 @@ public class CustomTileFactory extends AbstractTileFactory {
 	 */
 	@Override
 	public CustomTile getTile(int x, int y, int zoom) {
-		return (CustomTile) getTile(x, y, zoom, true);
+		return getTile(x, y, zoom, true);
 	}
 
 	/**
@@ -161,6 +161,7 @@ public class CustomTileFactory extends AbstractTileFactory {
 	/**
 	 * @return the tile cache
 	 */
+	@Override
 	public TileCache getTileCache() {
 		return cache;
 	}
@@ -169,6 +170,7 @@ public class CustomTileFactory extends AbstractTileFactory {
 	 * @param cache
 	 *            the tile cache
 	 */
+	@Override
 	public void setTileCache(TileCache cache) {
 		this.cache = cache;
 	}
@@ -180,6 +182,7 @@ public class CustomTileFactory extends AbstractTileFactory {
 	 * 
 	 * @return ExecutorService to load tiles with
 	 */
+	@Override
 	protected synchronized ExecutorService getService() {
 		if (service == null) {
 			// System.out.println("creating an executor service with a
@@ -216,6 +219,7 @@ public class CustomTileFactory extends AbstractTileFactory {
 	 * @param size
 	 *            the thread pool size
 	 */
+	@Override
 	public void setThreadPoolSize(int size) {
 		if (size <= 0) {
 			throw new IllegalArgumentException(