| Package | com.yworks.graph.model |
| Class | public class FoldingManager |
| Inheritance | FoldingManager Object |
IGraph implementations on top of the IGroupedGraph
interface.
This implementation manages the varying states nodes and edges can have in different views and during different collapsed/expanded states of the nodes.
Create an instance of this class for a given IGraph and use
the createManagedView() methods to create an IGraph implementation that
provides a view of a subset of the graph, where group nodes can be
collapsed and expanded.
See also
| Property | Defined By | ||
|---|---|---|---|
| autoAdjustMasterGroupNodeBounds : Boolean
Gets or sets a property that determines whether the manager should synchronize
the autoAdjustGroupNodeBounds property of
the masterGroupedGraph with the client views. | FoldingManager | ||
| defaultExpandedPredicate : Function
Gets or sets the predicate function to use
by default to determine the expanded state
for the views that have been created with the default expanded predicate
function. | FoldingManager | ||
| dummyEdgeConverter : IDummyEdgeConverter
Gets or sets the IDummyEdgeConverter implementation that is used
to create/convert and modify the DummyEdgeId
inside the view instances. | FoldingManager | ||
| dummyNodeConverter : IDummyNodeConverter
The IDummyNodeConverter implementation that is used
to create/convert and modify the DummyNodeId
inside the view instances. | FoldingManager | ||
| masterGraph : IGraph [read-only]
Yields the master IGraph instance that holds the complete model in expanded group node state. | FoldingManager | ||
| masterGroupedGraph : IGroupedGraph [read-only]
Yields the master IGroupedGraph instance that models the fully expanded
grouped graph. | FoldingManager | ||
| masterHierarchy : INodeHierarchy [read-only]
Yields the master INodeIHierarchy instance that contains all nodes in the model, regardless of
their (view-local) collapsed state. | FoldingManager | ||
| views : Iterable [read-only]
Yields all currently known views that
are managed by this instance. | FoldingManager | ||
| Method | Defined By | ||
|---|---|---|---|
FoldingManager(masterGraph:IGraph = null)
Creates a manager instance for the given masterGraph to create views on top of it
that support folding operations. | FoldingManager | ||
Creates a separate view instance of the masterGraph which is a synchronized copy of a subset of the
items from the master graph. | FoldingManager | ||
edgeHasViewState(id:DummyEdgeId):Boolean
Determines whether for the given DummyEdgeId
this manager has stored associated view local state. | FoldingManager | ||
Returns a callback object that can be used to modify the appearance of a given dummy
edge without using a IFoldedGraph view. | FoldingManager | ||
Returns a callback object that can be used to modify the appearance of a given dummy
node without using a IFoldedGraph view. | FoldingManager | ||
Return a data container implementation that is not part of any actual IGraph
that describes the state of the edge for the given DummyEdgeId. | FoldingManager | ||
Provides access to the dummy state of a node for a specific view. | FoldingManager | ||
Provides access to the dummy state of a port for a specific view. | FoldingManager | ||
nodeHasViewState(id:DummyNodeId):Boolean
Determines whether for the given DummyNodeId
this manager has stored associated view local state. | FoldingManager | ||
portHasViewState(id:DummyNodePortId):Boolean
Determines whether for the given DummyNodePortId
this manager has stored associated view local state. | FoldingManager | ||
setDummyBendTagCore(bendId:BendId, newTag:Object):void | FoldingManager | ||
setDummyEdgeLabelTag(edgeLabelId:EdgeLabelId, newTag:Object, enqueueEdit:Boolean):void | FoldingManager | ||
setDummyEdgeLabelTagCore(edgeLabelId:EdgeLabelId, newTag:Object):void | FoldingManager | ||
setDummyEdgePortTag(portId:DummyEdgePortId, tag:Object, enqueueUnit:Boolean):void | FoldingManager | ||
setDummyEdgeTag(edgeId:DummyEdgeId, newTag:Object, enqueueEdit:Boolean):void | FoldingManager | ||
setDummyNodeLabelTag(nodeLabelId:NodeLabelId, newTag:Object, enqueueEdit:Boolean):void | FoldingManager | ||
setDummyNodeLabelTagCore(nodeLabelId:NodeLabelId, newTag:Object):void | FoldingManager | ||
setDummyNodePortTag(nodePortId:DummyNodePortId, tag:Object, enqueueUnit:Boolean):void | FoldingManager | ||
setInitiallyExpanded(groupNode:INode, expanded:Boolean):void
Allows for setting the expanded state
of a group node from the master graph that will be applied to the group nodes
in the default managed views the
next time it will become visible in those views. | FoldingManager | ||
| Method | Defined By | ||
|---|---|---|---|
isInitiallyExpanded(groupNode:INode):Boolean
Determines whether the given group node from the masterGraph
should be displayed in expanded state if it is included
in a managed view for the first time. | FoldingManager | ||
prepareFoldedGraph(foldedGraph:IFoldedGraph):void
Callback that can be overridden by subclasses to prepare the IFoldedGraph instance
right before it will be initialized with a copy of the elements in the initial graph. | FoldingManager | ||
| Constant | Defined By | ||
|---|---|---|---|
| defaultViewName : String = view [static] | FoldingManager | ||
| autoAdjustMasterGroupNodeBounds | property |
autoAdjustMasterGroupNodeBounds:Boolean
Gets or sets a property that determines whether the manager should synchronize
the autoAdjustGroupNodeBounds property of
the masterGroupedGraph with the client views.
IGroupedGraph. This property should be disabled to allow for modifying the contents of a collapsed group node without affecting the ancestor group nodes of nodes which would otherwise not be affected by that change.
The default value is adopted from the
initial setting of the autoAdjustGroupNodeBounds
property of the masterGroupedGraph. If the graph is created using
the FoldingManager() constructor, the initial value will be false.
public function get autoAdjustMasterGroupNodeBounds():Boolean public function set autoAdjustMasterGroupNodeBounds(value:Boolean):voidSee also
| defaultExpandedPredicate | property |
defaultExpandedPredicate:FunctionGets or sets the predicate function to use by default to determine the expanded state for the views that have been created with the default expanded predicate function.
The default value of this predicate is the isInitiallyExpanded() method
of this class.
public function get defaultExpandedPredicate():Function public function set defaultExpandedPredicate(value:Function):voidSee also
| dummyEdgeConverter | property |
dummyEdgeConverter:IDummyEdgeConverter
Gets or sets the IDummyEdgeConverter implementation that is used
to create/convert and modify the DummyEdgeId
inside the view instances.
The converter instance will be used to create the initial dummy edge appearance using
IDummyEdgeConverter#createDummyEdgeAppearance() and to change the
appearance using IDummyEdgeConverter#changeDummyEdgeAppearance()
as soon as they appear in a view.
public function get dummyEdgeConverter():IDummyEdgeConverter public function set dummyEdgeConverter(value:IDummyEdgeConverter):voidSee also
| dummyNodeConverter | property |
dummyNodeConverter:IDummyNodeConverter
The IDummyNodeConverter implementation that is used
to create/convert and modify the DummyNodeId
inside the view instances.
The converter instance will be used to create and convert the appearance of the collapsed dummy group nodes as soon as they appear in a view.
public function get dummyNodeConverter():IDummyNodeConverter public function set dummyNodeConverter(value:IDummyNodeConverter):voidSee also
| masterGraph | property |
masterGraph:IGraph [read-only]
Yields the master IGraph instance that holds the complete model in expanded group node state.
This graph contains all non-dummy edges and expanded group nodes, no dummy edges and no collapsed group nodes.
public function get masterGraph():IGraph| masterGroupedGraph | property |
masterGroupedGraph:IGroupedGraph [read-only]
Yields the master IGroupedGraph instance that models the fully expanded
grouped graph.
This is the instance that is associated with the masterGraph and the masterHierarchy.
public function get masterGroupedGraph():IGroupedGraph| masterHierarchy | property |
masterHierarchy:INodeHierarchy [read-only]
Yields the master INodeIHierarchy instance that contains all nodes in the model, regardless of
their (view-local) collapsed state.
This is the hierarchy that is associated with the IGroupedGraph that belongs to the
masterGraph.
public function get masterHierarchy():INodeHierarchy| viewId | property |
viewId:String [read-only] yworks_internal function get viewId():String| views | property |
views:Iterable [read-only] Yields all currently known views that are managed by this instance.
public function get views():IterableSee also
| FoldingManager | () | Constructor |
public function FoldingManager(masterGraph:IGraph = null)
Creates a manager instance for the given masterGraph to create views on top of it
that support folding operations.
Use createManagedView() to create a view that supports the
IFoldedGraph interface for displaying and working with a collapsible graph structure.
masterGraph:IGraph (default = null) — The graph to use as the masterGraph. This instance needs to support
the IGroupedGraph interface. If null, a default backing graph implementation
is used.
|
See also
| createManagedView | () | method |
public function createManagedView(root:INode = null, expandedPredicate:Function = null):IFoldedGraph
Creates a separate view instance of the masterGraph which is a synchronized copy of a subset of the
items from the master graph.
This method will create a new instance of an IGraph that is constructed as a synchronized copy of the masterGraph.
That instance can be obtained from the IFoldedGraph#graph property of the returned IFoldedGraph implementation.
The graph instance will provide the following instances in its lookup() mechanism:
IFoldedGraph: The instance of the IFoldedGraph interface that
can be used to gain access to this IFoldedGraph#manager and the folding operations.IGroupedGraph: An implementation of the IGroupedGraph interface that
can be used to modify and inspect the local INodeHierarchy in this view.masterGraph. However they share the same properties (IVisualStyle, ITagOwner#tag,
ILabelModelParameter, and INode.#layout).
For collapsed group nodes and edge representatives, there is a separate set of properties available for each possible state combination.
The getEdgeViewState() method for edges and the GetNodeViewState() method for nodes provide
access to that state while it is not being displayed in a view.
Parameters
root:INode (default = null) — A group node or the root of the masterHierarchy whose contents will be displayed in the view.
If no root node is provided, the root is set to the root in the masterHierarchy.
| |
expandedPredicate:Function (default = null) — A predicate function that can be provided to the view that will be used as a callback to determine the
initial expanded state of group nodes in the view.
If no expandedPredicate is provided, the value of the |
IFoldedGraph — A new graph instance that represents a synchronized view on the masterGraph.
|
See also
| edgeHasViewState | () | method |
public function edgeHasViewState(id:DummyEdgeId):Boolean
Determines whether for the given DummyEdgeId
this manager has stored associated view local state.
The manager does not necessarily have view local state for dummy elements if that
specific state has never been requested by a IFoldedGraph view because it has never been visualized.
This method indicates whether there is state information available for the given id.
Parameters
id:DummyEdgeId — The id for which state is requested.
|
Boolean — Whether getEdgeViewState( id ) would return existing state information.
|
See also
| getChangeDummyEdgeAppearanceCallback | () | method |
public function getChangeDummyEdgeAppearanceCallback(edgeId:DummyEdgeId):IChangeDummyEdgeAppearanceCallback
Returns a callback object that can be used to modify the appearance of a given dummy
edge without using a IFoldedGraph view.
This method can be used to modify the view state
state of a dummy edge, even if there is no view, that is currently displaying this edge.
The methods provided by the callback implementation will work on the given DummyEdgeId
and will affect all views that display that exact dummy edge.
Using the callback is the only way of modifying a dummy edge view state,
since the IEdge instance returned by getEdgeViewState() does not
belong to an accessible IGraph instance and thus cannot be modified otherwise.
Parameters
edgeId:DummyEdgeId — The id of the dummy edge to modify.
|
IChangeDummyEdgeAppearanceCallback — A callback implementation that can be used to modify the edge.
|
See also
| getChangeDummyNodeAppearanceCallback | () | method |
public function getChangeDummyNodeAppearanceCallback(nodeId:DummyNodeId):IChangeDummyNodeAppearanceCallback
Returns a callback object that can be used to modify the appearance of a given dummy
node without using a IFoldedGraph view.
This method can be used to modify the getNodeViewState()
state of a dummy node, even if there is no view, that is currently displaying this node.
The methods provided by the callback implementation will work on the given DummyNodeId
and will affect all views that display that exact dummy node.
Using the callback is the only way of modifying a getNodeViewState(),
since the INode instance returned by getNodeViewState() does not
belong to an accessible IGraph instance and thus cannot be modified otherwise.
Parameters
nodeId:DummyNodeId — The id of the dummy node to modify.
|
IChangeDummyNodeAppearanceCallback — A callback implementation that can be used to modify the node.
|
See also
| getEdgeViewState | () | method |
public function getEdgeViewState(edgeId:DummyEdgeId):IEdge
Return a data container implementation that is not part of any actual IGraph
that describes the state of the edge for the given DummyEdgeId.
This method can be used to query the state of an edge that is either not currently
visible in any views or connects to different
source and target nodes because of the collapse
states of the nodes and their parents in the view.
The state can only be modified using the callback provided by
getChangeDummyEdgeAppearanceCallback(dummyEdgeId) or by modifying the corresponding
item in a IFoldedGraph view.
Parameters
edgeId:DummyEdgeId — The id of the dummy edge for which the view state should be returned.
|
IEdge — An implementation of IEdge that can be used to query
all properties of the edge.
|
See also
| getNodeViewState | () | method |
public function getNodeViewState(nodeId:DummyNodeId):INodeProvides access to the dummy state of a node for a specific view.
This method can be used to query the collapsed state of a node in a specific view, even if there
is no such view currently present or the node is in fact expanded currently in that view.
Note that the instance returned is neither part of the masterGraph nor part
of any of the managed views. It serves as a data holder object only and the only way to modify it
is using the ChangeDummyNodeAppearanceCallback provided by
the getChangeDummyNodeAppearanceCallback() method or directly working
on the dummy node in a IFoldedGraph view.
Parameters
nodeId:DummyNodeId — The id for which the state should be returned.
|
INode — A state holder implementation of a node, which is not part of any graph and can
only be modified through the getChangeDummyNodeAppearanceCallback() function.
|
See also
| getPortViewState | () | method |
public function getPortViewState(nodePortId:DummyNodePortId):IPortProvides access to the dummy state of a port for a specific view.
This method can be used to query the state of a port at a collapsed node in a specific view, even if there
is no such view currently present or the port's node is in fact expanded currently in that view.
Note that the instance returned is neither part of the MasterGraph nor part
of any of the managed views. It serves as a data holder object only and the only way to modify it
is using
the IChangeDummyNodeAppearanceCallback provided by
the GetChangeDummyAppearanceCallback(DummyNodeId) method or directly working
on the dummy port in a IFoldedGraph view.
Parameters
nodePortId:DummyNodePortId — The id for which the state should be returned.
|
IPort — A state holder implementation of a port, which is not part of any graph and can
only be modified through the GetChangeDummyAppearanceCallback(DummyNodeId) method.
|
See also
| isInitiallyExpanded | () | method |
protected function isInitiallyExpanded(groupNode:INode):Boolean
Determines whether the given group node from the masterGraph
should be displayed in expanded state if it is included
in a managed view for the first time.
The createManagedView(INode) factory method
use the defaultExpandedPredicate function to determine the initial
expanded state of a group node. This method is the initial value of the predicate.
This simple implementation will yield true, unless setInitiallyExpanded
has been called before for the provided group node, in which case that specific value will be returned.
Parameters
groupNode:INode — The group node in the FoldingManager's masterHierarchy.
|
Boolean — true iff the node should be initially displayed in expanded state
in the view that queries the initial state.
|
See also
| nodeHasViewState | () | method |
public function nodeHasViewState(id:DummyNodeId):Boolean
Determines whether for the given DummyNodeId
this manager has stored associated view local state.
The manager does not necessarily have view local state for dummy elements if that
specific state has never been requested by a IFoldedGraph view because it has never been visualized.
This method indicates whether there is state information available for the given id.
Parameters
id:DummyNodeId — The id for which state is requested.
|
Boolean — Whether getNodeViewState( id ) would return existing state information.
|
See also
| portHasViewState | () | method |
public function portHasViewState(id:DummyNodePortId):Boolean
Determines whether for the given DummyNodePortId
this manager has stored associated view local state.
The manager does not necessarily have view local state for dummy elements if that
specific state has never been requested by a IFoldedGraph view because it has never been visualized.
This method indicates whether there is state information available for the given id.
Parameters
id:DummyNodePortId — The id for which state is requested.
|
Boolean — Whether getPortViewState( id ) would return existing state information.
|
See also
| prepareFoldedGraph | () | method |
protected function prepareFoldedGraph(foldedGraph:IFoldedGraph):void
Callback that can be overridden by subclasses to prepare the IFoldedGraph instance
right before it will be initialized with a copy of the elements in the initial graph.
Subclasses could override this method to register additional IMapper instances
with the graph instance or add IContextLookupChainLinks
via the ILookupDecorator of the IFoldedGraph#graph
to the instance if they are essential for the initial creation of the elements in the view instance.
Overriding methods should always consider to call the base class implementation, first.
Parameters
foldedGraph:IFoldedGraph — The graph view that has just been created but is still empty.
|
| setAutoAdjustGroupNodeBounds | () | method |
yworks_internal function setAutoAdjustGroupNodeBounds(value:Boolean):voidParameters
value:Boolean |
| setDummyBendTagCore | () | method |
public function setDummyBendTagCore(bendId:BendId, newTag:Object):voidParameters
bendId:BendId | |
newTag:Object |
| setDummyEdgeLabelTag | () | method |
public function setDummyEdgeLabelTag(edgeLabelId:EdgeLabelId, newTag:Object, enqueueEdit:Boolean):voidParameters
edgeLabelId:EdgeLabelId | |
newTag:Object | |
enqueueEdit:Boolean |
| setDummyEdgeLabelTagCore | () | method |
public function setDummyEdgeLabelTagCore(edgeLabelId:EdgeLabelId, newTag:Object):voidParameters
edgeLabelId:EdgeLabelId | |
newTag:Object |
| setDummyEdgePortTag | () | method |
public function setDummyEdgePortTag(portId:DummyEdgePortId, tag:Object, enqueueUnit:Boolean):voidParameters
portId:DummyEdgePortId | |
tag:Object | |
enqueueUnit:Boolean |
| setDummyEdgeTag | () | method |
public function setDummyEdgeTag(edgeId:DummyEdgeId, newTag:Object, enqueueEdit:Boolean):voidParameters
edgeId:DummyEdgeId | |
newTag:Object | |
enqueueEdit:Boolean |
| setDummyNodeLabelTag | () | method |
public function setDummyNodeLabelTag(nodeLabelId:NodeLabelId, newTag:Object, enqueueEdit:Boolean):voidParameters
nodeLabelId:NodeLabelId | |
newTag:Object | |
enqueueEdit:Boolean |
| setDummyNodeLabelTagCore | () | method |
public function setDummyNodeLabelTagCore(nodeLabelId:NodeLabelId, newTag:Object):voidParameters
nodeLabelId:NodeLabelId | |
newTag:Object |
| setDummyNodePortTag | () | method |
public function setDummyNodePortTag(nodePortId:DummyNodePortId, tag:Object, enqueueUnit:Boolean):voidParameters
nodePortId:DummyNodePortId | |
tag:Object | |
enqueueUnit:Boolean |
| setInitiallyExpanded | () | method |
public function setInitiallyExpanded(groupNode:INode, expanded:Boolean):voidAllows for setting the expanded state of a group node from the master graph that will be applied to the group nodes in the default managed views the next time it will become visible in those views.
The isInitiallyExpanded() function
will be used as the predicate in the createManagedView()
and factory method.
This method can be used to set the expanded state that is returned by
that method for the given groupNode.
Parameters
groupNode:INode — The group node in the masterHierarchy.
| |
expanded:Boolean — true iff the node should be displayed in expanded state
the next time it will become visible in the default views.
|
See also
| defaultViewName | Constant |
public static const defaultViewName:String = viewGraphCanvasComponent.
var graphCanvas = new GraphCanvasComponent();
graphCanvas.graph = new FoldingManager().createManagedView().graph;
graphCanvas.inputMode = new GraphEditorInputMode();
This class can be used to create managed views
of the masterGraph, where group nodes can appear as collapsed
group nodes with their contents hidden. Edges that connect to elements inside collapsed group nodes can be
configured to be represented by dummy edges in the
views. The process of converting one or more true edges from the masterGraph to zero or more dummy edges
can be customized, as well as the process of converting an expanded group node
to a collapsed group node.