| 
Oracle Fusion Middleware Java API Reference for Oracle Extension SDK Reference 11g Release 1 (11.1.1) E13403-04  | 
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
public interface Traversable
The methods defined in the Traversable interface
  specify the operations that a UI component must support in order
  to be traversed in complex UI widgets such as a property dialog,
  a wizard, or any other panel-based UI.
Property dialogs and wizards typically involve some set of panels that are displayed to the user. In the case of property dialogs, the user can traverse the panels in a random-access manner; in wizards, the user traverses the panels in a sequential order. Often, the data structures being edited by the panels do not necessarily correspond to the structure of the panels. That is, a single panel may edit multiple data objects, or multiple panels may edit a single data object. Moreover, values displayed in one panel may also be affected by edits performed in another panel.
  The Traversable interface specifies the protocol
  through which panels can communicate indirectly with each other.
  The onEntry(TraversableContext) and onExit(TraversableContext) methods comprise the main part of the
  interaction.  The getExitTransition() method is used when
  the Traversable appears in an FSMWizard; a Traversable
  that is not used in FSMWizard should just return null
  from getExitTransition().
  The Traversable implementation finds the data objects
  that it needs by querying the TraversableContext.  The
  TraversableContext uses a Namespace to hold data
  objects.  Therefore the Traversable must be
  able to find its data objects using predefined names.  Consequently,
  the names and data types of the required data objects must
  be documented by every Traversable implementation.  It
  is then the responsibility of the UI container and the class
  instantiating the UI container to ensure that the Namespace
  is populated with the appropriate data objects before entering the
  Traversable.
  The Traversable interface is designed to allow a single
  panel to be used in both a property dialog and a wizard.  Generally,
  a property dialog is used to edit the properties of an existing
  object, and a wizard is used to guide the user through the creation
  of a new object.  In some cases, the property dialog and the wizard
  are nearly identical and may even use the same panels; in other
  cases, the wizard only displays the most commonly edited properties
  and leaves the more advanced editing to be performed in the property
  dialog.  Panels that implement the Traversable
  interface are available to be reused in either a property dialog or
  a wizard, provided that the data objects are properly loaded into
  the Namespace used by the TraversableContext.
MetaTraversable, 
Navigable, 
MDDPanel, 
Step, 
FSMWizard| Method Summary | |
|---|---|
 java.awt.Component | 
getComponent()
Normally, the Traversable class will itself be the
  UI Component. | 
 java.lang.Object | 
getExitTransition()
Returns the exit transition that can be used by a Traversable-aware wizard. | 
 java.lang.String | 
getHelpID()
Returns the context-sensitive help topic ID to use for this Traversable. | 
 void | 
onEntry(TraversableContext dataContext)
This method is called when the Traversable is being
  entered. | 
 void | 
onExit(TraversableContext dataContext)
This method is called when the Traversable is being
  exited. | 
| Method Detail | 
|---|
void onEntry(TraversableContext dataContext)
Traversable is being
  entered.  The data that the Traversable should use
  to populate its UI components comes from the specified
  TraversableContext.
  When the same Traversable is entered more than once
  in the course of interacting with the user, the
  Traversable needs to reload the data directly from
  the TraversableContext rather than caching data objects.
  Some reasons for this include:
  
Traversables may edit the data objects
         or even replace them.
     Traversable instance may be used
         for editing multiple different instances of the same
         object type.
  TraversableContext is the
  best way to ensure that the Traversable will not be
  editing the wrong data.
  The Traversable should not even cache references to
  data objects between invocations of onEntry and
  onExit(TraversableContext) because the UI container is
  not required to guarantee that the references will be identical.
dataContext - The data wrapper where the
  Traversable locates the data that it needs to
  populate the UI.java.awt.Component getComponent()
Traversable class will itself be the
  UI Component.  Therefore, getComponent()
  typically just returns this.  In this situation
  the getComponent() method then is simply a means
  of avoiding a type cast.
  In other cases, it would be useful to have the ability to return a
  different Component based on the contents of the
  TraversableContext that is passed to the
  onEntry(TraversableContext) method.  UI containers (e.g.
  property dialogs and wizards) that are designed to use the
  Traversable interface must call the
  onEntry(TraversableContext) method before calling
  getComponent().  This allows a Traversable
  implementation to have the opportunity to configure the UI
  Component or even create a new one before it is displayed.
  
  In either situation, the implementation should strive to return
  the same Component instance as often as possible rather
  than creating a new instance becaues the UI container will call
  this method frequently.
Component that the user interacts with
  for creating or editing an object.
void onExit(TraversableContext dataContext)
            throws TraversalException
Traversable is being
  exited.  At this point, the Traversable should copy
  the data from its associated UI back into the data structures in
  the TraversableContext.
  If the Traversable should not be exited because the
  user has entered either incomplete, invalid, or inconsistent data,
  then this method can throw a TraversalException to
  indicate to the property dialog or wizard that validation failed
  and that the user should not be allowed to exit the current
  Traversable.  Refer to the TraversalException
  javadoc for details on passing the error message that should be
  shown to the user.
dataContext - The data object where changes made in the UI
  should be copied so that the changes can be accessed by other
  Traversables.
TraversalException - if the user has entered either
  incomplete, invalid, or inconsistent data.  This exception
  prevents the property dialog or wizard from continuing and
  forces the user to stay on the current Traversable
  until the data entered is valid or the user cancels.  The
  exception class itself is capable of carrying an error message
  that will be shown to the user.  Refer to its javadoc for details.java.lang.Object getExitTransition()
Traversable-aware wizard.  The wizard can use the
  exit transition to direct the user through an alternate or
  streamlined set of panels based on their current input.
  If the Traversable implementation does not support
  multiple exit transitions or is not used in a wizard, then this
  method should just return null.
Traversable
  that is used by dynamic interview-style wizards to determine
  the next course of action.  A Traversable class
  that does not support multiple possible transitions should
  just return null.java.lang.String getHelpID()
Traversable.  A null return value means
  that the Traversable implementation doesn't specify
  a help topic ID.  However, there are other ways that a help topic
  ID could get associated with a Traversable.
  
  Specifically, when a Traversable instance is created
  by a MetaTraversable such as Step or
  Navigable in the context of a Navigable
  container such as MDDPanel, TabbedPanel or
  FSMWizard, the help ID is searched according to the
  following order:
  
MetaTraversable.getHelpID()
    getHelpID().  This may lead into a
        recursion if the Traversable's Component is a nested
        Navigable container.
    getComponent() )
    Since a Navigable wraps a Traversable, and a Traversable wraps a Component, the priority order for determining the help ID is based on giving the outer-most wrapper the opportunity to override. The Navigable container has the lowest priority because containers such as MDDPanel, TabbedPanel, and FSMWizard don't normally have a help topic ID of their own, since help topics tend to be on a per page basis.
  For most cases the recommended approach is to have the Traversable
  specify the help ID.  However, when the same Traversable can be
  used in different contexts, then specifying or overriding the help
  ID from the MetaTraversable could be better, especially if that
  avoids the need for conditional logic in Traversable.getHelpID().
  If no dynamic behavior is needed in determining the help ID, then
  the implementation can probably just subclass DefaultTraversablePanel and call the DefaultTraversablePanel.setHelpID(String) method from the
  subclass constructor.
The getHelpID() method is called only when the user requests help, so the actual help ID may be determined dynamically (e.g. return a different ID depending on the state of the UI).
  | 
Oracle Fusion Middleware Java API Reference for Oracle Extension SDK Reference 11g Release 1 (11.1.1) E13403-04  | 
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||