ucar.unidata.ui
Class DndTree

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JTree
                  extended by ucar.unidata.ui.DndTree
All Implemented Interfaces:
DragGestureListener, DragSourceListener, DropTargetListener, ImageObserver, MenuContainer, Serializable, EventListener, Accessible, Scrollable
Direct Known Subclasses:
BundleTree, DisplayTree, SettingsTree

public class DndTree
extends JTree
implements DragGestureListener, DragSourceListener, DropTargetListener

Class DndTree provides basic drag-and-drop facilities within a JTree. To use this facliity derive a class from this class. Overwrite the okToDrag, okToDrop and doDrop methods. Make sure that the tree nodes in the tree model are DefaultMutableTreeNode-s

Version:
$Revision: 1.9 $
Author:
IDV Development Team
See Also:
Serialized Form

Nested Class Summary
static class DndTree.TreeTransferable
          Class TreeTransferable
 
Nested classes/interfaces inherited from class javax.swing.JTree
JTree.AccessibleJTree, JTree.DynamicUtilTreeNode, JTree.EmptySelectionModel, JTree.TreeModelHandler, JTree.TreeSelectionRedirector
 
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.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
 
Fields inherited from class javax.swing.JTree
ANCHOR_SELECTION_PATH_PROPERTY, CELL_EDITOR_PROPERTY, CELL_RENDERER_PROPERTY, cellEditor, cellRenderer, editable, EDITABLE_PROPERTY, EXPANDS_SELECTED_PATHS_PROPERTY, INVOKES_STOP_CELL_EDITING_PROPERTY, invokesStopCellEditing, LARGE_MODEL_PROPERTY, largeModel, LEAD_SELECTION_PATH_PROPERTY, ROOT_VISIBLE_PROPERTY, rootVisible, ROW_HEIGHT_PROPERTY, rowHeight, SCROLLS_ON_EXPAND_PROPERTY, scrollsOnExpand, SELECTION_MODEL_PROPERTY, selectionModel, selectionRedirector, SHOWS_ROOT_HANDLES_PROPERTY, showsRootHandles, TOGGLE_CLICK_COUNT_PROPERTY, toggleClickCount, TREE_MODEL_PROPERTY, treeModel, treeModelListener, VISIBLE_ROW_COUNT_PROPERTY, visibleRowCount
 
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
DndTree()
          Create me
DndTree(TreeModel treeModel)
          Create me with the given model
 
Method Summary
protected  void doDrop(DefaultMutableTreeNode sourceNode, DefaultMutableTreeNode destNode)
          This is called when the user drops the node
protected  void doDrop(DefaultMutableTreeNode sourceNode, DefaultMutableTreeNode destNode, boolean onNode)
          This is called when the user drops the node
 void dragDropEnd(DragSourceDropEvent dsde)
          Some DND interface method
 void dragEnter(DragSourceDragEvent dsde)
          Some DND interface method
 void dragEnter(DropTargetDragEvent dtde)
          Handle the drag enter event
 void dragExit(DragSourceEvent dse)
          Some DND interface method
 void dragExit(DropTargetEvent dte)
          Drag has left the building
 void dragGestureRecognized(DragGestureEvent e)
          Initialize the drag
 void dragOver(DragSourceDragEvent dsde)
          Some DND interface method
 void dragOver(DropTargetDragEvent dtde)
          Handle the DND event
 void drop(DropTargetDropEvent dtde)
          Handle the drop event
 void dropActionChanged(DragSourceDragEvent dsde)
          Some DND interface method
 void dropActionChanged(DropTargetDragEvent dtde)
          Some DND event
protected  boolean okToDrag(DefaultMutableTreeNode sourceNode)
          Ok to drag
protected  boolean okToDrop(DefaultMutableTreeNode sourceNode, DefaultMutableTreeNode destNode)
          Ok to drop
protected  boolean okToDrop(DefaultMutableTreeNode sourceNode, DefaultMutableTreeNode destNode, boolean onNode)
          Ok to drop
 void paint(Graphics g)
          Overwrite paint to draw the drag line
protected  Cursor selectCursor(int action)
          Set the cursor for the drag
 
