JIDE 3.5.15

com.jidesoft.combobox
Class TreeChooserPanel

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by com.jidesoft.combobox.PopupPanel
                      extended by com.jidesoft.combobox.TreeChooserPanel
All Implemented Interfaces:
ItemListener, ImageObserver, ItemSelectable, MenuContainer, Serializable, EventListener, Accessible
Direct Known Subclasses:
CheckBoxTreeChooserPanel

public class TreeChooserPanel
extends PopupPanel
implements ItemListener

TreeChooserPanel is a PopupPanel that can choose a value from a tree.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  TreeModel _model
           
protected  KeyListener keyListener
          This protected field is implementation specific.
protected  MouseListener mouseListener
          This protected field is implementation specific.
protected  MouseMotionListener mouseMotionListener
          This protected field is implementation specific.
protected  MouseListener treeMouseListener
          This protected field is implementation specific.
protected  MouseMotionListener treeMouseMotionListener
          This protected field is implementation specific.
protected  TreeSelectionListener treeSelectionListener
          This protected field is implementation specific.
 
Fields inherited from class com.jidesoft.combobox.PopupPanel
_previousSelectedObject, SELECTED_BY_MOUSE_ROLLOVER
 
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 java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
TreeChooserPanel()
          Creates a new TreeChooserPanel.
TreeChooserPanel(Hashtable<?,?> objects)
          Creates a new JPanel with a double buffer and a flow layout.
TreeChooserPanel(Object object)
          Creates a new TreeChooserPanel.
TreeChooserPanel(Object[] objects)
          Creates a new TreeChooserPanel.
TreeChooserPanel(TreeModel model)
          Creates a new JPanel with a double buffer and a flow layout.
TreeChooserPanel(Vector<?> objects)
          Creates a new JPanel with a double buffer and a flow layout.
 
Method Summary
protected  MouseEvent convertMouseEvent(MouseEvent e)
           
protected  ItemListener createItemListener()
          Creates an ItemListener which will be added to the combo box.
protected  KeyListener createKeyListener()
          Creates the key listener that will be added to the combo box.
protected  ListDataListener createListDataListener()
          Creates a list data listener which will be added to the ComboBoxModel.
protected  MouseListener createMouseListener()
          Creates a listener that will watch for mouse-press and release events on the combo box.
protected  MouseMotionListener createMouseMotionListener()
          Creates the mouse motion listener which will be added to the combo box.
protected  PropertyChangeListener createPropertyChangeListener()
          Creates a PropertyChangeListener which will be added to the combo box.
protected  JTree createTree(TreeModel model)
          Subclass can override this method to create a custom tree.
static TreeModel createTreeModel(Object value)
          Returns a TreeModel wrapping the specified object.
protected  MouseListener createTreeMouseListener()
          Creates a mouse listener that watches for mouse events in the popup's list.
protected  MouseMotionListener createTreeMouseMotionListener()
          Creates a mouse motion listener that watches for mouse motion events in the popup's list.
protected  TreeSelectionListener createTreeSelectionListener()
          Creates a list selection listener that watches for selection changes in the popup's list.
protected  void customizeScroller(JScrollPane scroller)
          Configures the scrollable portion which holds the tree within the combo box popup.
 TreeCellRenderer getCellRenderer()
          Returns the renderer used to display the selected item in the JComboBox field.
protected static TreeModel getDefaultTreeModel()
          Creates and returns a sample TreeModel.
 int getMaximumRowCount()
          Gets the maximum number of rows the JTree displays
 JTree getTree()
          Gets the JTree.
protected  void initComponents()
           
protected  void installTreeListeners()
          Adds the listeners to the list control.
 boolean isDoubleClickExpand()
          Get the flag indicating if the mouse double click would expand the tree path instead of just select it.
 boolean isSearchUserObjectToSelect()
          Gets the flag indicating if TreeChooserPanel will search all its tree path's userObject to make the selection if the selected object is set to a non-TreePath value.
protected  boolean isValidSelection(TreePath path)
          Checks if a given tree path is a valid selection for combobox.
 void itemStateChanged(ItemEvent e)
           
 void setCellRenderer(TreeCellRenderer cellRenderer)
          Sets the renderer that paints the tree items and the item selected from the tree in the JComboBox field.
 void setDoubleClickExpand(boolean doubleClickExpand)
          Set the flag indicating if the mouse double click would expand the tree path instead of just select it.
 void setMaximumRowCount(int count)
          Sets the maximum number of rows the JTree displays.
 void setSearchUserObjectToSelect(boolean searchUserObjectToSelect)
          Sets the flag indicating if TreeChooserPanel will search all its tree path's userObject to make the selection if the selected object is set to a non-TreePath value.
protected  void setupTree(JTree tree)
          Configures the tree.
protected  void updateTreeSelectionForEvent(MouseEvent anEvent, boolean shouldScroll)
          A utility method used by the event listeners.
 
