LayeredGraphEdge.java 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package model;
  2. import java.awt.Point;
  3. import java.util.ArrayList;
  4. import org.eclipse.elk.graph.ElkEdge;
  5. import algorithms.animated.bk.ExtremalLayoutCalc.LayoutType;
  6. /**
  7. * Ein Interface, welches die Methoden einer Kante aus einem gelayerten Graphen beschreibt
  8. * @author kolja
  9. *
  10. */
  11. public interface LayeredGraphEdge {
  12. /**
  13. * @return Gibt die originale Kante des Elk Graphen zur�ck
  14. */
  15. ElkEdge getOriginalEdge();
  16. public boolean isConflicted( LayoutType layout );
  17. public ArrayList<LayeredGraphEdge> calcConflictedEdges();
  18. public void setConflicted( boolean conflicted, LayoutType layout );
  19. /**
  20. * Entfernt diese Kante vom Graphen
  21. */
  22. void remove();
  23. /**
  24. * Gibt eine Liste mit Knoten zur�ck, von welchen die Kante beginnt
  25. * @return Liste mit Startknoten
  26. */
  27. ArrayList< LayeredGraphNode > getSources();
  28. /**
  29. * Gibt eine Liste mit Knoten zur�ck, bei welchen die Kante endet
  30. * @return Liste mit Endknoten
  31. */
  32. ArrayList< LayeredGraphNode > getTargets();
  33. /**
  34. * Pr�ft, ob die Kante �ber mehrere Layer hinweg geht
  35. * @return true, falls die Kante �ber mehrere Layer hinweg geht
  36. */
  37. boolean isCrossLayerEdge();
  38. /**
  39. * F�r jeden Layer �ber den die Kante geht wird ein Dummy Node erzeugt.
  40. * Diese werden durch Dummy Kanten verbunden, welche diese Kante ersetzen.
  41. * Die Kante wird automatisch aus dem Graphen entfernt
  42. */
  43. void replaceByDummyNodes();
  44. /**
  45. * Dreht die Kante um, indem die Startknoten mit den Endknoten getauscht werden
  46. */
  47. void reverse();
  48. void setStartPoint( int x, int y, LayoutType layout );
  49. void setEndPoint( int x, int y, LayoutType layout );
  50. void addBindPoint( int x, int y, LayoutType layout );
  51. ArrayList<Point> getLinePoints( LayoutType layout );
  52. /**
  53. * Pr�ft, ob die Kante umgedreht wurde
  54. * @return true, falls die Kante umgedreht wurde
  55. */
  56. boolean isReversedEdge();
  57. /**
  58. * Pr�ft, ob die Kante eine Dummy Kante ist (also ob sie von einem Dummy Knoten startet oder zu einem DummyKnoten hinf�hrt)
  59. * @return true, falls die Kante eine Dummy Kante ist
  60. */
  61. boolean isDummyEdge();
  62. /**
  63. * Ermittelt, welche f�r welche originale Kante diese Kante als Dummykante eingesetzt wurd
  64. * und entfernt all die Dummynodes und Dummykanten wieder. Anschlie�end wird die alte Kante wieder zum Graphen hinzugef�gt
  65. */
  66. void removeDummyNodes();
  67. /**
  68. * Legt fest, dass es sich bei dieser Kante um eine Dummykante handelt
  69. */
  70. void setDummyEdge();
  71. /**
  72. * Legt fest, dass es sich bei dieser Kante um eine umgedrehte Kante handelt
  73. */
  74. void setReversedEdge();
  75. /**
  76. * Legt den Graphen fest, zu dem diese Kante geh�rt
  77. * @param graph Der Graph, zu dem die Kante geh�rt
  78. */
  79. void setGraph( LayeredGraphNode graph );
  80. }