Interface IVisualPart<V extends javafx.scene.Node>

Type Parameters:
V - The visual node used by this IVisualPart.
All Superinterfaces:
IActivatable, IAdaptable, IAdaptable.Bound<IViewer>, IDisposable
All Known Subinterfaces:
IBendableContentPart<V>, IContentPart<V>, IFeedbackPart<V>, IHandlePart<V>, IResizableContentPart<V>, IRootPart<V>, ITransformableContentPart<V>
All Known Implementing Classes:
AbstractContentPart, AbstractFeedbackPart, AbstractHandlePart, AbstractSegmentHandlePart, AbstractVisualPart, CircleSegmentHandlePart, FocusFeedbackPart, HoverFeedbackPart, LayeredRootPart, RectangleSegmentHandlePart, SelectionFeedbackPart, SelectionLinkFeedbackPart, SnappingFeedbackPart, SquareSegmentHandlePart

public interface IVisualPart<V extends javafx.scene.Node> extends IAdaptable, IAdaptable.Bound<IViewer>, IActivatable, IDisposable
An IVisualPart plays the controller role in the model-view-controller architecture. While it does not have to be bound to a model (actually only IContentParts are bound to model elements, IFeedbackParts and IHandleParts do not refer to model elements), an IVisualPart always controls a visual.

Within an IViewer, IVisualPart are organized in a hierarchy via a [1:n] parent-children relationship (getParent(), getChildrenUnmodifiable()), which roots in an IRootPart. Furthermore a [n:m] anchorage-anchored relationship ( getAnchoragesUnmodifiable() , getAnchoredsUnmodifiable()) may be established between IVisualParts located at arbitrary places within the hierarchy.

An IVisualPart is adaptable (IAdaptable). Usually, IPolicys and IBehaviors are adapted to it (but arbitrary adapters may indeed be registered as needed). IPolicys are usually required in case the IVisualPart is directly involved in user interaction (e.g. the user clicks on its controlled visual). They may be accessed type-safe by IGestures or other IPolicys ( IPolicys may delegate to other IPolicys)). IBehaviors are used to react to changes of the attached model (in case of an IContentParts), the viewer models, or others sources (e.g. adapters of the IViewer or IDomain), thereby reacting to changes of the interactive state.

IVisualParts are IActivatable activatable, and an activation/deactivation of an IVisualPart will result in the activation/deactivation of all registered adapters (i.e. IPolicys and IBehaviors).

An IVisualPart is responsible for registering itself for its visualization at the IViewer.getVisualPartMap() when it obtains a link to the IViewer. Equally, an IVisualPart is responsible for unregistering itself for its visualization from the IViewer.getVisualPartMap() when it loses a link to the IViewer.

