java.lang.Object
de.uni_trier.wi2.procake.gui.objecteditor.nestworkfloweditor.NESTWorkflowLayout
Direct Known Subclasses:
NESTWorkflowLayoutForMxGraph

public abstract class NESTWorkflowLayout extends Object
How to use: Implement abstract methods delivering node and edge dimensions. Init with NESTWorkflowObject. Set layout options or leave defaults. Call execute() method. Retrieve node positions and edge paths with the corresponding methods (getNodeXPositions, getNodeYPositions, getEdgePaths)
  • Field Details

    • layoutConfig

      protected NESTWorkflowLayout.LayoutConfig layoutConfig
    • DEFAULT_EXECUTE_ON_EDGE_INSERTION

      public static boolean DEFAULT_EXECUTE_ON_EDGE_INSERTION
    • nestWorkflow

      protected de.uni_trier.wi2.procake.data.object.nest.NESTAbstractWorkflowObject nestWorkflow
    • nodeYPositions

      protected Map<de.uni_trier.wi2.procake.data.object.nest.NESTNodeObject,Integer> nodeYPositions
    • nodeXPositions

      protected Map<de.uni_trier.wi2.procake.data.object.nest.NESTNodeObject,Integer> nodeXPositions
    • nodeYPositionsById

      protected Map<String,Integer> nodeYPositionsById
    • nodeXPositionsById

      protected Map<String,Integer> nodeXPositionsById
    • edgePaths

      protected Map<de.uni_trier.wi2.procake.data.object.nest.NESTEdgeObject,List<Point>> edgePaths
  • Constructor Details

    • NESTWorkflowLayout

      public NESTWorkflowLayout(de.uni_trier.wi2.procake.data.object.nest.NESTAbstractWorkflowObject nestWorkflow)
  • Method Details

    • execute

      public void execute()
    • findReverseDataflowEdge

      protected Optional<de.uni_trier.wi2.procake.data.object.nest.NESTEdgeObject> findReverseDataflowEdge(de.uni_trier.wi2.procake.data.object.nest.NESTEdgeObject edge)
    • isApplicable

      public boolean isApplicable()
      The layout only works properly when certain constraints (concerning the controlflow) on the graph are met. This method is used to check the NESTWorkflow for these constraints to determine whether an alternative layout should be run.
      Returns:
      whether the needed constraints to apply NESTWorkflowLayout are met
    • getEdgeLabelSize

      public abstract Dimension getEdgeLabelSize(de.uni_trier.wi2.procake.data.object.nest.NESTEdgeObject edge)
      Parameters:
      edge - A NESTEdgeObject
      Returns:
      dimension of the label of the given NESTEdgeObject
    • getNodeSize

      public abstract Dimension getNodeSize(de.uni_trier.wi2.procake.data.object.nest.NESTNodeObject node)
      Parameters:
      node - A NESTNodeObject
      Returns:
      dimension of the visual representation of the given NESTNodeObject
    • getNodeXPositions

      public Map<de.uni_trier.wi2.procake.data.object.nest.NESTNodeObject,Integer> getNodeXPositions()
    • getNodeXPosition

      public int getNodeXPosition(de.uni_trier.wi2.procake.data.object.nest.NESTNodeObject node)
    • getNodeYPositions

      public Map<de.uni_trier.wi2.procake.data.object.nest.NESTNodeObject,Integer> getNodeYPositions()
    • getNodeYPosition

      public int getNodeYPosition(de.uni_trier.wi2.procake.data.object.nest.NESTNodeObject node)
    • getEdgePaths

      public Map<de.uni_trier.wi2.procake.data.object.nest.NESTEdgeObject,List<Point>> getEdgePaths()
    • getEdgePath

      public List<Point> getEdgePath(de.uni_trier.wi2.procake.data.object.nest.NESTEdgeObject edge)
    • getLayoutConfig

      public NESTWorkflowLayout.LayoutConfig getLayoutConfig()
    • setLayoutConfig

      public void setLayoutConfig(NESTWorkflowLayout.LayoutConfig layoutConfig)
    • isExecuteOnEdgeInsertion

      public boolean isExecuteOnEdgeInsertion()
    • setExecuteOnEdgeInsertion

      public void setExecuteOnEdgeInsertion(boolean executeOnEdgeInsertion)
    • setNestWorkflow

      public void setNestWorkflow(de.uni_trier.wi2.procake.data.object.nest.NESTAbstractWorkflowObject nestWorkflow)