|
Extension SDK 10.1.2 | ||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JPanel oracle.ide.panels.DefaultTraversablePanel oracle.ide.panels.AbstractUIContainer oracle.ide.panels.MDDPanel
This implementation of NavigableUIContainer
is a
"master-detail-detail" panel, hence the name
MDDPanel
. It subdivides its contents into three
areas:
------------------------------------------------------ | | | | | | | master | | | tree | | | | | | | detail-detail | | | panel | | | | |------------| | | | | | detail | | | tree | | | | | | | | | | | ------------------------------------------------------
Each area is contained by a JSplitPane
so they are all
resizeable. There is a flag in one of the constructors that is used
to disable the detail tree if it is not needed; when the
detail tree is hidden, then any tree nodes that would
normally be shown in the detail tree will be shown as child nodes in
the master tree instead, with the detail nodes appearing before
child nodes.
When a dialog is required, an instance of MDDPanel should be hosted
by a TDialogLauncher
. Certain MDDPanel methods cannot be
be called until the MDDPanel's onEntry method has been called.
Nested Class Summary |
Nested classes inherited from class javax.swing.JPanel |
javax.swing.JPanel.AccessibleJPanel |
Nested classes inherited from class javax.swing.JComponent |
javax.swing.JComponent.AccessibleJComponent |
Nested classes inherited from class java.awt.Container |
java.awt.Container.AccessibleAWTContainer |
Nested classes inherited from class java.awt.Component |
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy |
Field Summary | |
static java.lang.String |
CURRENT_TRAVERSABLE
|
static java.lang.String |
CURRENT_TREE1
|
static java.lang.String |
CURRENT_TREE1_MODEL
|
static java.lang.String |
CURRENT_TREE1_NODE
|
static java.lang.String |
NAVIGABLE_UI_CONTAINER
Constant used to get an instance of NavigableUIContainer from TraversableContext.getDesignTimeObject(String) . |
static java.lang.String |
TREE_PANEL_EAST
Layout constraint for addTreePanelComponent(..). |
static java.lang.String |
TREE_PANEL_NORTH
Layout constraint for addTreePanelComponent(..). |
static java.lang.String |
TREE_PANEL_SOUTH
Layout constraint for addTreePanelComponent(..). |
static java.lang.String |
TREE_PANEL_WEST
Layout constraint for addTreePanelComponent(..). |
Fields inherited from class javax.swing.JComponent |
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW |
Fields inherited from class java.awt.Component |
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT |
Fields inherited from interface oracle.ide.controls.GridBagConstants |
ANCHOR_C, ANCHOR_E, ANCHOR_N, ANCHOR_NE, ANCHOR_NW, ANCHOR_S, ANCHOR_SE, ANCHOR_SW, ANCHOR_W, FILL_NONE, FILL_X, FILL_XY, FILL_Y |
Fields inherited from interface java.awt.image.ImageObserver |
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH |
Constructor Summary | |
protected |
MDDPanel()
This constructor should only be used by subclasses that will build the Navigable list from within the onEntry method. |
|
MDDPanel(Navigable rootNavigable)
Constructs a new MDDPanel with a single root node in the master tree. |
|
MDDPanel(Navigable[] rootNavigables)
Constructs a new MDDPanel with the specified nodes as root nodes in the master tree. |
|
MDDPanel(Navigable[] rootNavigables,
boolean useDetailTree)
Constructs a new MDDPanel with the specified nodes as root nodes in the master tree. |
Method Summary | |
void |
addApplyListener(ApplyListener applyListener)
Adds an ApplyListener that will be called when the
user applies or cancels changes. |
protected void |
addListener(java.lang.Class eventClass,
java.util.EventListener listener)
|
void |
addMDDListener(oracle.ide.panels.MDDListener listener)
|
void |
addTreePanelComponent(java.awt.Component comp,
java.lang.Object layoutConstraint)
|
void |
apply(ApplyEvent e)
This method is called when the changes made in the NavigableUIContainer are to be committed to the original
data structures. |
void |
cancel(ApplyEvent e)
This method is called when the changes made in the NavigableUIContainer are to be discarded. |
boolean |
displayDetailNodesAsChildren()
Returns true if the UI container is displaying
detail nodes with the children rather than in a separate tree. |
boolean |
enableSelectionDelay(boolean selectionDelay)
|
void |
expandTree1Path(java.lang.String[] expandPath)
Expands the specified path. |
void |
expandTree1ToDepth(int depth)
Expands the master tree up to and including the number of levels specified by the depth parameter. |
protected void |
fireApply(ApplyEvent event)
Fires the "apply" message to all registered ApplyListener
objects. |
protected void |
fireCancel(ApplyEvent event)
Fires the "cancel" message to all registered ApplyListener
objects. |
protected void |
fireTraversableEntered(TraversableContext tc)
|
java.util.Comparator |
getChildComparator()
Returns the Comparator to use for sorting the root Navigable children of this MDDPanel . |
protected Navigable |
getCurrentNavigable()
Concrete subclasses must implement this method to return the Navigable that is currently selected in the UI. |
protected Traversable |
getCurrentTraversable()
Concrete subclasses must implement this method to return the Traversable that is currently selected in the UI. |
java.util.Comparator |
getDefaultChildComparator()
Returns the Comparator to use for sorting Navigable
children for this MDDPanel . |
protected javax.swing.JSplitPane |
getDetailSplitPane()
|
java.lang.String |
getHelpID()
Returns the context-sensitive help topic ID to use for this Traversable . |
protected java.util.Iterator |
getListenerIterator(java.lang.Class listenerClass)
|
protected javax.swing.JSplitPane |
getMainSplitPane()
|
protected Navigable[] |
getRootNavigables()
|
java.lang.String[] |
getTree1SelectionPath()
Note: The onEntry must have already been called before this method will have an effect. |
protected void |
maybeRefreshUI(TraversableContext tc)
|
protected TraversableContext |
newTraversableContext()
Adds design-time objects to the TraversableContext . |
void |
onEntry(TraversableContext tc)
This method is called when the Traversable is being
entered. |
void |
onExit(TraversableContext tc)
This method is called when the Traversable is being
exited. |
protected void |
refreshUI(TraversableContext dataScope)
|
void |
removeApplyListener(ApplyListener applyListener)
Removes a previously added ApplyListener so that it
no longer receives notification when the user applies or cancels
changes. |
protected void |
removeListener(java.lang.Class eventClass,
java.util.EventListener listener)
|
void |
removeMDDListener(oracle.ide.panels.MDDListener listener)
|
void |
setChildComparator(java.util.Comparator childComparator)
Sets the Comparator to use for sorting just the root Navigable children of this MDDPanel ; if
null is specified, then the root Navigable
children will not be sorted. |
void |
setDefaultChildComparator(java.util.Comparator defaultChildComparator)
Sets the Comparator to use for sorting Navigable
children for this MDDPanel ; if null is
specified, then no Navigable children will be sorted. |
void |
setDetailDividerLocation(double proportionalLocation)
Sets the position of the detail divider bar as a percentage of the detail split pane's size. |
void |
setDetailDividerSize(int dividerSize)
Sets the size of the divider bar that separates the master tree from the detail tree. |
void |
setDetailResizeWeight(double weight)
Sets the initial resize weight of the detail divider bar. |
void |
setMainDividerLocation(double proportionalLocation)
Sets the position of the main divider bar as a percentage of the main split pane's size. |
void |
setMainDividerSize(int dividerSize)
Sets the size of the divider bar that separates the master tree from the detail-detail content area. |
void |
setMainResizeWeight(double weight)
Sets the initial resize weight of the main divider bar. |
void |
setRootNavigables(Navigable[] rootNavigables)
Sets the root-level Navigable instances for the UI. |
void |
setTree1SelectionPath(java.lang.String[] selectionPath)
Note: The onEntry must have already been called before this method will have an effect. |
void |
setTree1SelectionRow(int row)
Changes the selection in the master tree to the specified row. |
Methods inherited from class oracle.ide.panels.DefaultTraversablePanel |
gbc, gbc, getComponent, getDefaultTitle, getExitTransition, getText, setDefaultTitle, setHelpID |
Methods inherited from class javax.swing.JPanel |
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI |
Methods inherited from class javax.swing.JComponent |
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update |
Methods inherited from class java.awt.Container |
add, add, add, add, add, addContainerListener, addImpl, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree |
Methods inherited from class java.awt.Component |
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface oracle.ide.panels.Traversable |
getComponent, getExitTransition |
Field Detail |
public static final java.lang.String CURRENT_TREE1
public static final java.lang.String CURRENT_TREE1_MODEL
public static final java.lang.String CURRENT_TREE1_NODE
public static final java.lang.String CURRENT_TRAVERSABLE
public static final java.lang.String TREE_PANEL_NORTH
public static final java.lang.String TREE_PANEL_SOUTH
public static final java.lang.String TREE_PANEL_EAST
public static final java.lang.String TREE_PANEL_WEST
public static final java.lang.String NAVIGABLE_UI_CONTAINER
TraversableContext.getDesignTimeObject(String)
.
Constructor Detail |
protected MDDPanel()
public MDDPanel(Navigable rootNavigable)
public MDDPanel(Navigable[] rootNavigables)
public MDDPanel(Navigable[] rootNavigables, boolean useDetailTree)
Method Detail |
public boolean displayDetailNodesAsChildren()
oracle.ide.panels.NavigableUIContainer
true
if the UI container is displaying
detail nodes with the children rather than in a separate tree.
That is:
false
.
true
.
That is, the tree displays detail nodes as children.
public void onEntry(TraversableContext tc)
Traversable
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:
Traversable
s 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
Traversable.onExit(TraversableContext)
because the UI container is
not required to guarantee that the references will be identical.
public void onExit(TraversableContext tc) throws TraversalException
Traversable
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.
TraversalException
public void expandTree1ToDepth(int depth)
depth
parameter.
Note: The onEntry must have already been called
before this method will have an effect. The most common way
that the onEntry method gets called is by passing the MDDPanel
instance into the TDialogLauncher
constructor. Once
the MDDPanel has been associated with a TDialogLauncher, then
this method may be called.
public void expandTree1Path(java.lang.String[] expandPath)
TDialogLauncher
constructor. Once
the MDDPanel has been associated with a TDialogLauncher, then
this method may be called.
public void setTree1SelectionRow(int row)
TDialogLauncher
constructor. Once
the MDDPanel has been associated with a TDialogLauncher, then
this method may be called.
public void setTree1SelectionPath(java.lang.String[] selectionPath)
TDialogLauncher
constructor. Once
the MDDPanel has been associated with a TDialogLauncher, then
this method may be called.
public java.lang.String[] getTree1SelectionPath()
TDialogLauncher
constructor. Once
the MDDPanel has been associated with a TDialogLauncher, then
this method may be called.
public void setMainDividerLocation(double proportionalLocation)
public void setMainDividerSize(int dividerSize)
public void setMainResizeWeight(double weight)
public void setDetailDividerLocation(double proportionalLocation)
public void setDetailDividerSize(int dividerSize)
public void setDetailResizeWeight(double weight)
public void setChildComparator(java.util.Comparator childComparator)
Comparator
to use for sorting just the root Navigable
children of this MDDPanel
; if
null
is specified, then the root Navigable
children will not be sorted.
If no child Comparator
is specified, then the root
Navigable
children will be sorted using the default
child Comparator
, if one has been specified via setDefaultChildComparator(Comparator)
.
public java.util.Comparator getChildComparator()
Comparator
to use for sorting the root Navigable
children of this MDDPanel
.
public void setDefaultChildComparator(java.util.Comparator defaultChildComparator)
Comparator
to use for sorting Navigable
children for this MDDPanel
; if null
is
specified, then no Navigable
children will be sorted.
If no default child Comparator
is specified, then no
Navigable children will be sorted; the root
Navigable
children will be sorted, however, if a
Comparator
has been specified via setChildComparator(Comparator)
.
This method assumes that the Navigable.createTreeNode(NavigableContext)
method for each
Navigable
in the panel uses this Comparator
to order its Navigable
children before creating its tree
nodes. The default Navigable
does this sorting.
public java.util.Comparator getDefaultChildComparator()
Comparator
to use for sorting Navigable
children for this MDDPanel
.
public void addMDDListener(oracle.ide.panels.MDDListener listener)
public void removeMDDListener(oracle.ide.panels.MDDListener listener)
public void addTreePanelComponent(java.awt.Component comp, java.lang.Object layoutConstraint)
public boolean enableSelectionDelay(boolean selectionDelay)
protected Navigable getCurrentNavigable()
oracle.ide.panels.AbstractUIContainer
Navigable
that is currently selected in the UI.
protected Traversable getCurrentTraversable()
oracle.ide.panels.AbstractUIContainer
Traversable
that is currently selected in the UI.
protected TraversableContext newTraversableContext()
TraversableContext
.
protected void refreshUI(TraversableContext dataScope)
protected void fireTraversableEntered(TraversableContext tc)
protected javax.swing.JSplitPane getMainSplitPane()
protected javax.swing.JSplitPane getDetailSplitPane()
public java.lang.String getHelpID()
Traversable
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()
Traversable.getHelpID()
. This may lead into a
recursion if the Traversable's Component is a nested
Navigable container.
Traversable.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).
getHelpID
in interface Traversable
getHelpID
in class DefaultTraversablePanel
public void addApplyListener(ApplyListener applyListener)
ApplyNotifier
ApplyListener
that will be called when the
user applies or cancels changes.
addApplyListener
in interface ApplyNotifier
public void removeApplyListener(ApplyListener applyListener)
ApplyNotifier
ApplyListener
so that it
no longer receives notification when the user applies or cancels
changes.
removeApplyListener
in interface ApplyNotifier
public void apply(ApplyEvent e)
ApplyListener
NavigableUIContainer
are to be committed to the original
data structures. This normally occurs when the user pushes the
"OK", "Apply", or "Finish" button.
This method is called as soon as the user's action is recognized.
Typically, if the NavigableUIContainer
is editing a copy
of the original data, there will be an ApplyListener
registered that is responsible for flushing the changes from the
edited data copy back to the original data structure. The API in
the oracle.ide.panels
package does not specify when
such an ApplyListener
is registered or whether one
is registered at all.
If you are writing code that must depend on the registration order
of such an ApplyListener
, you will need to consult
the documentation for the code that instantiates the
NavigableUIContainer
to determine if the registration
order for ApplyListener
s is specified there.
apply
in interface ApplyListener
e
- The ApplyEvent
that provides contextual
information about when the ApplyEvent
was fired.public void cancel(ApplyEvent e)
ApplyListener
NavigableUIContainer
are to be discarded. This normally
occurs when the user pushes the "Cancel" button.
No data validation occurs when the user cancels, and the
NavigableUIContainer
may or may not call the onExit
method of the
currently showing Traversable
. In general,
onExit
will not be called.
cancel
in interface ApplyListener
e
- The ApplyEvent
that provides contextual
information about when the ApplyEvent
was fired.public void setRootNavigables(Navigable[] rootNavigables)
oracle.ide.panels.NavigableUIContainer
Navigable
instances for the UI.
setRootNavigables
in interface oracle.ide.panels.NavigableUIContainer
protected void addListener(java.lang.Class eventClass, java.util.EventListener listener)
protected void removeListener(java.lang.Class eventClass, java.util.EventListener listener)
protected Navigable[] getRootNavigables()
protected final void maybeRefreshUI(TraversableContext tc)
protected java.util.Iterator getListenerIterator(java.lang.Class listenerClass)
protected void fireApply(ApplyEvent event)
ApplyListener
objects.
protected void fireCancel(ApplyEvent event)
ApplyListener
objects.
|
Extension SDK | ||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright © 1997, 2004, Oracle. All rights reserved.