facets.core.superficial
Class TargeterCore

java.lang.Object
  extended by facets.util.Tracer
      extended by facets.core.superficial.TargeterCore
All Implemented Interfaces:
Facetable, Notifiable, Notifying, SRetargetable, STargeter, Identified, Titled
Direct Known Subclasses:
IndexingFrame.FrameTargeter, IndexingTargeter

public class TargeterCore
extends Tracer
implements STargeter

Implements STargeter.

TargeterCore is a public implementation of STargeter to provide for extension in other packages; instances are generally created by an implementation of TargetCore.newTargeter().


Nested Class Summary
static interface TargeterCore.TargetType
          Marks the effective type of a dynamically constructed targeter tree.
 
Nested classes/interfaces inherited from interface facets.core.superficial.Notifying
Notifying.Impact
 
Field Summary
static int targeters
           
 java.lang.Class targetType
           
 
Constructor Summary
TargeterCore(TargeterCore.TargetType target)
          Construct a TargeterCore to match target.
 
Method Summary
 void attachFacet(SFacet facet)
          Adds facet to a list of facets to be updated during retargetFacets.
protected  boolean blockNotification()
          Enables notification to be restricted to this member of the tree.
 STargeter[] elements()
          Dynamically-defined children.
 java.lang.Object identity()
          Return an object that is as far as possible unique for the implementation.
 Notifying.Impact impact()
          Allows this Notifying to specify a default Notifying.Impact.
 Notifiable monitor()
          The current Notifiable in the notification tree, as set with setMonitor.
protected  TypedNode[] newDebugChildren()
          Create a TypedNode[] representation of this Notifying for debug purposes.
protected static TypedNode newDebugContentNode(java.lang.String title, java.lang.Object source)
           
protected static TypedNode newDebugContentNode(java.lang.String title, java.lang.Object[] source)
           
protected static TypedNode newDebugMonitorNode(Notifiable monitor)
           
 TypedNode newGraphNode()
          Returns a descriptive node for use in debug object graph.
static STargeter newRetargeted(TargetCore target, boolean live)
           
 void notify(Notice notice)
          Respond to the Notice passed.
 void notifyMonitor(Notifying.Impact impact)
          Call notify on the parent monitor in the notification tree, typically with itself as parameter to the Notice passed.
 void retarget(STarget target, Notifying.Impact impact)
          Sets the target of the STargeter and those of any elements or other STargeter members.
 void retargetFacets(Notifying.Impact impact)
          Updates all facets attached with STargeter.attachFacet(SFacet) and those of any child STargeter.elements().
 void setMonitor(Notifiable monitor)
          Attach the Notifying to a Notifiable parent in the notification tree.
 STarget target()
          The current target in the application.
 java.lang.String title()
          Return human-readable identifying text.
 java.lang.String toString()
           
static STargeter[] treeItems(STargeter root)
           
 
Methods inherited from class facets.util.Tracer
trace, trace, trace, trace, trace, traceDebug, traceDebug, traceObjectText, traceOutput, traceOutputWithClass
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface facets.core.superficial.Notifying
impact, monitor, notifyMonitor, setMonitor
 
Methods inherited from interface facets.core.superficial.Notifiable
notify
 

Field Detail

targeters

public static int targeters

targetType

public final java.lang.Class targetType
Constructor Detail

TargeterCore

public TargeterCore(TargeterCore.TargetType target)
Construct a TargeterCore to match target.

The target is usually a STarget, but may be any implementor of TargeterCore.TargetType.

Parameters:
target - provides the class set as targetType.
Method Detail

retargetFacets

public void retargetFacets(Notifying.Impact impact)
Description copied from interface: STargeter
Updates all facets attached with STargeter.attachFacet(SFacet) and those of any child STargeter.elements().

Application code need never call this method directly; it is called on the surface root targeter after retargeting following notification, and then recursively through the targeter tree.

Specified by:
retargetFacets in interface Facetable
Specified by:
retargetFacets in interface STargeter

attachFacet

public final void attachFacet(SFacet facet)
Description copied from interface: STargeter
Adds facet to a list of facets to be updated during retargetFacets.

Specified by:
attachFacet in interface Facetable
Specified by:
attachFacet in interface STargeter
Parameters:
facet - will be applied during each retargeting sequence

retarget

public void retarget(STarget target,
                     Notifying.Impact impact)
Description copied from interface: STargeter
Sets the target of the STargeter and those of any elements or other STargeter members.

Also sets the STargeter as notification monitor of its STargeter members and of its target.

Specified by:
retarget in interface SRetargetable
Specified by:
retarget in interface STargeter
See Also:
Notifying

elements

public final STargeter[] elements()
Description copied from interface: STargeter
Dynamically-defined children.

Return any children created dynamically during initial retargeting to correspond with the child elements of target.

Specified by:
elements in interface STargeter

target

public final STarget target()
Description copied from interface: SRetargetable
The current target in the application.

This will be the last STarget set with retarget.

Specified by:
target in interface SRetargetable

title

public final java.lang.String title()
Description copied from interface: Titled
Return human-readable identifying text.

Specified by:
title in interface Titled
Returns:
non-null, non-empty string with no structural whitespace

toString

public java.lang.String toString()

newDebugChildren

protected TypedNode[] newDebugChildren()
Create a TypedNode[] representation of this Notifying for debug purposes.


treeItems

public static STargeter[] treeItems(STargeter root)

newRetargeted

public static STargeter newRetargeted(TargetCore target,
                                      boolean live)

newDebugContentNode

protected static final TypedNode newDebugContentNode(java.lang.String title,
                                                     java.lang.Object source)

newDebugContentNode

protected static final TypedNode newDebugContentNode(java.lang.String title,
                                                     java.lang.Object[] source)

newDebugMonitorNode

protected static final TypedNode newDebugMonitorNode(Notifiable monitor)

newGraphNode

public final TypedNode newGraphNode()
Returns a descriptive node for use in debug object graph.


impact

public Notifying.Impact impact()
Description copied from interface: Notifying
Allows this Notifying to specify a default Notifying.Impact.

Specified by:
impact in interface Notifying
Returns:
typically Notifying.Impact.DEFAULT

identity

public java.lang.Object identity()
Description copied from interface: Identified
Return an object that is as far as possible unique for the implementation.

This will usually be a class instance counter.

Specified by:
identity in interface Identified

monitor

public final Notifiable monitor()
The current Notifiable in the notification tree, as set with setMonitor.

Complains if no parent has been set.

Specified by:
monitor in interface Notifying

notify

public void notify(Notice notice)
Description copied from interface: Notifiable
Respond to the Notice passed.

When this method is called, the Notifiable should respond based on

Specified by:
notify in interface Notifiable

notifyMonitor

public final void notifyMonitor(Notifying.Impact impact)
Description copied from interface: Notifying
Call notify on the parent monitor in the notification tree, typically with itself as parameter to the Notice passed.

Has no effect if no monitor has been set.

This is the usual means to trigger a surface retargeting, being called by an exposing SFacet on its target.

Specified by:
notifyMonitor in interface Notifying
Parameters:
impact - suggests the level of retargeting required

blockNotification

protected boolean blockNotification()
Enables notification to be restricted to this member of the tree.

Checked by notify(Notice); default returns false.


setMonitor

public final void setMonitor(Notifiable monitor)
Description copied from interface: Notifying
Attach the Notifying to a Notifiable parent in the notification tree.

Specified by:
setMonitor in interface Notifying