de.cau.cs.kieler.kiml.ui.layout
Class DiagramLayoutManager

java.lang.Object
  extended by de.cau.cs.kieler.kiml.ui.layout.DiagramLayoutManager
Direct Known Subclasses:
GmfDiagramLayoutManager

public abstract class DiagramLayoutManager
extends Object

Abstract superclass for managers of diagram layout.

Rating proposed yellow
(2009-12-11) msp

Field Summary
static int MAX_PROGRESS_LEVELS
          maximal number of recursion levels for which progress is displayed.
 
Constructor Summary
DiagramLayoutManager()
           
 
Method Summary
abstract  void addChangeListener(IEditorPart editorPart, IEditorChangeListener listener)
          Register a listener for change of the active editor or active selection.
protected abstract  void applyLayout()
          Applies the transferred layout to the original diagram.
abstract  KNode buildLayoutGraph(IEditorPart editorPart, EditPart editPart, boolean layoutAncestors)
          Builds a KGraph instance for the given editor or edit part.
static int calcAnimationTime(int graphSize)
          Calculates animation time for the given graph size.
protected abstract  ICachedLayout getCachedLayout()
          Returns the cached layout for the last layout run.
abstract  EditPart getCurrentEditPart()
          Returns the currently processed top level edit part.
abstract  ILayoutInspector getInspector(EditPart editPart)
          Returns a layout inspector for the given edit part.
abstract  KNode getLayoutGraph()
          Returns the last built layout graph.
 int getPriority()
          Return the manager priority.
abstract  ISelection getSelection(IEditorPart editorPart)
          Returns the current selection for the given editor part.
 void layout(IEditorPart editorPart, EditPart editPart, boolean animate, boolean progressBar, boolean layoutAncestors, boolean cacheLayout)
          Performs layout on the given editor or edit part using this layout manager.
 IStatus layout(IKielerProgressMonitor progressMonitor, boolean layoutAncestors, boolean cacheLayout)
          Performs layout on the given editor or edit part using this layout manager and a specific progress monitor.
abstract  void removeChangeListener(IEditorChangeListener listener)
          Remove a change listener from all editors for which it has registered.
 void setPriority(int thepriority)
          Set the manager priority.
protected abstract  boolean supports(EditPart editPart)
          Determines whether this layout manager is able to perform layout for the given edit part.
protected abstract  boolean supports(IEditorPart editorPart)
          Determines whether this layout manager is able to perform layout for the given editor.
protected abstract  void transferLayout(boolean cacheLayout)
          Transfers all layout data from the last created KGraph instance to the original diagram.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MAX_PROGRESS_LEVELS

public static final int MAX_PROGRESS_LEVELS
maximal number of recursion levels for which progress is displayed.

See Also:
Constant Field Values
Constructor Detail

DiagramLayoutManager

public DiagramLayoutManager()
Method Detail

getPriority

public final int getPriority()
Return the manager priority.

Returns:
the priority

setPriority

public final void setPriority(int thepriority)
Set the manager priority.

Parameters:
thepriority - the priority to set

layout

public final void layout(IEditorPart editorPart,
                         EditPart editPart,
                         boolean animate,
                         boolean progressBar,
                         boolean layoutAncestors,
                         boolean cacheLayout)
Performs layout on the given editor or edit part using this layout manager. A progress bar indicating progress of the layout algorithm is optionally shown to the user.

Parameters:
editorPart - the editor for which layout is performed, or null if the diagram is not part of an editor
editPart - the parent edit part for which layout is performed, or null if the whole diagram shall be layouted
animate - if true, Draw2D animation is activated
progressBar - if true, a progress bar is displayed
layoutAncestors - if true, layout is not only performed for the selected edit part, but also for its ancestors
cacheLayout - if true, the layout result is cached for the underlying model

layout

public IStatus layout(IKielerProgressMonitor progressMonitor,
                      boolean layoutAncestors,
                      boolean cacheLayout)
Performs layout on the given editor or edit part using this layout manager and a specific progress monitor. The layout graph must be built before this method is called, and the layout must be applied after this method returns.

Parameters:
progressMonitor - a progress monitor to which progress of the layout algorithm is reported
layoutAncestors - if true, layout is not only performed for the selected edit part, but also for its ancestors
cacheLayout - if true, the layout result is cached for the underlying model
Returns:
a status indicating success or failure; if successful, the status contains the number of layouted nodes as code value

calcAnimationTime

public static int calcAnimationTime(int graphSize)
Calculates animation time for the given graph size.

Parameters:
graphSize - total number of nodes in the graph
Returns:
number of milliseconds to animate

getCurrentEditPart

public abstract EditPart getCurrentEditPart()
Returns the currently processed top level edit part.

Returns:
the currently processed edit part

supports

protected abstract boolean supports(IEditorPart editorPart)
Determines whether this layout manager is able to perform layout for the given editor.

Parameters:
editorPart - an editor part
Returns:
true if this layout manager supports the editor part

supports

protected abstract boolean supports(EditPart editPart)
Determines whether this layout manager is able to perform layout for the given edit part.

Parameters:
editPart - an edit part
Returns:
true if this layout manager supports the edit part

buildLayoutGraph

public abstract KNode buildLayoutGraph(IEditorPart editorPart,
                                       EditPart editPart,
                                       boolean layoutAncestors)
Builds a KGraph instance for the given editor or edit part. The resulting layout graph should reflect the structure of edit parts in the original diagram.

Parameters:
editorPart - the editor for which layout is performed, or null if the diagram is not part of an editor
editPart - the parent edit part for which layout is performed, or null if the whole diagram shall be layouted
layoutAncestors - if true, layout is not only performed for the selected edit part, but also for its ancestors
Returns:
a layout graph instance

getInspector

public abstract ILayoutInspector getInspector(EditPart editPart)
Returns a layout inspector for the given edit part.

Parameters:
editPart - an edit part
Returns:
a layout inspector for the edit part

transferLayout

protected abstract void transferLayout(boolean cacheLayout)
Transfers all layout data from the last created KGraph instance to the original diagram. The diagram is not modified yet, but all required preparations are performed.

Parameters:
cacheLayout - if true, the layout result is cached for the underlying model

applyLayout

protected abstract void applyLayout()
Applies the transferred layout to the original diagram. This final step is where the actual change to the diagram is done.


getLayoutGraph

public abstract KNode getLayoutGraph()
Returns the last built layout graph.

Returns:
the last built layout graph

getCachedLayout

protected abstract ICachedLayout getCachedLayout()
Returns the cached layout for the last layout run.

Returns:
the last cached layout

addChangeListener

public abstract void addChangeListener(IEditorPart editorPart,
                                       IEditorChangeListener listener)
Register a listener for change of the active editor or active selection. The default implementation does nothing.

Parameters:
editorPart - editor to register to
listener - listener to register

removeChangeListener

public abstract void removeChangeListener(IEditorChangeListener listener)
Remove a change listener from all editors for which it has registered. The default implementation does nothing.

Parameters:
listener - listener to remove

getSelection

public abstract ISelection getSelection(IEditorPart editorPart)
Returns the current selection for the given editor part.

Parameters:
editorPart - an editor part
Returns:
the current selection, or null if the selection cannot be determined