Methods inherited from class javax.swing.JTree
addSelectionInterval, addSelectionPath, addSelectionPaths, addSelectionRow, addSelectionRows, addTreeExpansionListener, addTreeSelectionListener, addTreeWillExpandListener, cancelEditing, clearSelection, clearToggledPaths, collapsePath, collapseRow, convertValueToText, createTreeModel, createTreeModelListener, expandPath, expandRow, fireTreeCollapsed, fireTreeExpanded, fireTreeWillCollapse, fireTreeWillExpand, fireValueChanged, getAccessibleContext, getAnchorSelectionPath, getCellEditor, getCellRenderer, getClosestPathForLocation, getClosestRowForLocation, getDefaultTreeModel, getDescendantToggledPaths, getDragEnabled, getEditingPath, getExpandedDescendants, getExpandsSelectedPaths, getInvokesStopCellEditing, getLastSelectedPathComponent, getLeadSelectionPath, getLeadSelectionRow, getMaxSelectionRow, getMinSelectionRow, getModel, getNextMatch, getPathBetweenRows, getPathBounds, getPathForLocation, getPathForRow, getPreferredScrollableViewportSize, getRowBounds, getRowCount, getRowForLocation, getRowForPath, getRowHeight, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getScrollsOnExpand, getSelectionCount, getSelectionModel, getSelectionPath, getSelectionPaths, getSelectionRows, getShowsRootHandles, getToggleClickCount, getToolTipText, getTreeExpansionListeners, getTreeSelectionListeners, getTreeWillExpandListeners, getUI, getUIClassID, getVisibleRowCount, hasBeenExpanded, isCollapsed, isCollapsed, isEditable, isEditing, isExpanded, isExpanded, isFixedRowHeight, isLargeModel, isPathEditable, isPathSelected, isRootVisible, isRowSelected, isSelectionEmpty, isVisible, makeVisible, paramString, removeDescendantSelectedPaths, removeDescendantToggledPaths, removeSelectionInterval, removeSelectionPath, removeSelectionPaths, removeSelectionRow, removeSelectionRows, removeTreeExpansionListener, removeTreeSelectionListener, removeTreeWillExpandListener, scrollPathToVisible, scrollRowToVisible, setAnchorSelectionPath, setCellEditor, setCellRenderer, setDragEnabled, setEditable, setExpandedState, setExpandsSelectedPaths, setInvokesStopCellEditing, setLargeModel, setLeadSelectionPath, setModel, setRootVisible, setRowHeight, setScrollsOnExpand, setSelectionInterval, setSelectionModel, setSelectionPath, setSelectionPaths, setSelectionRow, setSelectionRows, setShowsRootHandles, setToggleClickCount, setUI, setVisibleRowCount, startEditingAtPath, stopEditing, treeDidChange, 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, 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, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, 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
 
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
 

Constructor Detail

DndTree

public DndTree()
Create me


DndTree

public DndTree(TreeModel treeModel)
Create me with the given model

Parameters:
treeModel - The tree model
Method Detail

okToDrag

protected boolean okToDrag(DefaultMutableTreeNode sourceNode)
Ok to drag

Parameters:
sourceNode - The node to drag
Returns:
Is it ok to drag the given node

okToDrop

protected boolean okToDrop(DefaultMutableTreeNode sourceNode,
                           DefaultMutableTreeNode destNode,
                           boolean onNode)
Ok to drop

Parameters:
sourceNode - From where
destNode - To where
onNode - _more_
Returns:
Is it ok to drop the given source node on the dest node.

okToDrop

protected boolean okToDrop(DefaultMutableTreeNode sourceNode,
                           DefaultMutableTreeNode destNode)
Ok to drop

Parameters:
sourceNode - From where
destNode - To where
Returns:
Is it ok to drop the given source node on the dest node.

doDrop

protected void doDrop(DefaultMutableTreeNode sourceNode,
                      DefaultMutableTreeNode destNode,
                      boolean onNode)
This is called when the user drops the node

Parameters:
sourceNode - From where
destNode - To where
onNode - _more_

doDrop

protected void doDrop(DefaultMutableTreeNode sourceNode,
                      DefaultMutableTreeNode destNode)
This is called when the user drops the node

Parameters:
sourceNode - From where
destNode - To where

dragGestureRecognized

public void dragGestureRecognized(DragGestureEvent e)
Initialize the drag

Specified by:
dragGestureRecognized in interface DragGestureListener
Parameters:
e - The drag event

selectCursor

protected Cursor selectCursor(int action)
Set the cursor for the drag

Parameters:
action - The drag action
Returns:
The drag cursor

dragDropEnd

public void dragDropEnd(DragSourceDropEvent dsde)
Some DND interface method

Specified by:
dragDropEnd in interface DragSourceListener
Parameters:
dsde - The event

dragEnter

public void dragEnter(DragSourceDragEvent dsde)
Some DND interface method

Specified by:
dragEnter in interface DragSourceListener
Parameters:
dsde - The event

dragExit

public void dragExit(DragSourceEvent dse)
Some DND interface method

Specified by:
dragExit in interface DragSourceListener
Parameters:
dse - The event

dragOver

public void dragOver(DragSourceDragEvent dsde)
Some DND interface method

Specified by:
dragOver in interface DragSourceListener
Parameters:
dsde - The event

dropActionChanged

public void dropActionChanged(DragSourceDragEvent dsde)
Some DND interface method

Specified by:
dropActionChanged in interface DragSourceListener
Parameters:
dsde - The event

dragEnter

public void dragEnter(DropTargetDragEvent dtde)
Handle the drag enter event

Specified by:
dragEnter in interface DropTargetListener
Parameters:
dtde - The event

dragExit

public void dragExit(DropTargetEvent dte)
Drag has left the building

Specified by:
dragExit in interface DropTargetListener
Parameters:
dte - The event

dragOver

public void dragOver(DropTargetDragEvent dtde)
Handle the DND event

Specified by:
dragOver in interface DropTargetListener
Parameters:
dtde - The event

drop

public void drop(DropTargetDropEvent dtde)
Handle the drop event

Specified by:
drop in interface DropTargetListener
Parameters:
dtde - The event

dropActionChanged

public void dropActionChanged(DropTargetDragEvent dtde)
Some DND event

Specified by:
dropA