Reacting to Graph Changes
IGraph provides a comprehensive set of events for both structural changes of the graph (such as node creation or deletion) and for visual changes (such as changes to style, position, or size).
IGraph dispatches events upon every change, whether it’s user-driven or programmatically initiated. This includes events dispatched during loading (when many elements are being created), during undo and redo actions, and during automatic layout. Listening for events dispatched by IGraph may result in a large number of events that a developer might not be interested in.
It is strongly discouraged to make any changes (e.g. move or remove elements) to the graph structure in handlers to these events. It is possible that the graph is not yet in a defined state at the time these events are raised. This might result in exceptions which can be hard to predict. This holds especially if folding is enabled.
It is strongly discouraged to make any changes to the graph structure (e.g., moving or removing elements) within the event handlers for these events. The graph might not be in a defined state when these events are raised, which can result in unpredictable exceptions. This is especially true if folding is enabled.
Reacting to Element Creation
These events are dispatched after the element has been created. When the event is dispatched, the element is a valid element of the graph.
- node-created
- Dispatched after a node has been created. The newly created node can be retrieved from the argument’s item property.
- edge-created
- Dispatched after an edge has been created. The newly created edge can be retrieved from the argument’s item property.
- bend-added
- Dispatched after a bend has been created. The newly created bend can be retrieved from the argument’s item property.
- label-added
- Dispatched after a label has been created. The newly created label can be retrieved from the argument’s item property.
- port-added
- Dispatched after a port has been created. The newly created port can be retrieved from the argument’s item property.
Reacting to Element Removal
These events are dispatched after the element has been removed. At the time the event is dispatched, the element is no longer part of the graph and has no reference to its former owner, source, or target port (if applicable). The event arguments, however, provide this information.
- node-removed
- Dispatched after a node has been removed. The removed node can be retrieved from the argument’s item property. Its former grouping states can be retrieved from the parent and isGroupNode properties.
- edge-removed
- Dispatched after an edge has been removed. The removed edge can be retrieved from the argument’s item property. Its former source and target ports and port owners can be retrieved from the sourcePort, targetPort, sourcePortOwner, and targetPortOwner properties, respectively.
- bend-removed
- Dispatched after a bend has been removed. The removed bend can be retrieved from the argument’s item property. Its former owner and index in the owner’s bends collection can be retrieved from the owner and index properties, respectively.
- label-removed
- Dispatched after a label has been removed. The removed label can be retrieved from the argument’s item property. Its former owner can be retrieved from the owner property.
- port-removed
- Dispatched after a port has been removed. The removed port can be retrieved from the argument’s item property. Its former owner can be retrieved from the owner property.
Reacting to Other Structural Changes
- edge-ports-changed
- Dispatched after the source and/or target port of an edge has been changed. The changed edge can be retrieved from the argument’s item property. Its former source and target ports and port owners can be retrieved from the sourcePort, targetPort, sourcePortOwner, and targetPortOwner properties, respectively.
Reacting to Tag Changes
- node-tag-changed
- Dispatched after a node’s tag has been changed.
- edge-tag-changed
- Dispatched after an edge’s tag has been changed.
- bend-tag-changed
- Dispatched after a bend’s tag has been changed.
- label-tag-changed
- Dispatched after a label’s tag has been changed.
- port-tag-changed
- Dispatched after a port’s tag has been changed.
- graph-tag-changed
- Dispatched after the graph’s tag has been changed.
Reacting to Layout and Geometry Changes
- node-layout-changed
- Dispatched after a node’s layout has been changed.
- bend-location-changed
- Dispatched after a bend’s location has been changed.
- label-layout-parameter-changed
- Dispatched after a label’s layout model parameter has changed.
- port-location-parameter-changed
- Dispatched after a port’s location model parameter has changed.
Reacting to Other Property Changes
- node-style-changed
- Dispatched after a node’s style is changed.
- edge-style-changed
- Dispatched after an edge’s style is changed.
- label-style-changed
- Dispatched after a label’s style is changed.
- label-text-changed
- Dispatched after a label’s text is changed.
- label-preferred-size-changed
- Dispatched after the preferred size of a label is changed.
- port-style-changed
- Dispatched after a port’s style is changed.