public abstract class AbstractAnchor extends java.lang.Object implements IAnchor
AbstractAnchor
is the abstract base implementation for
IAnchor
s. It provides the facility to bind an anchor to an anchorage
Node
(anchorageProperty()
), to attach and detach
Node
s via AnchorKey
s, and to provide positions (
positionsUnmodifiableProperty()
) for the attached AnchorKey
s.
It also registers the necessary listeners at the anchorage Node
and
the attached Node
s as well as relevant ancestor Node
s, to
trigger the (re-)computation of positions.
The actual computation of positions for attached nodes is delegated to
computePosition(AnchorKey)
, thus left to subclasses. If a subclass
needs additional information to compute positions for attached
AnchorKey
s, it may request that an IAdaptable
info gets
passed into attach(AnchorKey)
and detach(AnchorKey)
, and
may overwrite both methods to get access to it.
Type | Property and Description |
---|---|
javafx.beans.property.ReadOnlyObjectProperty<javafx.scene.Node> |
anchorage
Provides a read-only property with the anchorage
Node this
IAnchor is bound to. |
javafx.beans.property.ReadOnlyMapProperty<AnchorKey,Point> |
positionsUnmodifiable
Provides a read-only (map) property with positions (in local coordinates
of the anchored
Node s) for all attached AnchorKey s. |
Constructor and Description |
---|
AbstractAnchor(javafx.scene.Node anchorage)
Creates a new
AbstractAnchor for the given anchorage
Node . |
Modifier and Type | Method and Description |
---|---|
javafx.beans.property.ReadOnlyObjectProperty<javafx.scene.Node> |
anchorageProperty()
Provides a read-only property with the anchorage
Node this
IAnchor is bound to. |
void |
attach(AnchorKey key)
|
protected abstract Point |
computePosition(AnchorKey key)
Recomputes the position for the given attached
AnchorKey by
delegating to the respective IComputationStrategy . |
void |
detach(AnchorKey key)
|
javafx.scene.Node |
getAnchorage()
Gets the value of the property anchorage.
|
protected java.util.Set<AnchorKey> |
getKeys()
Returns all keys maintained by this anchor.
|
protected SetMultimap<javafx.scene.Node,AnchorKey> |
getKeysByNode()
|
Point |
getPosition(AnchorKey key)
Provides a position for the given
AnchorKey . |
javafx.collections.ObservableMap<AnchorKey,Point> |
getPositionsUnmodifiable()
Gets the value of the property positionsUnmodifiable.
|
boolean |
isAttached(AnchorKey key)
|
javafx.beans.property.ReadOnlyMapProperty<AnchorKey,Point> |
positionsUnmodifiableProperty()
Provides a read-only (map) property with positions (in local coordinates
of the anchored
Node s) for all attached AnchorKey s. |
protected void |
registerVCL(javafx.scene.Node anchored)
Registers a
VisualChangeListener for the given anchored
Node . |
protected void |
registerVCLs()
Registers
VisualChangeListener s for all anchored Node s,
or schedules their registration if the VCL cannot be registered yet. |
protected void |
setAnchorage(javafx.scene.Node anchorage)
Sets the anchorage of this
AbstractAnchor to the given value. |
protected void |
unregisterVCL(javafx.scene.Node anchored)
Unregisters the
VisualChangeListener s for the given anchored
Node . |
protected void |
unregisterVCLs()
Unregisters the
VisualChangeListener s for all anchored
Node s. |
protected void |
updatePosition(AnchorKey key)
Updates the position for the given
AnchorKey , i.e. |
protected void |
updatePositions()
Updates the positions for all attached
AnchorKey s. |
public javafx.beans.property.ReadOnlyObjectProperty<javafx.scene.Node> anchorageProperty
anchorageProperty
in interface IAnchor
Node
.getAnchorage()
,
setAnchorage(Node)
public javafx.beans.property.ReadOnlyMapProperty<AnchorKey,Point> positionsUnmodifiableProperty
positionsUnmodifiableProperty
in interface IAnchor
AnchorKey
s.getPositionsUnmodifiable()
public AbstractAnchor(javafx.scene.Node anchorage)
AbstractAnchor
for the given anchorage
Node
.anchorage
- The anchorage Node
for this AbstractAnchor
.public javafx.beans.property.ReadOnlyObjectProperty<javafx.scene.Node> anchorageProperty()
IAnchor
Node
this
IAnchor
is bound to. The property value may be null
in case this IAnchor
is not bound to an anchorage Node
.anchorageProperty
in interface IAnchor
Node
.getAnchorage()
,
setAnchorage(Node)
protected abstract Point computePosition(AnchorKey key)
AnchorKey
by
delegating to the respective IComputationStrategy
.public javafx.scene.Node getAnchorage()
getAnchorage
in interface IAnchor
IAnchor.anchorageProperty()
.protected java.util.Set<AnchorKey> getKeys()
AnchorKey
s.protected SetMultimap<javafx.scene.Node,AnchorKey> getKeysByNode()
Map
which stores the registered AnchorKey
s
per Node
by reference.public Point getPosition(AnchorKey key)
IAnchor
AnchorKey
. The provided
AnchorKey
has to be attached to this IAnchor
(see
IAnchor.attach(AnchorKey)
).getPosition
in interface IAnchor
key
- The AnchorKey
to retrieve a position for. It has to be
attached (IAnchor.attach(AnchorKey)
) to this IAnchor
before.AnchorKey
within local
coordinates of the AnchorKey
's anchored Node
.public javafx.collections.ObservableMap<AnchorKey,Point> getPositionsUnmodifiable()
getPositionsUnmodifiable
in interface IAnchor
AnchorKey
s.public boolean isAttached(AnchorKey key)
IAnchor
isAttached
in interface IAnchor
key
- The AnchorKey
to test.true
if the given key is attached, otherwise
false
.public javafx.beans.property.ReadOnlyMapProperty<AnchorKey,Point> positionsUnmodifiableProperty()
IAnchor
Node
s) for all attached AnchorKey
s. The
positions will be updated for all attached AnchorKey
s if the
attached Node
s or the anchorage Node
, the IAnchor
is bound to, or any of their ancestors changes in a way that will effect
the positions (within the local coordinate space of the attached
Node
s).positionsUnmodifiableProperty
in interface IAnchor
AnchorKey
s.getPositionsUnmodifiable()
protected void registerVCL(javafx.scene.Node anchored)
VisualChangeListener
for the given anchored
Node
.anchored
- The anchored Node
to register a
VisualChangeListener
at.protected void registerVCLs()
VisualChangeListener
s for all anchored Node
s,
or schedules their registration if the VCL cannot be registered yet.protected void setAnchorage(javafx.scene.Node anchorage)
AbstractAnchor
to the given value.anchorage
- The new anchorage for this AbstractAnchor
.protected void unregisterVCL(javafx.scene.Node anchored)
VisualChangeListener
s for the given anchored
Node
.anchored
- The anchored Node to unregister a VisualChangeListener
from.protected void unregisterVCLs()
VisualChangeListener
s for all anchored
Node
s.protected void updatePosition(AnchorKey key)
AnchorKey
, i.e.
positionsUnmodifiableProperty()
key
- The AnchorKey
for which the position is updated.protected void updatePositions()
AnchorKey
s.Copyright (c) 2014, 2016 itemis AG and others. All rights reserved.