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.AccessibleJPanel
javax.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(..).
|
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
NAVIGABLE_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, setHelpID
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
addAncestorListener, 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, update
add, 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, validateTree
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, 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, transferFocusUpCycle
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getComponent, getExitTransition
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 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()
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.
displayDetailNodesAsChildren
in interface NavigableUIContainer
public void onEntry(TraversableContext tc)
DefaultTraversablePanel
onEntry
in interface Traversable
tc
- 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
DefaultTraversablePanel
onExit
in interface Traversable
tc
- The data object where changes made in the UI
should be copied so that the changes can be accessed by other
Traversable
s.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.Component
public java.lang.String getHelpID()
DefaultTraversablePanel
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)
NavigableUIContainer
Navigable
instances for the UI.setRootNavigables
in interface 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.