Class DnDList<T>

  • All Implemented Interfaces:
    DragGestureListener, DragSourceListener, DropTargetListener, ImageObserver, MenuContainer, Serializable, EventListener, Accessible, Scrollable

    public class DnDList<T>
    extends JList<T>
    implements DragGestureListener, DragSourceListener, DropTargetListener
    A sub-class of JList that supports drag and drop to reorder items within a single list and to copy or move items between lists. It is used by the MapLayerTable widget but has been written in a general fashion so that it may be used for other pusposes.
    Since:
    2.6
    Author:
    Michael Bedward
    See Also:
    DnDListModel, Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class JList

        JList.AccessibleJList, JList.DropLocation
      • Nested classes/interfaces inherited from class JComponent

        JComponent.AccessibleJComponent
      • Nested classes/interfaces inherited from class Container

        Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class Component

        Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
    • Field Summary

      • Fields inherited from class JList

        HORIZONTAL_WRAP, VERTICAL, VERTICAL_WRAP
      • Fields inherited from class JComponent

        listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
      • Fields inherited from class Component

        accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
      • Fields inherited from interface ImageObserver

        ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
    • Constructor Summary

      Constructors 
      Constructor Description
      DnDList()
      Default constructor.
      DnDList​(DnDListModel<T> model)
      Constructor allowing the list model to be specified
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void dragDropEnd​(DragSourceDropEvent dsde)
      Description copied from interface:
      This method is invoked to signify that the Drag and Drop operation is complete.
      void dragEnter​(DragSourceDragEvent dsde)
      DragSourceListener method - presently ignored
      void dragEnter​(DropTargetDragEvent dtde)
      Records the index of the list item (if any) pointed to by the mouse cursor
      void dragExit​(DragSourceEvent dse)
      DragSourceListener method - presently ignored
      void dragExit​(DropTargetEvent dte)
      Description copied from interface:
      Called while a drag operation is ongoing, when the mouse pointer has exited the operable part of the drop site for the DropTarget registered with this listener.
      void dragGestureRecognized​(DragGestureEvent dge)
      Called by the system when a drag gesture starts
      void dragOver​(DragSourceDragEvent dsde)
      DragSourceListener method - presently ignored
      void dragOver​(DropTargetDragEvent dtde)
      Records the index of the list item (if any) pointed to by the mouse cursor
      void drop​(DropTargetDropEvent dtde)
      Handles the moving (for drag and drop actions within this list) or transfer (for actions between lists) of list items.
      void dropActionChanged​(DragSourceDragEvent dsde)
      DragSourceListener method - presently ignored
      void dropActionChanged​(DropTargetDragEvent dtde)
      DropTargetListener method - presently ignored
      DnDListModel<T> getModel()  
      • Methods inherited from class JList

        addListSelectionListener, addSelectionInterval, clearSelection, createSelectionModel, ensureIndexIsVisible, fireSelectionValueChanged, getAccessibleContext, getAnchorSelectionIndex, getCellBounds, getCellRenderer, getDragEnabled, getDropLocation, getDropMode, getFirstVisibleIndex, getFixedCellHeight, getFixedCellWidth, getLastVisibleIndex, getLayoutOrientation, getLeadSelectionIndex, getListSelectionListeners, getMaxSelectionIndex, getMinSelectionIndex, getNextMatch, getPreferredScrollableViewportSize, getPrototypeCellValue, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getSelectedIndex, getSelectedIndices, getSelectedValue, getSelectedValues, getSelectedValuesList, getSelectionBackground, getSelectionForeground, getSelectionMode, getSelectionModel, getToolTipText, getUI, getUIClassID, getValueIsAdjusting, getVisibleRowCount, indexToLocation, isSelectedIndex, isSelectionEmpty, locationToIndex, paramString, removeListSelectionListener, removeSelectionInterval, setCellRenderer, setDragEnabled, setDropMode, setFixedCellHeight, setFixedCellWidth, setLayoutOrientation, setListData, setListData, setModel, setPrototypeCellValue, setSelectedIndex, setSelectedIndices, setSelectedValue, setSelectionBackground, setSelectionForeground, setSelectionInterval, setSelectionMode, setSelectionModel, setUI, setValueIsAdjusting, setVisibleRowCount, updateUI
      • Methods inherited from class 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, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, 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
      • Methods inherited from class 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, transferFocusDownCycle, validate, validateTree
      • Methods inherited from class 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, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
      • Methods inherited from class Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • DnDList

        public DnDList()
        Default constructor. An DnDListModel object will be created for the list.
      • DnDList

        public DnDList​(DnDListModel<T> model)
        Constructor allowing the list model to be specified
        Parameters:
        model - an instance of DnDListModel
        Throws:
        IllegalArgumentException - if model is null
    • Method Detail

      • getModel

        public DnDListModel<T> getModel()
        Overrides:
        getModel in class JList<T>
      • dragGestureRecognized

        public void dragGestureRecognized​(DragGestureEvent dge)
        Called by the system when a drag gesture starts
        Specified by:
        dragGestureRecognized in interface DragGestureListener
      • dragEnter

        public void dragEnter​(DragSourceDragEvent dsde)
        DragSourceListener method - presently ignored

        Description copied from interface:
        Called as the cursor's hotspot enters a platform-dependent drop site. This method is invoked when all the following conditions are true:

        • The cursor's hotspot enters the operable part of a platform- dependent drop site.
        • The drop site is active.
        • The drop site accepts the drag.
        Specified by:
        dragEnter in interface DragSourceListener
      • dragOver

        public void dragOver​(DragSourceDragEvent dsde)
        DragSourceListener method - presently ignored

        Description copied from interface:
        Called as the cursor's hotspot moves over a platform-dependent drop site. This method is invoked when all the following conditions are true:

        • The cursor's hotspot has moved, but still intersects the operable part of the drop site associated with the previous dragEnter() invocation.
        • The drop site is still active.
        • The drop site accepts the drag.
        Specified by:
        dragOver in interface DragSourceListener
      • dropActionChanged

        public void dropActionChanged​(DragSourceDragEvent dsde)
        DragSourceListener method - presently ignored

        Description copied from interface:
        Called when the user has modified the drop gesture. This method is invoked when the state of the input device(s) that the user is interacting with changes. Such devices are typically the mouse buttons or keyboard modifiers that the user is interacting with.

        Specified by:
        dropActionChanged in interface DragSourceListener
      • dragExit

        public void dragExit​(DragSourceEvent dse)
        DragSourceListener method - presently ignored

        Description copied from interface:
        Called as the cursor's hotspot exits a platform-dependent drop site. This method is invoked when any of the following conditions are true:

        • The cursor's hotspot no longer intersects the operable part of the drop site associated with the previous dragEnter() invocation.
        • The drop site associated with the previous dragEnter() invocation is no longer active.
        • The drop site associated with the previous dragEnter() invocation has rejected the drag.
        Specified by:
        dragExit in interface DragSourceListener
      • dragDropEnd

        public void dragDropEnd​(DragSourceDropEvent dsde)
        Description copied from interface:
        This method is invoked to signify that the Drag and Drop operation is complete. The getDropSuccess() method of the DragSourceDropEvent can be used to determine the termination state. The getDropAction() method returns the operation that the drop site selected to apply to the Drop operation. Once this method is complete, the current DragSourceContext and associated resources become invalid.
        Specified by:
        dragDropEnd in interface DragSourceListener
      • dragEnter

        public void dragEnter​(DropTargetDragEvent dtde)
        Records the index of the list item (if any) pointed to by the mouse cursor

        Description copied from interface:
        Called while a drag operation is ongoing, when the mouse pointer enters the operable part of the drop site for the DropTarget registered with this listener.

        Specified by:
        dragEnter in interface DropTargetListener
      • dragOver

        public void dragOver​(DropTargetDragEvent dtde)
        Records the index of the list item (if any) pointed to by the mouse cursor

        Description copied from interface:
        Called when a drag operation is ongoing, while the mouse pointer is still over the operable part of the drop site for the DropTarget registered with this listener.

        Specified by:
        dragOver in interface DropTargetListener
      • dropActionChanged

        public void dropActionChanged​(DropTargetDragEvent dtde)
        DropTargetListener method - presently ignored

        Description copied from interface:
        Called if the user has modified the current drop gesture.

        Specified by:
        dropActionChanged in interface DropTargetListener
      • dragExit

        public void dragExit​(DropTargetEvent dte)
        Description copied from interface:
        Called while a drag operation is ongoing, when the mouse pointer has exited the operable part of the drop site for the DropTarget registered with this listener.
        Specified by:
        dragExit in interface DropTargetListener
      • drop

        public void drop​(DropTargetDropEvent dtde)
        Handles the moving (for drag and drop actions within this list) or transfer (for actions between lists) of list items. Description copied from interface:
        Called when the drag operation has terminated with a drop on the operable part of the drop site for the DropTarget registered with this listener.

        This method is responsible for undertaking the transfer of the data associated with the gesture. The DropTargetDropEvent provides a means to obtain a Transferable object that represents the data object(s) to be transfered.

        From this method, the DropTargetListener shall accept or reject the drop via the acceptDrop(int dropAction) or rejectDrop() methods of the DropTargetDropEvent parameter.

        Subsequent to acceptDrop(), but not before, DropTargetDropEvent's getTransferable() method may be invoked, and data transfer may be performed via the returned Transferable's getTransferData() method.

        At the completion of a drop, an implementation of this method is required to signal the success/failure of the drop by passing an appropriate boolean to the DropTargetDropEvent's dropComplete(boolean success) method.

        Note: The data transfer should be completed before the call to the DropTargetDropEvent's dropComplete(boolean success) method. After that, a call to the getTransferData() method of the Transferable returned by DropTargetDropEvent.getTransferable() is guaranteed to succeed only if the data transfer is local; that is, only if DropTargetDropEvent.isLocalTransfer() returns true. Otherwise, the behavior of the call is implementation-dependent.

        Specified by:
        drop in interface DropTargetListener