package model; import java.awt.Point; import java.util.ArrayList; import org.eclipse.elk.graph.ElkEdge; import algorithms.animated.bk.ExtremalLayoutCalc.LayoutType; /** * Ein Interface, welches die Methoden einer Kante aus einem gelayerten Graphen beschreibt * @author kolja * */ public interface LayeredGraphEdge { /** * @return Gibt die originale Kante des Elk Graphen zur�ck */ ElkEdge getOriginalEdge(); public boolean isConflicted( LayoutType layout ); public ArrayList calcConflictedEdges(); public void setConflicted( boolean conflicted, LayoutType layout ); /** * Entfernt diese Kante vom Graphen */ void remove(); /** * Gibt eine Liste mit Knoten zur�ck, von welchen die Kante beginnt * @return Liste mit Startknoten */ ArrayList< LayeredGraphNode > getSources(); /** * Gibt eine Liste mit Knoten zur�ck, bei welchen die Kante endet * @return Liste mit Endknoten */ ArrayList< LayeredGraphNode > getTargets(); /** * Pr�ft, ob die Kante �ber mehrere Layer hinweg geht * @return true, falls die Kante �ber mehrere Layer hinweg geht */ boolean isCrossLayerEdge(); /** * F�r jeden Layer �ber den die Kante geht wird ein Dummy Node erzeugt. * Diese werden durch Dummy Kanten verbunden, welche diese Kante ersetzen. * Die Kante wird automatisch aus dem Graphen entfernt */ void replaceByDummyNodes(); /** * Dreht die Kante um, indem die Startknoten mit den Endknoten getauscht werden */ void reverse(); void setStartPoint( int x, int y, LayoutType layout ); void setEndPoint( int x, int y, LayoutType layout ); void addBindPoint( int x, int y, LayoutType layout ); ArrayList getLinePoints( LayoutType layout ); /** * Pr�ft, ob die Kante umgedreht wurde * @return true, falls die Kante umgedreht wurde */ boolean isReversedEdge(); /** * Pr�ft, ob die Kante eine Dummy Kante ist (also ob sie von einem Dummy Knoten startet oder zu einem DummyKnoten hinf�hrt) * @return true, falls die Kante eine Dummy Kante ist */ boolean isDummyEdge(); /** * Ermittelt, welche f�r welche originale Kante diese Kante als Dummykante eingesetzt wurd * und entfernt all die Dummynodes und Dummykanten wieder. Anschlie�end wird die alte Kante wieder zum Graphen hinzugef�gt */ void removeDummyNodes(); /** * Legt fest, dass es sich bei dieser Kante um eine Dummykante handelt */ void setDummyEdge(); /** * Legt fest, dass es sich bei dieser Kante um eine umgedrehte Kante handelt */ void setReversedEdge(); /** * Legt den Graphen fest, zu dem diese Kante geh�rt * @param graph Der Graph, zu dem die Kante geh�rt */ void setGraph( LayeredGraphNode graph ); }