org.eclipse.gef.mvc.fx.parts

## Interface IVisualPart<V extends 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 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 `IContentPart`s are bound to model elements, `IFeedbackPart`s and `IHandlePart`s 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 `IVisualPart`s located at arbitrary places within the hierarchy.

An `IVisualPart` is adaptable (`IAdaptable`). Usually, `IPolicy`s and `IBehavior`s are adapted to it (but arbitrary adapters may indeed be registered as needed). `IPolicy`s 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 `IGesture`s or other `IPolicy`s ( `IPolicy`s may delegate to other `IPolicy`s)). `IBehavior`s are used to react to changes of the attached model (in case of an `IContentPart`s), the viewer models, or others sources (e.g. adapters of the `IViewer` or `IDomain`), thereby reacting to changes of the interactive state.

`IVisualPart`s are `IActivatable` activatable, and an activation/deactivation of an `IVisualPart` will result in the activation/deactivation of all registered adapters (i.e. `IPolicy`s and `IBehavior`s).

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 Summary

All Methods Instance Methods Abstract Methods
`ReadOnlySetMultimapProperty<IVisualPart<? extends Node>,String>` `anchoragesUnmodifiable` Returns a read-only set-multimap property containing this part's anchorages and their corresponding roles.
`ReadOnlyMultisetProperty<IVisualPart<? extends Node>>` `anchoredsUnmodifiable` Returns an unmodifiable read-only multiset property representing the anchoreds of this `IVisualPart`.
`ReadOnlyListProperty<IVisualPart<? extends Node>>` `childrenUnmodifiable` Returns an unmodifiable read-only property containing the children of this `IVisualPart`.
`ReadOnlyObjectProperty<IVisualPart<? extends Node>>` `parent` Returns a read-only property that refers to the parent of this `IVisualPart`.
`BooleanProperty` `refreshVisual` A boolean property indicating whether this `IVisualPart` should refresh its visuals or not.

### Properties inherited from interface org.eclipse.gef.common.adapt.IAdaptable

`adapters`

### Properties inherited from interface org.eclipse.gef.common.adapt.IAdaptable.Bound

`adaptable`

### Properties inherited from interface org.eclipse.gef.common.activate.IActivatable

`active`

### Nested Class Summary

### Nested classes/interfaces inherited from interface org.eclipse.gef.common.adapt.IAdaptable

`IAdaptable.Bound<A extends IAdaptable>`

### Nested classes/interfaces inherited from interface org.eclipse.gef.common.adapt.IAdaptable.Bound

`IAdaptable.Bound.Impl<T extends IAdaptable>`

### Field Summary

Fields
`static String` `ANCHORAGES_PROPERTY` Name of the property storing this part's anchorages.
`static String` `ANCHOREDS_PROPERTY` Name of the property storing this part's anchoreds.
`static String` `CHILDREN_PROPERTY` Name of the property storing this part's children.
`static String` `PARENT_PROPERTY` Name of the property storing this part's parent.
`static String` `REFRESH_VISUAL_PROPERTY` Name of the property storing the refresh visual boolean property.

### Fields inherited from interface org.eclipse.gef.common.adapt.IAdaptable

`ADAPTERS_PROPERTY`

### Fields inherited from interface org.eclipse.gef.common.activate.IActivatable

`ACTIVE_PROPERTY`

### Method Summary