Methods inherited from class com.jidesoft.combobox.PopupPanel
addItemListener, addItemListener, fireItemStateChanged, getActualPreferredSize, getDefaultFocusComponent, getItemListeners, getMouseListener, getMouseMotionListener, getPreferredSize, getPreviousSelectedObject, getResizableCorners, getSelectedObject, getSelectedObjects, getTitle, isResetButtonVisible, isResizable, isStretchToFit, needsButtons, removeAllListeners, removeItemListener, requestFocus, setDefaultFocusComponent, setNeedButtons, setPreferredSize, setResizable, setResizableCorners, setSelectedObject, setSelectedObject, setSelectedObject, setSelectedObject, setStretchToFit, setTitle
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
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, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, 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, 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, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
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, 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, 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, hide, 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, 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
 

Field Detail

_model

protected TreeModel _model

mouseMotionListener

protected MouseMotionListener mouseMotionListener
This protected field is implementation specific. Do not access directly or override. Use the accessor or create methods instead.


mouseListener

protected MouseListener mouseListener
This protected field is implementation specific. Do not access directly or override. Use the accessor or create methods instead.


keyListener

protected KeyListener keyListener
This protected field is implementation specific. Do not access directly or override. Use the accessor or create methods instead.

See Also:
createKeyListener()

treeSelectionListener

protected TreeSelectionListener treeSelectionListener
This protected field is implementation specific. Do not access directly or override. Use the create method instead.

See Also:
createTreeSelectionListener()

treeMouseListener

protected MouseListener treeMouseListener
This protected field is implementation specific. Do not access directly or override. Use the create method instead.

See Also:
createTreeMouseListener()

treeMouseMotionListener

protected MouseMotionListener treeMouseMotionListener
This protected field is implementation specific. Do not access directly or override. Use the create method instead

See Also:
createTreeMouseMotionListener()
Constructor Detail

TreeChooserPanel

public TreeChooserPanel()
Creates a new TreeChooserPanel.


TreeChooserPanel

public TreeChooserPanel(Object object)
Creates a new TreeChooserPanel.

Parameters:
object - the object to create tree model

TreeChooserPanel

public TreeChooserPanel(Object[] objects)
Creates a new TreeChooserPanel.

Parameters:
objects - the objects to create tree model

TreeChooserPanel

public TreeChooserPanel(Vector<?> objects)
Creates a new JPanel with a double buffer and a flow layout.

Parameters:
objects - the objects to create tree model

TreeChooserPanel

public TreeChooserPanel(Hashtable<?,?> objects)
Creates a new JPanel with a double buffer and a flow layout.

Parameters:
objects - the objects to create tree model

TreeChooserPanel

public TreeChooserPanel(TreeModel model)
Creates a new JPanel with a double buffer and a flow layout.

Parameters:
model - the tree model
Method Detail

initComponents

protected void initComponents()

customizeScroller

protected void customizeScroller(JScrollPane scroller)
Configures the scrollable portion which holds the tree within the combo box popup. This method is called when the UI class is created.

Parameters:
scroller - the JScrollPane.

createTree

protected JTree createTree(TreeModel model)
Subclass can override this method to create a custom tree. The Searchable is installed in this method. If you override, you need to install the Searchable on the tree by yourself. Please note, you must use the model passed in as parameter for the tree you created. If you want to use your own model, please pass it in through the constructor of TreeChooserPanel.

Parameters:
model - the tree model.
Returns:
the tree

setupTree

protected void setupTree(JTree tree)
Configures the tree. The base class sets cell renderer and add mouse/key listener in this method. Subclass can override this method to do additional setup.

Parameters:
tree - the JTree

itemStateChanged

public void itemStateChanged(ItemEvent e)
Specified by:
itemStateChanged in interface ItemListener

getMaximumRowCount

public int getMaximumRowCount()
Gets the maximum number of rows the JTree displays

Returns:
the maximum number of rows the JTree displays.

setMaximumRowCount

public void setMaximumRowCount(int count)
Sets the maximum number of rows the JTree displays. If the number of objects in the model is greater than count, the tree uses a scrollbar.

Parameters:
count - an integer specifying the maximum number of items to display in the tree before using a scrollbar

getCellRenderer

public TreeCellRenderer getCellRenderer()
Returns the renderer used to display the selected item in the JComboBox field.

Returns:
the tree cell renderer.

setCellRenderer

public void setCellRenderer(TreeCellRenderer cellRenderer)
Sets the renderer that paints the tree items and the item selected from the tree in the JComboBox field. The renderer is used if the JComboBox is not editable. If it is editable, the editor is used to render and edit the selected item.

The default renderer displays a string or an icon. Other renderers can handle graphic images and composite items.

To display the selected item, aRenderer.getTreeCellRendererComponent is called, passing the tree object and an index of -1.

Parameters:
cellRenderer - the TreeCellRenderer that displays the selected item

getTree

public JTree getTree()
Gets the JTree.