Noimplement:
This interface is not intended to be implemented by clients. Instead, AbstractVisualPart should be subclassed.
  • Property Details

  • Field Details

    • PARENT_PROPERTY

      static final String PARENT_PROPERTY
      Name of the property storing this part's parent.
      See Also:
    • CHILDREN_PROPERTY

      static final String CHILDREN_PROPERTY
      Name of the property storing this part's children.
      See Also:
    • ANCHORAGES_PROPERTY

      static final String ANCHORAGES_PROPERTY
      Name of the property storing this part's anchorages.
      See Also:
    • ANCHOREDS_PROPERTY

      static final String ANCHOREDS_PROPERTY
      Name of the property storing this part's anchoreds.
      See Also:
    • REFRESH_VISUAL_PROPERTY

      static final String REFRESH_VISUAL_PROPERTY
      Name of the property storing the refresh visual boolean property.
      See Also:
  • Method Details

    • addChild

      void addChild(IVisualPart<? extends javafx.scene.Node> child)
      Adds the given child to the list of this part's children.
      Parameters:
      child - The IVisualPart which is added to the list of this part's children.
    • addChild

      void addChild(IVisualPart<? extends javafx.scene.Node> child, int index)
      Adds the given child to the list of this part's children at the specified index.
      Parameters:
      child - The IVisualPart which is added to the list of this part's children.
      index - The index at which the given IVisualPart is inserted into this part's children list.
    • addChildren

      void addChildren(List<? extends IVisualPart<? extends javafx.scene.Node>> children)
      Adds the given children to the list of this part's children.
      Parameters:
      children - The IVisualParts which are added to the list of this part's children.
    • addChildren

      void addChildren(List<? extends IVisualPart<? extends javafx.scene.Node>> children, int index)
      Adds the given children to the list of this part's children at the specified index.
      Parameters:
      children - The IVisualParts which are added to the list of this part's children.
      index - The index at which the given IVisualParts are inserted into this part's children list.
    • anchoragesUnmodifiableProperty

      ReadOnlySetMultimapProperty<IVisualPart<? extends javafx.scene.Node>,String> anchoragesUnmodifiableProperty()
      Returns a read-only set-multimap property containing this part's anchorages and their corresponding roles.
      See Also:
    • anchoredsUnmodifiableProperty

      ReadOnlyMultisetProperty<IVisualPart<? extends javafx.scene.Node>> anchoredsUnmodifiableProperty()
      Returns an unmodifiable read-only multiset property representing the anchoreds of this IVisualPart.
      See Also:
    • attachAnchored

      void attachAnchored(IVisualPart<? extends javafx.scene.Node> anchored)
      Used by an anchored IVisualPart to establish an anchorage-anchored relationship with this anchorage IVisualPart.

      Clients should never call this operation directly but instead add the anchorage to its anchored via the attachToAnchorage(IVisualPart) and attachToAnchorage(IVisualPart, String) operations, which will indirectly lead to a call here.

      Parameters:
      anchored - An IVisualPart to attach to this anchorage IVisualPart as anchored.
      Noreference:
      Clients should call attachToAnchorage(IVisualPart), attachToAnchorage(IVisualPart, String) instead to establish an anchored-anchorage relationship.
    • attachToAnchorage

      void attachToAnchorage(IVisualPart<? extends javafx.scene.Node> anchorage)
      Attaches the given IVisualPart to the given anchorage under the "default" role.
      Parameters:
      anchorage - The anchorage IVisualPart to attach this part to.
    • attachToAnchorage

      void attachToAnchorage(IVisualPart<? extends javafx.scene.Node> anchorage, String role)
      Attaches the given IVisualPart to the given anchorage under the given role.
      Parameters:
      anchorage - The anchorage IVisualPart to attach this part to.
      role - The role under which this IVisualPart is attached to the given anchorage. null.
    • childrenUnmodifiableProperty

      javafx.beans.property.ReadOnlyListProperty<IVisualPart<? extends javafx.scene.Node>> childrenUnmodifiableProperty()
      Returns an unmodifiable read-only property containing the children of this IVisualPart.
      See Also:
    • detachAnchored

      void detachAnchored(IVisualPart<? extends javafx.scene.Node> anchored)
      Used by an anchored IVisualPart to unestablish an anchorage-anchored relationship with this anchorage IVisualPart.

      Clients should never call this operation directly but instead remove the anchorage from its anchored via the detachFromAnchorage(IVisualPart) or detachFromAnchorage(IVisualPart, String) operations, which will indirectly lead to a call here.

      Parameters:
      anchored - An IVisualPart (currently attached as anchored to this anchorage IVisualPart) to detach from this anchorage IVisualPart as anchored.
      Noreference:
      Clients should call detachFromAnchorage(IVisualPart) or detachFromAnchorage(IVisualPart, String) instead to unestablish an anchored-anchorage relationship.
    • detachFromAnchorage

      void detachFromAnchorage(IVisualPart<? extends javafx.scene.Node> anchorage)
      Detaches this IVisualPart from the given anchorage IVisualPart under the 'default' role.
      Parameters:
      anchorage - The anchorage IVisualPart to detach this part from.
    • detachFromAnchorage

      void detachFromAnchorage(IVisualPart<? extends javafx.scene.Node> anchorage, String role)
      Detaches this IVisualPart from the given anchorage IVisualPart under the given role.
      Parameters:
      anchorage - The anchorage IVisualPart to detach this part from.
      role - The role under which the IVisualPart can be found in this part's anchorages.
    • getAnchoragesUnmodifiable

      ObservableSetMultimap<IVisualPart<? extends javafx.scene.Node>,String> getAnchoragesUnmodifiable()
      Returns an unmodifiable ObservableSetMultimap of this part's anchorages and their corresponding roles.
      Returns:
      A ObservableSetMultimap of this part's anchorages and their corresponding roles.
    • getAnchoredsUnmodifiable

      ObservableMultiset<IVisualPart<? extends javafx.scene.Node>> getAnchoredsUnmodifiable()
      Returns an unmodifiable ObservableMultiset of this part's anchoreds.
      Returns:
      An unmodifiable ObservableMultiset of this part's anchoreds.
    • getBehaviors

      Map<AdapterKey<? extends IBehavior>,IBehavior> getBehaviors()
      Returns a Map of this part's behaviors and their corresponding AdapterKeys.
      Returns:
      A Map of this part's behaviors and their corresponding AdapterKeys.
    • getChildrenUnmodifiable

      javafx.collections.ObservableList<IVisualPart<? extends javafx.scene.Node>> getChildrenUnmodifiable()
      Returns an unmodifiable ObservableList of this part's children.
      Returns:
      A ObservableList of this part's children.
    • getHandlers

      Map<AdapterKey<? extends org.eclipse.gef.mvc.fx.handlers.IHandler>,org.eclipse.gef.mvc.fx.handlers.IHandler> getHandlers()
      Returns a Map of this part's handlers and their corresponding AdapterKeys.
      Returns:
      A Map of this part's handlers and their corresponding AdapterKeys.
    • getParent

      IVisualPart<? extends javafx.scene.Node> getParent()
      Returns the parent of this part.
      Returns:
      The parent of this part.
    • getPolicies

      Map<AdapterKey<? extends IPolicy>,IPolicy> getPolicies()
      Returns a Map of this part's policies and their corresponding AdapterKeys.
      Returns:
      A Map of this part's policies and their corresponding AdapterKeys.
    • getRoot

      IRootPart<? extends javafx.scene.Node> getRoot()
      Returns the IRootPart. This method should only be called internally or by helpers such as edit policies. The root can be used to get the viewer.
      Returns:
      null or the IRootPart
    • getViewer

      default IViewer getViewer()
      Returns the IViewer this IVisualPart is bound to.
      Returns:
      The IViewer this IVisualPart is attached to.
    • getVisual

      V getVisual()
      Returns this part's visual.
      Returns:
      This part's visual.
    • isRefreshVisual

      boolean isRefreshVisual()
      Returns true if this part is allowed to refresh its visualization based on its content. Otherwise returns false.
      Returns:
      true if this part is allowed to refresh its visualization based on its content, otherwise false.
    • parentProperty

      javafx.beans.property.ReadOnlyObjectProperty<IVisualPart<? extends javafx.scene.Node>> parentProperty()
      Returns a read-only property that refers to the parent of this IVisualPart.
      See Also:
    • refreshVisual

      void refreshVisual()
      Refreshes this part's visualization based on this part's content.
    • refreshVisualProperty

      javafx.beans.property.BooleanProperty refreshVisualProperty()
      A boolean property indicating whether this IVisualPart should refresh its visuals or not.
      See Also:
    • removeChild

      void removeChild(IVisualPart<? extends javafx.scene.Node> child)
      Removes the given IVisualPart from the list of this part's children.
      Parameters:
      child - The IVisualPart which is removed from the list of this part's children.
    • removeChildren

      void removeChildren(List<? extends IVisualPart<? extends javafx.scene.Node>> children)
      Removes the given IVisualParts from the list of this part's children.
      Parameters:
      children - The IVisualParts which are removed from the list of this part's children.
    • reorderChild

      void reorderChild(IVisualPart<? extends javafx.scene.Node> child, int index)
      Swaps the given IVisualPart with the part at the given index position within this part's list of children.
      Parameters:
      child - The IVisualPart which is reordered.
      index - The index to which the part is reordered.
    • setParent

      void setParent(IVisualPart<? extends javafx.scene.Node> parent)
      Used by a parent IVisualPart to establish/unestablish a parent-child relationship with this child IVisualPart.

      Clients should never call this operation directly but instead add the children to its parent via the addChild(IVisualPart), addChild(IVisualPart, int), addChildren(List), or addChildren(List, int) or remove it via the removeChild(IVisualPart) or removeChildren(List) operations, which will indirectly lead to a call here.

      Parameters:
      parent - The new parent IVisualPart or null.
      Noreference:
      Clients should use addChild(IVisualPart), addChild(IVisualPart, int), addChildren(List), addChildren(List, int), removeChild(IVisualPart), or removeChildren(List) to establish/unestablish a parent-child relationship instead.
    • setRefreshVisual

      void setRefreshVisual(boolean refreshVisual)
      Allows to temporarily turn refreshVisual() into a no-op operation. This may for instance be used to disable visual updates that are initiated by the model (in case of IContentParts) while interacting with the IVisualPart.
      Parameters:
      refreshVisual - Whether refreshVisual() should perform updates of the visual (true) or behave like a no-op operation ( false).