public class MDDPanel extends DefaultTraversablePanel
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.
  If a panel that will be displayed by the MDDPanel has hint text that should
  be read for accessibility purposes, that hint text needs to be put into the
  TraversableContext by the panel using the key MDDPanel.CURRENT_TRAVERSABLE_HINT_TEXT
javax.swing.JPanel.AccessibleJPaneljavax.swing.JComponent.AccessibleJComponent| Modifier and Type | Field and Description | 
|---|---|
static java.lang.String | 
CURRENT_TRAVERSABLE  | 
static java.lang.String | 
CURRENT_TRAVERSABLE_HINT_TEXT  | 
static java.lang.String | 
CURRENT_TREE1  | 
static java.lang.String | 
CURRENT_TREE1_MODEL  | 
static java.lang.String | 
CURRENT_TREE1_NODE  | 
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(..). 
 | 
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWaccessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTNAVIGABLE_UI_CONTAINER| Modifier | Constructor and Description | 
|---|---|
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. 
 | 
| Modifier and Type | Method and Description | 
|---|---|
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(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. | 
protected TitledPanel | 
createTitledPanel(javax.swing.JPanel pnl)
Wraps the supplied panel in a new TitledPanel. 
 | 
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 | 
expandAll(javax.swing.JTree tree,
         boolean expand)  | 
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()
 | 
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()
 | 
protected javax.swing.JPanel | 
getDetailPanel()
Gets the detail-detail panel that is used in the card layout. 
 | 
protected javax.swing.JSplitPane | 
getDetailSplitPane()  | 
java.lang.String | 
getHelpID()
This method allows a subclass to implement a dynamic means of
  determining the help ID. 
 | 
protected java.util.Iterator | 
getListenerIterator(java.lang.Class listenerClass)  | 
protected javax.swing.JSplitPane | 
getMainSplitPane()  | 
protected Navigable[] | 
getRootNavigables()  | 
int | 
getTitleDepth()
Returns the number of levels in the master tree that will be used
  when generating the titlebar for the detail-detail panel. 
 | 
protected ControlBar | 
getTree1ControlBar()  | 
java.lang.String[] | 
getTree1SelectionPath()
Note: The onEntry must have already been called
  before this method will have an effect. 
 | 
protected javax.swing.JLabel | 
getTree1TitleLabel()  | 
boolean | 
isFilterAllowed()
Gets whether the filter control is allowed on this panel. 
 | 
protected void | 
maybeRefreshUI(TraversableContext tc)  | 
protected TraversableContext | 
newTraversableContext()
Adds design-time objects to the  
TraversableContext. | 
void | 
onEntry(TraversableContext tc)
Does nothing by default. 
 | 
void | 
onExit(TraversableContext tc)
Does nothing by default. 
 | 
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(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 | 
setFilterAllowed(boolean filterAllowed)
Sets whether the filter control is allowed in this panel. 
 | 
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 | 
setName(java.lang.String name)  | 
void | 
setRootNavigables(Navigable[] rootNavigables)
Sets the root-level  
Navigable instances for the UI. | 
void | 
setTitleDepth(int titleDepth)
Sets the number of levels in the master tree to use when generating
  the titlebar for the detail-detail panel. 
 | 
protected void | 
setTree1ControlBar(ControlBar controlBar)  | 
void | 
setTree1SelectionPath(java.lang.String[] selectionPath)  | 
void | 
setTree1SelectionPath(java.lang.String[] selectionPath,
                     boolean expandPath)
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. 
 | 
protected void | 
setTree1TitleLabel(javax.swing.JLabel label)  | 
gbc, gbc, getComponent, getDefaultTitle, getExitTransition, getText, setDefaultTitle, setHelpIDgetAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUIaddAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, updateadd, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTreeaction, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, 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, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycleclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetComponent, getExitTransitionpublic 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 CURRENT_TRAVERSABLE_HINT_TEXT
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
protected MDDPanel()
public MDDPanel(Navigable rootNavigable)
public MDDPanel(Navigable[] rootNavigables)
public MDDPanel(Navigable[] rootNavigables, boolean useDetailTree)
public final void setFilterAllowed(boolean filterAllowed)
filterAllowed - if true, the panel will provide a filter
    control for the primary tree.public final boolean isFilterAllowed()
public void expandAll(javax.swing.JTree tree,
                      boolean expand)
protected TitledPanel createTitledPanel(javax.swing.JPanel pnl)
protected ControlBar getTree1ControlBar()
protected void setTree1ControlBar(ControlBar controlBar)
protected javax.swing.JLabel getTree1TitleLabel()
protected void setTree1TitleLabel(javax.swing.JLabel label)
public boolean displayDetailNodesAsChildren()
NavigableUIContainertrue 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.
  displayDetailNodesAsChildren in interface NavigableUIContainerpublic void onEntry(TraversableContext tc)
DefaultTraversablePanelonEntry in interface Traversabletc - The data wrapper where the
  Traversable locates the data that it needs to
  populate the UI.Traversable.onEntry(TraversableContext)public void onExit(TraversableContext tc) throws TraversalException
DefaultTraversablePanelonExit in interface Traversabletc - 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.Traversable.onExit(TraversableContext)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,
                                  boolean expandPath)
TDialogLauncher constructor.  Once
  the MDDPanel has been associated with a TDialogLauncher, then
  this method may be called.public void setTree1SelectionPath(java.lang.String[] selectionPath)
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 setTitleDepth(int titleDepth)
public int getTitleDepth()
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()
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()
public void addMDDListener(MDDListener listener)
public void removeMDDListener(MDDListener listener)
public void addTreePanelComponent(java.awt.Component comp,
                                  java.lang.Object layoutConstraint)
public boolean enableSelectionDelay(boolean selectionDelay)
protected Navigable getCurrentNavigable()
Navigable that is currently selected in the UI.protected Traversable getCurrentTraversable()
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()
protected javax.swing.JPanel getDetailPanel()
public void setName(java.lang.String name)
setName in class java.awt.Componentpublic java.lang.String getHelpID()
DefaultTraversablePanelgetHelpID in interface TraversablegetHelpID in class DefaultTraversablePanelpublic void addApplyListener(ApplyListener applyListener)
ApplyNotifierApplyListener that will be called when the
  user applies or cancels changes.addApplyListener in interface ApplyNotifierpublic void removeApplyListener(ApplyListener applyListener)
ApplyNotifierApplyListener so that it
  no longer receives notification when the user applies or cancels
  changes.removeApplyListener in interface ApplyNotifierpublic void apply(ApplyEvent e)
ApplyListenerNavigableUIContainer 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 ApplyListeners is specified there.
apply in interface ApplyListenere - The ApplyEvent that provides contextual
  information about when the ApplyEvent was fired.public void cancel(ApplyEvent e)
ApplyListenerNavigableUIContainer 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 ApplyListenere - The ApplyEvent that provides contextual
  information about when the ApplyEvent was fired.public void setRootNavigables(Navigable[] rootNavigables)
NavigableUIContainerNavigable instances for the UI.setRootNavigables in interface NavigableUIContainerprotected 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.