Returns:
the JTree.

getDefaultTreeModel

protected static TreeModel getDefaultTreeModel()
Creates and returns a sample TreeModel. Used primarily for beanbuilders to show something interesting.

Returns:
the default TreeModel

createTreeModel

public static TreeModel createTreeModel(Object value)
Returns a TreeModel wrapping the specified object. If the object is:then a new root node is created with each of the incoming objects as children. Otherwise, a new root is created with the specified object as its value.

Parameters:
value - the Object used as the foundation for the TreeModel
Returns:
a TreeModel wrapping the specified object

isValidSelection

protected boolean isValidSelection(TreePath path)
Checks if a given tree path is a valid selection for combobox. By default it always return true, meaning all tree path could be used as a valid value of combo box.Subclass can override this method to limit the valid selection to certain tree path. For example, check if last node in the tree path is leaf node and only allow leaf node to be a valid selection.

Parameters:
path - the tree path
Returns:
true or false.

isDoubleClickExpand

public boolean isDoubleClickExpand()
Get the flag indicating if the mouse double click would expand the tree path instead of just select it.

By default, the flag is false to keep the original behavior. You could set it to true if you want choose leaf node only.

Returns:
true if the mouse double click would expand the tree path. Otherwise false.

setDoubleClickExpand

public void setDoubleClickExpand(boolean doubleClickExpand)
Set the flag indicating if the mouse double click would expand the tree path instead of just select it.

Parameters:
doubleClickExpand - the flag
See Also:
isDoubleClickExpand()

isSearchUserObjectToSelect

public boolean isSearchUserObjectToSelect()
Gets the flag indicating if TreeChooserPanel will search all its tree path's userObject to make the selection if the selected object is set to a non-TreePath value.

Returns:
true if searching to select is required. Otherwise false.
Since:
3.3.0
See Also:
setSearchUserObjectToSelect(boolean)

setSearchUserObjectToSelect

public void setSearchUserObjectToSelect(boolean searchUserObjectToSelect)
Sets the flag indicating if TreeChooserPanel will search all its tree path's userObject to make the selection if the selected object is set to a non-TreePath value.

By default, the flag is false to improve the performance.

Parameters:
searchUserObjectToSelect - the flag
Since:
3.3.0

convertMouseEvent

protected MouseEvent convertMouseEvent(MouseEvent e)

updateTreeSelectionForEvent

protected void updateTreeSelectionForEvent(MouseEvent anEvent,
                                           boolean shouldScroll)
A utility method used by the event listeners. Given a mouse event, it changes the list selection to the list item below the mouse.

Parameters:
anEvent - the mouse event
shouldScroll - the flag indicating if the tree should be scrolled to visible rectangle

createMouseListener

protected MouseListener createMouseListener()
Creates a listener that will watch for mouse-press and release events on the combo box.

Warning: When overriding this method, make sure to maintain the existing behavior.

Returns:
a MouseListener which will be added to the combo box or null

createMouseMotionListener

protected MouseMotionListener createMouseMotionListener()
Creates the mouse motion listener which will be added to the combo box.

Warning: When overriding this method, make sure to maintain the existing behavior.

Returns:
a MouseMotionListener which will be added to the combo box or null

createKeyListener

protected KeyListener createKeyListener()
Creates the key listener that will be added to the combo box. If this method returns null then it will not be added to the combo box.

Returns:
a KeyListener or null

createTreeSelectionListener

protected TreeSelectionListener createTreeSelectionListener()
Creates a list selection listener that watches for selection changes in the popup's list. If this method returns null then it will not be added to the popup list.

Returns:
an instance of a ListSelectionListener or null

createListDataListener

protected ListDataListener createListDataListener()
Creates a list data listener which will be added to the ComboBoxModel. If this method returns null then it will not be added to the combo box model.

Returns:
an instance of a ListDataListener or null

createTreeMouseListener

protected MouseListener createTreeMouseListener()
Creates a mouse listener that watches for mouse events in the popup's list. If this method returns null then it will not be added to the combo box.

Returns:
an instance of a MouseListener or null

createTreeMouseMotionListener

protected MouseMotionListener createTreeMouseMotionListener()
Creates a mouse motion listener that watches for mouse motion events in the popup's list. If this method returns null then it will not be added to the combo box.

Returns:
an instance of a MouseMotionListener or null

createPropertyChangeListener

protected PropertyChangeListener createPropertyChangeListener()
Creates a PropertyChangeListener which will be added to the combo box. If this method returns null then it will not be added to the combo box.

Returns:
an instance of a PropertyChangeListener or null

createItemListener

protected ItemListener createItemListener()
Creates an ItemListener which will be added to the combo box. If this method returns null then it will not be added to the combo box.

Subclasses may override this method to return instances of their own ItemEvent handlers.

Returns:
an instance of an ItemListener or null

installTreeListeners

protected void installTreeListeners()
Adds the listeners to the list control.


JIDE 3.5.15