MyEdge.java 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package de.tu_darmstadt.informatik.tk.scopviz.graphs;
  2. import java.util.HashSet;
  3. import org.graphstream.graph.implementations.AbstractEdge;
  4. import org.graphstream.graph.implementations.AbstractNode;
  5. import de.tu_darmstadt.informatik.tk.scopviz.debug.Debug;
  6. import de.tu_darmstadt.informatik.tk.scopviz.ui.css.CSSManager;
  7. import de.tu_darmstadt.informatik.tk.scopviz.ui.css.CSSable;
  8. public class MyEdge extends AbstractEdge implements CSSable {
  9. // TODO comment
  10. HashSet<String> classes;
  11. // TODO comment
  12. String type = "edge";
  13. // TODO comment
  14. String css;
  15. public MyEdge(String id, AbstractNode source, AbstractNode target, boolean directed) {
  16. super(id, source, target, directed);
  17. updateCSS();
  18. classes = new HashSet<String>();
  19. }
  20. @Override
  21. public void addCSSClass(String c) {
  22. classes.add(c);
  23. updateCSS();
  24. }
  25. @Override
  26. public void removeCSSClass(String c) {
  27. classes.remove(c);
  28. updateCSS();
  29. }
  30. @Override
  31. public void toggleCSSClass(String c) {
  32. if (hasCSSClass(c))
  33. removeCSSClass(c);
  34. else
  35. addCSSClass(c);
  36. }
  37. @Override
  38. public boolean hasCSSClass(String c) {
  39. return classes.contains(c);
  40. }
  41. @Override
  42. public HashSet<String> getClasses() {
  43. return classes;
  44. }
  45. @Override
  46. public String getType() {
  47. return type;
  48. }
  49. @Override
  50. public void updateCSS() {
  51. css = CSSManager.getCSS(this);
  52. addAttribute("ui.style", css);
  53. Debug.out(id + ": " + type + classes + "\n" + css);
  54. }
  55. @Override
  56. public String getCSS() {
  57. return css;
  58. }
  59. @Override
  60. protected void attributeChanged(AttributeChangeEvent event, String attribute, Object oldValue, Object newValue) {
  61. super.attributeChanged(event, attribute, oldValue, newValue);
  62. if (attribute.equals("ui.class")) {
  63. if (oldValue != null && oldValue instanceof String)
  64. removeCSSClass((String) oldValue);
  65. if (newValue != null && newValue instanceof String)
  66. addCSSClass((String) newValue);
  67. }
  68. }
  69. }