MW před 7 roky
rodič
revize
62aeb6b8a9

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

@@ -5,61 +5,64 @@ import java.util.Set;
 import org.graphstream.graph.implementations.AbstractEdge;
 import org.graphstream.graph.implementations.AbstractNode;
 
+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 {
-
-	protected MyEdge(String id, AbstractNode source, AbstractNode target, boolean directed) {
+	// TODO comment
+		Set<String> classes;
+		// TODO comment
+		String type = "edge";
+		// TODO comment
+		String css;
+
+		
+	public MyEdge(String id, AbstractNode source, AbstractNode target, boolean directed) {
 		super(id, source, target, directed);
 		// TODO Auto-generated constructor stub
 	}
 
 	@Override
 	public void addCSSClass(String c) {
-		// TODO Auto-generated method stub
-
+		classes.add(c);
 	}
 
 	@Override
 	public void removeCSSClass(String c) {
-		// TODO Auto-generated method stub
-
+		classes.remove(c);
 	}
 
 	@Override
 	public void toggleCSSClass(String c) {
-		// TODO Auto-generated method stub
-
+		if (hasCSSClass(c))
+			removeCSSClass(c);
+		else
+			addCSSClass(c);
 	}
 
 	@Override
 	public boolean hasCSSClass(String c) {
-		// TODO Auto-generated method stub
-		return false;
+		return classes.contains(c);
 	}
 
 	@Override
 	public Set<String> getClasses() {
-		// TODO Auto-generated method stub
-		return null;
+		return classes;
 	}
 
 	@Override
 	public String getType() {
-		// TODO Auto-generated method stub
-		return null;
+		return type;
 	}
 
 	@Override
 	public void updateCSS() {
-		// TODO Auto-generated method stub
-
+		css = CSSManager.getCSS(this);
+		addAttribute("ui.style", css);
 	}
 
 	@Override
 	public String getCSS() {
-		// TODO Auto-generated method stub
-		return null;
+		return css;
 	}
-
-}
+}

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

@@ -5,19 +5,20 @@ import java.util.Set;
 import org.graphstream.graph.implementations.AbstractGraph;
 import org.graphstream.graph.implementations.SingleNode;
 
+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
+	// TODO comment
 	Set<String> classes;
-	//TODO comment
+	// TODO comment
 	String type = "node";
-	//TODO comment
+	// TODO comment
 	String css;
 