All Methods Instance Methods Abstract Methods Default Methods
`void` `addChild(IVisualPart<? extends Node> child)` Adds the given child to the list of this part's children.
`void` `addChild(IVisualPart<? extends Node> child, int index)` Adds the given child to the list of this part's children at the specified index.
`void` `addChildren(List<? extends IVisualPart<? extends Node>> children)` Adds the given children to the list of this part's children.
`void` `addChildren(List<? extends IVisualPart<? extends Node>> children, int index)` Adds the given children to the list of this part's children at the specified index.
`ReadOnlySetMultimapProperty<IVisualPart<? extends Node>,String>` `anchoragesUnmodifiableProperty()` Returns a read-only set-multimap property containing this part's anchorages and their corresponding roles.
`ReadOnlyMultisetProperty<IVisualPart<? extends Node>>` `anchoredsUnmodifiableProperty()` Returns an unmodifiable read-only multiset property representing the anchoreds of this `IVisualPart`.
`void` `attachAnchored(IVisualPart<? extends Node> anchored)` Used by an anchored `IVisualPart` to establish an anchorage-anchored relationship with this anchorage `IVisualPart`.
`void` `attachToAnchorage(IVisualPart<? extends Node> anchorage)` Attaches the given `IVisualPart` to the given anchorage under the "default" role.
`void` `attachToAnchorage(IVisualPart<? extends Node> anchorage, String role)` Attaches the given `IVisualPart` to the given anchorage under the given role.
`ReadOnlyListProperty<IVisualPart<? extends Node>>` `childrenUnmodifiableProperty()` Returns an unmodifiable read-only property containing the children of this `IVisualPart`.
`void` `detachAnchored(IVisualPart<? extends Node> anchored)` Used by an anchored `IVisualPart` to unestablish an anchorage-anchored relationship with this anchorage `IVisualPart`.
`void` `detachFromAnchorage(IVisualPart<? extends Node> anchorage)` Detaches this `IVisualPart` from the given anchorage `IVisualPart` under the 'default' role.
`void` `detachFromAnchorage(IVisualPart<? extends Node> anchorage, String role)` Detaches this `IVisualPart` from the given anchorage `IVisualPart` under the given role.
`ObservableSetMultimap<IVisualPart<? extends Node>,String>` `getAnchoragesUnmodifiable()` Returns an unmodifiable `ObservableSetMultimap` of this part's anchorages and their corresponding roles.
`ObservableMultiset<IVisualPart<? extends Node>>` `getAnchoredsUnmodifiable()` Returns an unmodifiable `ObservableMultiset` of this part's anchoreds.
`Map<AdapterKey<? extends IBehavior>,IBehavior>` `getBehaviors()` Returns a `Map` of this part's behaviors and their corresponding `AdapterKey`s.
`ObservableList<IVisualPart<? extends Node>>` `getChildrenUnmodifiable()` Returns an unmodifiable `ObservableList` of this part's children.
`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 `AdapterKey`s.
`IVisualPart<? extends Node>` `getParent()` Returns the parent of this part.
`Map<AdapterKey<? extends IPolicy>,IPolicy>` `getPolicies()` Returns a `Map` of this part's policies and their corresponding `AdapterKey`s.
`IRootPart<? extends Node>` `getRoot()` Returns the `IRootPart`.
`default IViewer` `getViewer()` Returns the `IViewer` this `IVisualPart` is bound to.
`V` `getVisual()` Returns this part's visual.
`boolean` `isRefreshVisual()` Returns `true` if this part is allowed to refresh its visualization based on its content.
`ReadOnlyObjectProperty<IVisualPart<? extends Node>>` `parentProperty()` Returns a read-only property that refers to the parent of this `IVisualPart`.
`void` `refreshVisual()` Refreshes this part's visualization based on this part's content.
`BooleanProperty` `refreshVisualProperty()` A boolean property indicating whether this `IVisualPart` should refresh its visuals or not.
`void` `removeChild(IVisualPart<? extends Node> child)` Removes the given `IVisualPart` from the list of this part's children.
`void` `removeChildren(List<? extends IVisualPart<? extends Node>> children)` Removes the given `IVisualPart`s from the list of this part's children.
`void` `reorderChild(IVisualPart<? extends Node> child, int index)` Swaps the given `IVisualPart` with the part at the given index position within this part's list of children.
`void` `setParent(IVisualPart<? extends Node> parent)` Used by a parent `IVisualPart` to establish/unestablish a parent-child relationship with this child `IVisualPart`.
`void` `setRefreshVisual(boolean refreshVisual)` Allows to temporarily turn `refreshVisual()` into a no-op operation.

### Methods inherited from interface org.eclipse.gef.common.adapt.IAdaptable

`adaptersProperty, getAdapter, getAdapter, getAdapter, getAdapterKey, getAdapters, getAdapters, getAdapters, setAdapter, setAdapter, setAdapter, setAdapter, unsetAdapter`

### Methods inherited from interface org.eclipse.gef.common.adapt.IAdaptable.Bound

`adaptableProperty, getAdaptable, setAdaptable`

### Methods inherited from interface org.eclipse.gef.common.activate.IActivatable

`activate, activeProperty, deactivate, isActive`

### Methods inherited from interface org.eclipse.gef.common.dispose.IDisposable

`dispose`

### Property Detail

#### anchoragesUnmodifiable

    ReadOnlySetMultimapProperty<IVisualPart<? extends Node>,String> anchoragesUnmodifiableProperty

Returns a read-only set-multimap property containing this part's anchorages and their corresponding roles.

See Also:
  `getAnchoragesUnmodifiable()`

#### anchoredsUnmodifiable

    ReadOnlyMultisetProperty<IVisualPart<? extends Node>> anchoredsUnmodifiableProperty

Returns an unmodifiable read-only multiset property representing the anchoreds of this `IVisualPart`.

See Also:
  `getAnchoredsUnmodifiable()`

#### childrenUnmodifiable

    ReadOnlyListProperty<IVisualPart<? extends Node>> childrenUnmodifiableProperty

Returns an unmodifiable read-only property containing the children of this `IVisualPart`.

See Also:
  `getChildrenUnmodifiable()`

#### parent

    ReadOnlyObjectProperty<IVisualPart<? extends Node>> parentProperty

Returns a read-only property that refers to the parent of this `IVisualPart`.

See Also:
  `getParent()`, `setParent(IVisualPart)`

#### refreshVisual

    BooleanProperty refreshVisualProperty

A boolean property indicating whether this `IVisualPart` should refresh its visuals or not.

See Also:
  `isRefreshVisual()`, `setRefreshVisual(boolean)`

### Field Detail

#### PARENT_PROPERTY

    static final String PARENT_PROPERTY

Name of the property storing this part's parent.

See Also:
  Constant Field Values

#### CHILDREN_PROPERTY

    static final String CHILDREN_PROPERTY

Name of the property storing this part's children.

See Also:
  Constant Field Values

#### ANCHORAGES_PROPERTY

    static final String ANCHORAGES_PROPERTY

Name of the property storing this part's anchorages.

See Also:
  Constant Field Values

#### ANCHOREDS_PROPERTY

    static final String ANCHOREDS_PROPERTY

Name of the property storing this part's anchoreds.

See Also:
  Constant Field Values

#### REFRESH_VISUAL_PROPERTY

    static final String REFRESH_VISUAL_PROPERTY

Name of the property storing the refresh visual boolean property.

See Also:
  Constant Field Values

### Method Detail

#### addChild

    void addChild(IVisualPart<? extends 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 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 Node>> children)

Adds the given children to the list of this part's children.

Parameters:
  `children` - The `IVisualPart`s which are added to the list of this part's children.

#### addChildren

    void addChildren(List<? extends IVisualPart<? extends Node>> children,
                     int index)

Adds the given children to the list of this part's children at the specified index.

Parameters:
  `children` - The `IVisualPart`s which are added to the list of this part's children.
  `index` - The index at which the given `IVisualPart`s are inserted into this part's children list.

#### anchoragesUnmodifiableProperty

    ReadOnlySetMultimapProperty<IVisualPart<? extends Node>,String> anchoragesUnmodifiableProperty()

Returns a read-only set-multimap property containing this part's anchorages and their corresponding roles.

See Also:
  `getAnchoragesUnmodifiable()`

#### anchoredsUnmodifiableProperty

    ReadOnlyMultisetProperty<IVisualPart<? extends Node>> anchoredsUnmodifiableProperty()

Returns an unmodifiable read-only multiset property representing the anchoreds of this `IVisualPart`.

See Also:
  `getAnchoredsUnmodifiable()`

#### attachAnchored

    void attachAnchored(IVisualPart<? extends 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 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 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

    ReadOnlyListProperty<IVisualPart<? extends Node>> childrenUnmodifiableProperty()

Returns an unmodifiable read-only property containing the children of this `IVisualPart`.

See Also:
  `getChildrenUnmodifiable()`

#### detachAnchored

    void detachAnchored(IVisualPart<? extends 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 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 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 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 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 `AdapterKey`s.

Returns:
  A `Map` of this part's behaviors and their corresponding `AdapterKey`s.

#### getChildrenUnmodifiable

    ObservableList<IVisualPart<? extends 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 `AdapterKey`s.

Returns:
  A `Map` of this part's handlers and their corresponding `AdapterKey`s.

#### getParent

    IVisualPart<? extends 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 `AdapterKey`s.

Returns:
  A `Map` of this part's policies and their corresponding `AdapterKey`s.

#### getRoot

    IRootPart<? extends 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

    ReadOnlyObjectProperty<IVisualPart<? extends Node>> parentProperty()

Returns a read-only property that refers to the parent of this `IVisualPart`.

See Also:
  `getParent()`, `setParent(IVisualPart)`

#### refreshVisual

    void refreshVisual()

Refreshes this part's visualization based on this part's content.

#### refreshVisualProperty

    BooleanProperty refreshVisualProperty()

A boolean property indicating whether this `IVisualPart` should refresh its visuals or not.

See Also:
  `isRefreshVisual()`, `setRefreshVisual(boolean)`

#### removeChild

    void removeChild(IVisualPart<? extends 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 Node>> children)

Removes the given `IVisualPart`s from the list of this part's children.

Parameters:
  `children` - The `IVisualPart`s which are removed from the list of this part's children.

#### reorderChild

    void reorderChild(IVisualPart<? extends 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 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 `IContentPart`s) while interacting with the `IVisualPart`.

Parameters:
  `refreshVisual` - Whether `refreshVisual()` should perform updates of the visual (`true`) or behave like a no-op operation ( `false`).