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 (
positionProperty()
) 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, IAdaptable)
and
detach(AnchorKey, IAdaptable)
, 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> |
position
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,
IAdaptable info)
|
protected abstract Point |
computePosition(AnchorKey key)
Computes and returns the position for the given
AnchorKey . |
void |
detach(AnchorKey key,
IAdaptable info)
|
javafx.scene.Node |
getAnchorage()
Gets the value of the property anchorage.
|
protected java.util.Map<javafx.scene.Node,java.util.Set<AnchorKey>> |
getKeys()
|
Point |
getPosition(AnchorKey key)
Provides a position for the given
AnchorKey . |
boolean |
isAttached(AnchorKey key)
|
javafx.beans.property.ReadOnlyMapProperty<AnchorKey,Point> |
positionProperty()
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. |
public javafx.beans.property.ReadOnlyObjectProperty<javafx.scene.Node> anchorageProperty
anchorageProperty
in interface IAnchor
Node
.getAnchorage()
,
setAnchorage(Node)
public javafx.beans.property.ReadOnlyMapProperty<AnchorKey,Point> positionProperty
positionProperty
in interface IAnchor
AnchorKey
s.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)
public void attach(AnchorKey key, IAdaptable info)
IAnchor
protected abstract Point computePosition(AnchorKey key)
AnchorKey
.public void detach(AnchorKey key, IAdaptable info)
IAnchor
public javafx.scene.Node getAnchorage()
getAnchorage
in interface IAnchor
IAnchor.anchorageProperty()
.protected java.util.Map<javafx.scene.Node,java.util.Set<AnchorKey>> getKeys()
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, IAdaptable)
).getPosition
in interface IAnchor
key
- The AnchorKey
to retrieve a position for. It has to be
attached (IAnchor.attach(AnchorKey, IAdaptable)
) to this
IAnchor
before.AnchorKey
within local
coordinates of the AnchorKey
's anchored Node
.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> positionProperty()
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).positionProperty
in interface IAnchor
AnchorKey
s.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.
positionProperty()
key
- The AnchorKey
for which the position is updated.Copyright (c) 2014 itemis AG and others. All rights reserved.