-	protected MyNode(AbstractGraph graph, String id) {
+	public MyNode(AbstractGraph graph, String id) {
 		super(graph, id);
-		// TODO Auto-generated constructor stub
+		updateCSS();
 	}
 
 	@Override
@@ -55,8 +56,8 @@ public class MyNode extends SingleNode implements CSSable {
 
 	@Override
 	public void updateCSS() {
-		// TODO Auto-generated method stub
-
+		css = CSSManager.getCSS(this);
+		addAttribute("ui.style", css);
 	}
 
 	@Override

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

@@ -4,6 +4,8 @@ import java.io.IOException;
 import java.net.URL;
 
 import de.tu_darmstadt.informatik.tk.scopviz.debug.Debug;
+import de.tu_darmstadt.informatik.tk.scopviz.graphs.MyEdge;
+import de.tu_darmstadt.informatik.tk.scopviz.graphs.MyNode;
 import de.tu_darmstadt.informatik.tk.scopviz.io.GraphMLExporter;
 import de.tu_darmstadt.informatik.tk.scopviz.ui.GraphDisplayManager;
 import de.tu_darmstadt.informatik.tk.scopviz.ui.css.CSSManager;
@@ -74,7 +76,7 @@ public class MainApp extends Application {
 			GraphDisplayManager.addGraph(Debug.getDefaultUnderlayGraph(), true);
 		}
 
-		CSSManager.addRule("node.green{text-alignment: at-right; size: 15px;}");
+		CSSManager.addRule("node{text-alignment: at-right; size: 15px;}");
 	}
 
 	/**

+ 40 - 0
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/css/CSSDeclaration.java

@@ -0,0 +1,40 @@
+package de.tu_darmstadt.informatik.tk.scopviz.ui.css;
+
+class CSSDeclaration {
+	// TODO comment
+	String property;
+	// TODO comment
+	String value;
+
+	// TODO comment
+	CSSDeclaration(String property, String value) {
+		this.property = property.trim();
+		this.value = value.trim();
+	}
+
+	// TODO comment
+	String getProperty() {
+		return property;
+	}
+
+	// TODO comment
+	void setProperty(String property) {
+		this.property = property;
+	}
+
+	// TODO comment
+	String getValue() {
+		return value;
+	}
+
+	// TODO comment
+	void setValue(String value) {
+		this.value = value;
+	}
+
+	@Override
+	public String toString() {
+		return property + ": " + value;
+	}
+
+}

+ 41 - 15
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/css/CSSManager.java

@@ -1,5 +1,6 @@
 package de.tu_darmstadt.informatik.tk.scopviz.ui.css;
 
+import java.util.HashMap;
 import java.util.HashSet;
 
 import de.tu_darmstadt.informatik.tk.scopviz.debug.Debug;
@@ -51,7 +52,24 @@ public class CSSManager {
 	// TODO comment
 	public static String getCSS(CSSable ca) {
 		// TODO implement
-		return null;
+		// <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));
+			}
+		}
+		String result = "";
+
+		for (String key : cssDeclarations.keySet()) {
+			result = result.concat(key).concat(": ").concat(cssDeclarations.get(key).getCssValue()).concat("; ");
+		}
+		return result.trim();
 	}
 
 	// TODO comment
@@ -63,43 +81,51 @@ public class CSSManager {
 	// TODO comment
 	private static CSSRule extractRule(String s) {
 		String[] sArray = s.trim().split("\\{");
-		return new CSSRule(extractConditions(sArray[0]), parseCss(sArray[1]));
+		return new CSSRule(extractSelectors(sArray[0]), parseCss(sArray[1]));
 	}
 
 	// TODO comment
-	private static HashSet<CSSCondition> extractConditions(String s) {
-		HashSet<CSSCondition> conditions = new HashSet<>();
+	private static HashSet<CSSSelector> extractSelectors(String s) {
+		HashSet<CSSSelector> selectors = new HashSet<>();
 		String[] sArray = s.trim().split("\\,");
-		for (String cond : sArray) {
-			conditions.add(extractCondition(cond));
+		for (String selecteor : sArray) {
+			selectors.add(extractSelector(selecteor));
 		}
-		return conditions;
+		return selectors;
 	}
 
 	// TODO comment
-	private static CSSCondition extractCondition(String s) {
+	private static CSSSelector extractSelector(String s) {
 		HashSet<String> classes = new HashSet<String>();
 		String[] sArray = s.trim().split("\\.");
 		for (int i = 1; i < sArray.length; i++) {
 			classes.add(sArray[i]);
 		}
-		return new CSSCondition(sArray[0], classes);
+		return new CSSSelector(sArray[0], classes);
 	}
 
 	// TODO comment
-	private static String parseCss(String s) {
-		String parsedCss = "";
+	private static HashSet<CSSDeclaration> parseCss(String s) {
+		HashSet<CSSDeclaration> declarations = new HashSet<CSSDeclaration>();
 		String[] sArray = s.trim().split("\\;");
 		for (int i = 0; i < sArray.length; i++) {
-			parsedCss = parsedCss.concat(parseCssStatement(sArray[i])).concat("; ");
+			CSSDeclaration cssDeclaration = parseCssStatement(sArray[i]);
+			String property = cssDeclaration.getProperty();
+			for (CSSDeclaration cd : declarations) {
+				if (property.equals(cd.getProperty())) {
+					declarations.remove(cd);
+					break;
+				}
+			}
+			declarations.add(cssDeclaration);
 		}
-		return parsedCss.substring(0, parsedCss.length() - 1);
+		return declarations;
 	}
 
 	// TODO comment
-	private static String parseCssStatement(String s) {
+	private static CSSDeclaration parseCssStatement(String s) {
 		String[] sArray = s.trim().split("\\:");
-		return sArray[0].trim().concat(": ").concat(sArray[1].trim());
+		return new CSSDeclaration(sArray[0], sArray[1]);
 	}
 
 }

+ 31 - 16
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/css/CSSRule.java

@@ -4,44 +4,59 @@ import java.util.HashSet;
 import java.util.Iterator;
 
 class CSSRule {
-	//TODO comment
-	HashSet<CSSCondition> conditions = new HashSet<CSSCondition>();
-	//TODO comment
+	// TODO comment
+	HashSet<CSSSelector> selectors = new HashSet<CSSSelector>();
+	// TODO comment
+	HashSet<CSSDeclaration> declarations = new HashSet<CSSDeclaration>();
+	// TODO comment
 	String css;
 
-	//TODO comment
-	public CSSRule(HashSet<CSSCondition> conditions, String css) {
+	// TODO comment
+	CSSRule(HashSet<CSSSelector> selectors, HashSet<CSSDeclaration> declarations) {
 		super();
-		this.conditions = conditions;
-		this.css = css.trim();
+		this.selectors = selectors;
+		this.declarations = declarations;
+		css = "";
+		for (CSSDeclaration dc : declarations) {
+			css = css.concat(dc.toString()).concat("; ");
+		}
+		css = css.trim();
 	}
 
-	//TODO comment
+	// TODO comment
 	int ConditionsMetBy(CSSable suspect) {
 		int result = 0;
-		Iterator<CSSCondition> i = conditions.iterator();
+		Iterator<CSSSelector> i = selectors.iterator();
 		while (i.hasNext()) {
-			CSSCondition condition = i.next();
-			int r=-1;
+			CSSSelector condition = i.next();
+			int r = -1;
 			if (condition.ConditionsMetBy(suspect))
-			 r = condition.getValue();
+				r = condition.getValue();
 			if (r > result)
 				result = r;
 		}
 
 		return result;
 	}
-	
-	
 
-	//TODO comment
+	// TODO comment
+	public HashSet<CSSSelector> getSelectors() {
+		return selectors;
+	}
+
+	// TODO comment
+	public HashSet<CSSDeclaration> getDeclarations() {
+		return declarations;
+	}
+
+	// TODO comment
 	String getCSS() {
 		return css;
 	}
 
 	@Override
 	public String toString() {
-		return conditions.toString().replace("[", "").replace("]", "") + " { " + css + " }";
+		return selectors.toString().replace("[", "").replace("]", "") + " { " + css + " }";
 	}
 
 }

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

@@ -3,7 +3,7 @@ package de.tu_darmstadt.informatik.tk.scopviz.ui.css;
 import java.util.HashSet;
 import java.util.Iterator;
 
-class CSSCondition {
+class CSSSelector {
 	//TODO comment
 	String type;
 	//TODO comment
@@ -12,7 +12,7 @@ class CSSCondition {
 	int value;
 
 	//TODO comment
-	public CSSCondition(String type, HashSet<String> classes) {
+	CSSSelector(String type, HashSet<String> classes) {
 		this.type = type;
 		this.classes = classes;
 		value = (type != null ? 1 : 0) + classes.size() << 1;

+ 24 - 0
scopviz/src/main/java/de/tu_darmstadt/informatik/tk/scopviz/ui/css/CSSValueValue.java

@@ -0,0 +1,24 @@
+package de.tu_darmstadt.informatik.tk.scopviz.ui.css;
+
+public class CSSValueValue {
+	// TODO comment
+	String cssValue;
+	// TODO comment
+	int ruleValue;
+
+	// TODO comment
+	CSSValueValue(String cssValue, int ruleValue) {
+		this.cssValue = cssValue;
+		this.ruleValue = ruleValue;
+	}
+
+	// TODO comment
+	String getCssValue() {
+		return cssValue;
+	}
+
+	// TODO comment
+	int getRuleValue() {
+		return ruleValue;
+	}
+}