CubeTwister 2.0alpha142 2012-02-11

ch.randelshofer.gui
Class JDnDTree

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 ch.randelshofer.gui.MutableJTree
                      extended by ch.randelshofer.gui.JDnDTree
All Implemented Interfaces:
java.awt.dnd.Autoscroll, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.Scrollable, org.jhotdraw.gui.EditableComponent

public class JDnDTree
extends MutableJTree
implements java.awt.dnd.Autoscroll

JDnDTree.

Version:
2.2 2011-01-22 Use DefaultMutableTreeNode instead of MutableTreeNode.
2.1.1 2010-11-06 Fixes possible NPE in method getSupportedDragActions.
2.1 2010-01-09 Moved transfer handler into super class.
2.0.1 2008-12-25 Mostly fixed insertion point determination when dropping an object.
2.0 2008-03-21 Reimplemented with TransferHandler. Renamed from DnDJTree to JDnDTree.
1.0 May 16, 2004 Created.
Author:
Werner Randelshofer
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JTree
javax.swing.JTree.AccessibleJTree, javax.swing.JTree.DropLocation, javax.swing.JTree.DynamicUtilTreeNode, javax.swing.JTree.EmptySelectionModel, javax.swing.JTree.TreeModelHandler, javax.swing.JTree.TreeSelectionRedirector
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.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 org.jhotdraw.gui.EditableComponent
SELECTION_EMPTY_PROPERTY
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
JDnDTree()
          Creates new form.
JDnDTree(MutableTreeModel m)
          Constructs a DnDJList with the specified MutableTreeModel.
 
Method Summary
 void autoscroll(java.awt.Point location)
          notify the Component to autoscroll
protected  java.awt.Image createDragImage(java.awt.Point dragOrigin, javax.swing.tree.TreePath dragOriginPath, javax.swing.tree.TreePath[] draggedPaths, boolean isSelected, java.awt.Point imageOffset)
          Creates a drag image and computes the image offset as a side effect.
 java.awt.Insets getAutoscrollInsets()
          This method returns the Insets describing the autoscrolling region or border relative to the geometry of the implementing Component.
 boolean getPaintsDropCursor()
          Returns true if the DnDJList paints a drop cursor when it is an active drop target.
 int getSupportedDragActions()
          This method returns an int representing the type of drag action(s) this DnDJList supports.
 int getSupportedDropActions()
          This method returns an int representing the type of drop action(s) this DnDJList supports.
protected  void paintAutoscrollRegion(java.awt.Graphics g)
          Paints a rectangle which gives the user a hint, where the autoscroll region is.
 void paintComponent(java.awt.Graphics g)
          Paints the component and draws the drop cursor and the autoscroll region if the DnDJList is an active drop target.
protected  void paintDropCursor(java.awt.Graphics g)
          Paints a cursor which gives the user a hint, where the potential insertion point of the current drag and drop operation is.
protected  void repaintDropCursor(javax.swing.tree.TreePath oldInsertionIndex, javax.swing.tree.TreePath newInsertionIndex)
          Calls repaint for the graphics region where the old insertion point was and where the new insertion point is.
 void setEnabled(boolean b)
          Sets the enabled state of the DnDJList.
 void setModel(javax.swing.tree.TreeModel m)
          Sets the model that represents the contents or "value" of the list.
 void setPaintsDropCursor(boolean b)
          Turns the drop cursor feature on or of.
 void setSupportedDragActions(int actions)
          This method sets the permitted source drag action(s) for this DnDJList.
 void setSupportedDropActions(int actions)
          This method sets the permitted target drop action(s) for this DnDJList.
 
Methods inherited from class ch.randelshofer.gui.MutableJTree
addNotify, configureEnclosingScrollPane, create, createPopup, delete, duplicate, getPopupButton, removeNotify, selectAll, showPopup, unconfigureEnclosingScrollPane
 
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, getDropLocation, getDropMode, 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, setDropMode, setEditable, setExpandedState, setExpandsSelectedPaths, setInvokesStopCellEditing, setLargeModel, setLeadSelectionPath, 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, 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, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, 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
 
Methods inherited from interface org.jhotdraw.gui.EditableComponent
addPropertyChangeListener, clearSelection, isSelectionEmpty, removePropertyChangeListener
 

Constructor Detail

JDnDTree

public JDnDTree()
Creates new form.


JDnDTree

public JDnDTree(MutableTreeModel m)
Constructs a DnDJList with the specified MutableTreeModel.

Method Detail

setModel

public void setModel(javax.swing.tree.TreeModel m)
Sets the model that represents the contents or "value" of the list. The DnDJList supports drag and drop operations only when the model is an instance of MutableTreeModel.

