|
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.