facets.core.superficial.app
Class ViewableFrame

java.lang.Object
  extended by facets.util.Tracer
      extended by facets.core.superficial.TargetCore
          extended by facets.core.superficial.SFrameTarget
              extended by facets.core.superficial.app.SelectingFrame
                  extended by facets.core.superficial.app.ViewableFrame
All Implemented Interfaces:
Notifiable, Notifying, STarget, TargeterCore.TargetType, Identified, Titled
Direct Known Subclasses:
StatefulViewable

public abstract class ViewableFrame
extends SelectingFrame

SelectingFrame that can respond to input from SViewers and ViewableActions.

ViewableFrame extends its superclass by allowing for response both to mouse-defined SViewer input and to non-mouse ViewableActions.


Nested Class Summary
 
Nested classes/interfaces inherited from interface facets.core.superficial.STarget
STarget.Targeted
 
Nested classes/interfaces inherited from interface facets.core.superficial.Notifying
Notifying.Impact
 
Field Summary
 
Fields inherited from class facets.core.superficial.SFrameTarget
framed
 
Fields inherited from class facets.core.superficial.TargetCore
targets
 
Fields inherited from interface facets.core.superficial.STarget
NONE
 
Constructor Summary
ViewableFrame(java.lang.String title, java.lang.Object content)
          Unique constructor.
 
Method Summary
 boolean actionIsLive(SViewer viewer, ViewableAction action)
          Should the action be exposed as live in the surface?
protected  void actionTriggered(SViewer viewer, ViewableAction action)
          Propose an action in the viewer passed.
protected  boolean blockNotification()
          Enables notification to be restricted to this member of the tree.
 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 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.
protected  SSelection newViewerSelection(SViewer viewer)
          Return SSelection to be displayed by viewer.
 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 setMonitor(Notifiable monitor)
          Attach the Notifying to a Notifiable parent in the notification tree.
 ViewableAction[] viewerActions(SView view)
          Return actions to be made available in a viewer
protected  void viewerSelectionChanged(SViewer viewer, SSelection selection)
          Respond to change in selection.
protected  void viewerSelectionEdited(SViewer viewer, java.lang.Object edit, boolean interim)
          Respond to viewer edit.
 
Methods inherited from class facets.core.superficial.app.SelectingFrame
defineSelection, selection, selectionFrame, setSelection
 
Methods inherited from class facets.core.superficial.SFrameTarget
newDebugChildren, notifiesTargeter, setFramedState, title
 
Methods inherited from class facets.core.superficial.TargetCore
elements, findMonitorOfType, isLive, join, lazyElements, newTargeter, setElements, setLive, toString, wantsFocus
 
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
 

Constructor Detail

ViewableFrame

public ViewableFrame(java.lang.String title,
                     java.lang.Object content)
Unique constructor.

Parameters:
title - passed to superclass
content - passed to superclass
Method Detail

newViewerSelection

protected SSelection newViewerSelection(SViewer viewer)
Return SSelection to be displayed by viewer.

Called by ViewerTargetCore.selection(), should return some combination of

Parameters:
viewer - requiring selection for return by SViewer.selection()
Returns:
by default SelectingFrame.selection()

viewerSelectionChanged

protected void viewerSelectionChanged(SViewer viewer,
                                      SSelection selection)
Respond to change in selection.

Called from ViewerTargetCore.selectionChanged(SSelection), must interpret a new viewer selection in terms of the complete content. Default implementation calls SelectingFrame.setSelection(SSelection) with selection.

Parameters:
viewer - in which the change took place
selection - the new selection in the viewer

viewerSelectionEdited

protected void viewerSelectionEdited(SViewer viewer,
                                     java.lang.Object edit,
                                     boolean interim)
Respond to viewer edit.

Called from ViewerTargetCore.selectionEdited(SSelection, Object, boolean), may respond by changing content state to match edit.

Default implementation calls SFrameTarget.setFramedState(Object, boolean) with edit.

Parameters:
viewer - proposing the edit
edit - may be multiple edits to match implementor of SSelection.
interim - if true the edit forms part of a sequence

actionTriggered

protected void actionTriggered(SViewer viewer,
                               ViewableAction action)
Propose an action in the viewer passed.

Default implementation is an invalid stub.

Parameters:
viewer - the active viewer
action - specifies the action proposed

actionIsLive

public boolean actionIsLive(SViewer viewer,
                            ViewableAction action)
Should the action be exposed as live in the surface?

Default returns false.

Parameters:
viewer - the active viewer
action - to be exposed

viewerActions

public ViewableAction[] viewerActions(SView view)
Return actions to be made available in a viewer

Parameters:
view - controls the viewer

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