Helps in decorating the lookup method of IPort instances by providing access to decorators for the most common types.
Remarks
Predefined LookupDecorator<TDecoratedType,TInterface> are made available through properties like e.g. highlightDecorator. Note that the list of possible decorations that are available using this class is not exhaustive in any way. This is merely a way to provide access to those interfaces that are more commonly being decorated by the developer.
Typically, a configured instance of this class is available through portDecorator on the GraphDecorator which is returned by decorator on an IGraph.
This decorator can be used to conveniently decorate the lookup of IPorts in an IGraph. It serves as a factory for predefined LookupDecorator<TDecoratedType,TInterface> instances that are specifically useful for the IPort type.
Examples
The port can be decorated in various ways. setImplementation decorates the port's lookup to return the same instance for each port.
graph.decorator.portDecorator.handleProviderDecorator.setImplementation(
new ConstantHandleProvider()
)
setImplementation with a predicate decorates the port's lookup only to return the same instance for each port for which the predicate returns true
.
graph.decorator.portDecorator.handleProviderDecorator.setImplementation(
(port) => port.tag !== null,
new ConstantHandleProvider()
)
setFactory calls the provided factory method to return a new instance of the queried type created for the given port or for ports for which the predicate returns true
, respectively:
graph.decorator.portDecorator.handleProviderDecorator.setFactory(
(port) => new CustomHandleProvider(port)
)
graph.decorator.portDecorator.handleProviderDecorator.setFactory(
(port) => port.tag !== null,
(port) => new CustomHandleProvider(port)
)
setImplementationWrapper calls the provided factory method to return a new instance of the queried type which wraps the default implementation, once for all ports and once only for ports for which the predicate returns true
.
graph.decorator.portDecorator.handleProviderDecorator.setImplementationWrapper(
(port, original) => new HandleProviderWrapper(port, original)
)
graph.decorator.portDecorator.handleProviderDecorator.setImplementationWrapper(
(port) => port.tag !== null,
(port, original) => new HandleProviderWrapper(port, original)
)
graph.decorator.portDecorator.handleProviderDecorator.setImplementationWrapper(
(port, original) => new HandleProviderWrapper(port!, original)
)
graph.decorator.portDecorator.handleProviderDecorator.setImplementationWrapper(
(port) => port.tag !== null,
(port, original) => new HandleProviderWrapper(port!, original)
)
Finally hideImplementation hides the default implementation by letting the lookup always return null
for all ports and for ports for which the predicate returns true
, respectively
graph.decorator.portDecorator.handleProviderDecorator.hideImplementation()
graph.decorator.portDecorator.handleProviderDecorator.hideImplementation(
(port) => port.tag !== null
)
Each of these methods returns a IContextLookupChainLink which can be used to remove the modified behavior again:
/**
* @param {!IGraph} graph
*/
registerLookup(graph) {
this.chainLink =
graph.decorator.portDecorator.handleProviderDecorator.setFactory(
(port) => new CustomHandleProvider(port)
)
}
/**
* @param {!IGraph} graph
*/
deregisterLookup(graph) {
graph.decorator.portDecorator.remove(this.chainLink)
}
registerLookup(graph: IGraph): void {
this.chainLink =
graph.decorator.portDecorator.handleProviderDecorator.setFactory(
(port) => new CustomHandleProvider(port)
)!
}
deregisterLookup(graph: IGraph): void {
graph.decorator.portDecorator.remove(this.chainLink)
}
Type Details
- yfiles module
- view-component
- yfiles-umd modules
- All view modules
- Legacy UMD name
- yfiles.graph.PortDecorator
See Also
Constructors
Initializes a new instance of the PortDecorator class.
Parameters
A map of options to pass to the method.
- decorator - ILookupDecorator
- The decorator to use, which can be
null
.
Properties
Gets a LookupDecorator<TDecoratedType,TInterface> that decorates the IClipboardHelper type for IPorts this instance has been created for.
Remarks
Gets a LookupDecorator<TDecoratedType,TInterface> that decorates the IEdgePathCropper type for IPorts this instance has been created for.
Remarks
Gets a LookupDecorator<TDecoratedType,TInterface> that decorates the IFocusIndicatorInstaller type for IPorts this instance has been created for.
Remarks
Gets a LookupDecorator<TDecoratedType,TInterface> that decorates the IHandle type for IPorts this instance has been created for.
Remarks
Custom IHandle implementations can be used to change the way the user can drag a IPort interactively to change its position in a GraphComponent. This interface is mainly used by the HandleInputMode in GraphEditorInputMode which obtains the IHandle from the IPort by querying the IHandleProvider from it, which in turn will query the IHandle from itself. Alternatively, selected nodes can put the IHandle of their ports into their IHandleProvider implementation. This is a convenient alternative to the direct usage of the ILookupDecorator that is provided by the IGraph's lookup.
When the decorated IHandle is sometimes present, and sometimes not, a call to requeryHandles may be necessary to refresh the displayed handles.
Gets a LookupDecorator<TDecoratedType,TInterface> that decorates the IHandleProvider type for IPorts this instance has been created for.
Remarks
Custom IHandleProvider implementations provide interactive draggable handles for the user to change the geometry or other aspects of IPorts in the GraphComponent. This interface is mainly used by the HandleInputMode in the GraphEditorInputMode. This is a convenient alternative to the direct usage of the ILookupDecorator that is provided by the IGraph's lookup.
When the decorated IHandleProvider provides a set of handles that may change over time, a call to requeryHandles may be necessary to refresh the displayed handles.
Gets a LookupDecorator<TDecoratedType,TInterface> that decorates the IHighlightIndicatorInstaller type for IPorts this instance has been created for.
Remarks
Gets a LookupDecorator<TDecoratedType,TInterface> that decorates the ILassoTestable type for IPorts this instance has been created for.
Remarks
Gets a LookupDecorator<TDecoratedType,TInterface> that decorates the IMarqueeTestable type for IPorts this instance has been created for.
Remarks
Gets a LookupDecorator<TDecoratedType,TInterface> that decorates the IMementoSupport type for IPorts this instance has been created for.
Remarks
Gets a LookupDecorator<TDecoratedType,TInterface> that decorates the IObstacleProvider type for IPorts this instance has been created for.
Remarks
See Also
Gets a LookupDecorator<TDecoratedType,TInterface> that decorates the IPortSnapResultProvider type for IPorts this instance has been created for.
Remarks
Gets a LookupDecorator<TDecoratedType,TInterface> that decorates the IPositionHandler type for IPorts this instance has been created for.
Remarks
Gets a LookupDecorator<TDecoratedType,TInterface> that decorates the ISelectionIndicatorInstaller type for IPorts this instance has been created for.
Remarks
Gets a LookupDecorator<TDecoratedType,TInterface> that decorates the ISnapLineProvider type for IPorts this instance has been created for.
Remarks
Methods
getDecoratorFor
<TInterface>(type: Class, decorateNulls?: boolean, nullIsFallback?: boolean) : LookupDecorator<IPort,TInterface>Creates a LookupDecorator<TDecoratedType,TInterface> for IPorts that can be used to decorate TInterface
types of the ports.
Type Parameters
- TInterface
- The type of the interface that should be decorated of the instances'
.
Parameters
A map of options to pass to the method.
- type - Class
- The type of the interface that should be decorated of the instances' lookup.
- decorateNulls - boolean
- if set to
true
null
values will be decorated, otherwise not. - nullIsFallback - boolean
- if set to
true
null
values will be treated as fallback values, otherwise they will be used as the final result.
Returns
- ↪LookupDecorator<IPort,TInterface>
- A new LookupDecorator<TDecoratedType,TInterface> for the specified interface.
$class
property on JavaScript classes inheriting from yFiles classes is only valid once an instance of this subclass was created. Call fixType, first or instantiate the class at least once.Removes an IContextLookupChainLink again that has been added by one of the various decorators for ports.
Parameters
A map of options to pass to the method.
- lookup - IContextLookupChainLink
- The lookup chain link to remove.
Examples
/**
* @param {!IGraph} graph
*/
registerLookup(graph) {
this.chainLink =
graph.decorator.portDecorator.handleProviderDecorator.setFactory(
(port) => new CustomHandleProvider(port)
)
}
/**
* @param {!IGraph} graph
*/
deregisterLookup(graph) {
graph.decorator.portDecorator.remove(this.chainLink)
}
registerLookup(graph: IGraph): void {
this.chainLink =
graph.decorator.portDecorator.handleProviderDecorator.setFactory(
(port) => new CustomHandleProvider(port)
)!
}
deregisterLookup(graph: IGraph): void {
graph.decorator.portDecorator.remove(this.chainLink)
}