Overrides:
setModel in class javax.swing.JTree

setSupportedDragActions

public void setSupportedDragActions(int actions)
This method sets the permitted source drag action(s) for this DnDJList.

This is a bound property.

Parameters:
actions - the permitted source drag action(s). The value is constructed by doing a logical OR of the desired actions specified by the DnDConstants.ACTION_... constants.
See Also:
DnDConstants

getSupportedDragActions

public int getSupportedDragActions()
This method returns an int representing the type of drag action(s) this DnDJList supports.

Returns:
the currently permitted drag action(s) The value is constructed by doing a logical OR of the desired actions specified by the DnDConstants.ACTION_... constants.
See Also:
DnDConstants

setSupportedDropActions

public void setSupportedDropActions(int actions)
This method sets the permitted target drop action(s) for this DnDJList.

Parameters:
actions - the permitted target drop action(s). The value is constructed by doing a logical OR of the desired actions specified by the DnDConstants.ACTION_... constants.
See Also:
DnDConstants

getSupportedDropActions

public int getSupportedDropActions()
This method returns an int representing the type of drop action(s) this DnDJList supports.

Returns:
the currently permitted drop action(s) The value is constructed by doing a logical OR of the desired actions specified by the DnDConstants.ACTION_... constants.
See Also:
DnDConstants

setEnabled

public void setEnabled(boolean b)
Sets the enabled state of the DnDJList. Also sets the drop target's active state.

Overrides:
setEnabled in class MutableJTree
See Also:
DropTarget.setActive(boolean)

setPaintsDropCursor

public void setPaintsDropCursor(boolean b)
Turns the drop cursor feature on or of.

The drop cursor indicates where an item will be inserted when the user drops an object at the current mouse location.

The drop cursor is shown only, when the DnDJList is the target of the current drag and drop operation and when it can accept the dragged object.


getPaintsDropCursor

public boolean getPaintsDropCursor()
Returns true if the DnDJList paints a drop cursor when it is an active drop target.


paintComponent

public void paintComponent(java.awt.Graphics g)
Paints the component and draws the drop cursor and the autoscroll region if the DnDJList is an active drop target.

Overrides:
paintComponent in class javax.swing.JComponent

paintAutoscrollRegion

protected void paintAutoscrollRegion(java.awt.Graphics g)
Paints a rectangle which gives the user a hint, where the autoscroll region is.


paintDropCursor

protected void paintDropCursor(java.awt.Graphics g)
Paints a cursor which gives the user a hint, where the potential insertion point of the current drag and drop operation is.

Note that you have to change method repaintInsertPoint if you change the shape of the drop cursor. �@see


getAutoscrollInsets

public java.awt.Insets getAutoscrollInsets()
This method returns the Insets describing the autoscrolling region or border relative to the geometry of the implementing Component.

This value is read once by the DropTarget upon entry of the drag Cursor into the associated Component.

Specified by:
getAutoscrollInsets in interface java.awt.dnd.Autoscroll
Returns:
the Insets

autoscroll

public void autoscroll(java.awt.Point location)
notify the Component to autoscroll

Specified by:
autoscroll in interface java.awt.dnd.Autoscroll
Parameters:
location - A Point indicating the location of the cursor that triggered this operation.

createDragImage

protected java.awt.Image createDragImage(java.awt.Point dragOrigin,
                                         javax.swing.tree.TreePath dragOriginPath,
                                         javax.swing.tree.TreePath[] draggedPaths,
                                         boolean isSelected,
                                         java.awt.Point imageOffset)
Creates a drag image and computes the image offset as a side effect.

Parameters:
dragOrigin - The mouse location in component coordinates where the drag gesture was recognized.
dragOriginPath - The path of the node at the drag origin.
draggedPaths - The paths of the nodes to be dragged.
isSelected - Indicates whether the dragged items are selected or not.
imageOffset - The image offset. As a side effect, the x and y coordinates of the argument will be set by this method. The image offset is to be used along with the returned image when invoking the start drag method!
Returns:
The drag image. To be used along with the imageOffset in a call to start drag.

repaintDropCursor

protected void repaintDropCursor(javax.swing.tree.TreePath oldInsertionIndex,
                                 javax.swing.tree.TreePath newInsertionIndex)
Calls repaint for the graphics region where the old insertion point was and where the new insertion point is.

Parameters:
oldInsertionIndex - index of the old insertion point.
Range: 0 <= value <= getModel().getSize()
newInsertionIndex - index of the new insertion point.
Range: 0 <= value <= getModel().getSize()

(c) Werner Randelshofer.
All rights reserved.