org.salespointframework.desktop
Class JListView

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 org.salespointframework.desktop.JListView
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, DnDComponent
Direct Known Subclasses:
JCatalogListView, JCountingStockListView, JDataBasketListView, JStoringStockListView, JUserListView

public class JListView
extends javax.swing.JPanel
implements DnDComponent

A JList with slider to change cell size and JModelFilter for live search. The JListView supports four different orientations. as ListCellRenderer a derived class of AbstractListViewRenderer should be used to provide necessary performance. Categorys are also supported by this Component as well as Drag'n Drop

Since:
4.0
Author:
Thomas Kissinger
See Also:
Serialized Form

Nested Class Summary
private  class JListView.CatListUI
          custom ListUI for layout
 class JListView.JListViewList
          JList with additional methods an hover support
private static class JListView.ListSelectionDisptacher
          dispatches selection changed events to selection observers
static class JListView.ListViewOrientation
          controls item arrangement in list JListView.ListViewOrientation.HORIZONTAL : horizontal wrapped and left aligned JListView.ListViewOrientation.HORIZONTAL_CENTERED : horizontal wrapped and centered JListView.ListViewOrientation.VERTICAL : vertical wrapped and left aligned JListView.ListViewOrientation.VERTICAL_CENTERED : vertical wrapped and sentered
 
Nested classes/interfaces inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
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
private  boolean allowDrag
           
private  boolean allowDrop
           
private  float cellRatio
          aspect ration of cells
private  java.awt.Dimension cellSize
          current cell dimensions
private  java.awt.Component dndPartner
           
private  int hoverIndex
          current hover index
private  float initialCellWidth
          initial slider position
private  javax.swing.JList list
          internal JList
private  float maximumCellWidth
          maximum slider position
private  float minimumCellWidth
          minimum slider position
private  javax.swing.ListModel model
          list model
private  JModelFilter modelFilter
          model filter for search
private  MoveAction moveAction
           
private  JListView.ListViewOrientation orientation
          orientation of list view
private  javax.swing.ListCellRenderer renderer
          cell renderer
private  JDefaultScrollPane scrollpane
          scrollpane which contains the list
private  JListView.ListSelectionDisptacher selectionListener
           
private  java.awt.Dimension seperatorSize
          current separator dimensions
private  int seperatorThickness
          height respectively width of separator
private  boolean showSearch
          if true, modelFilter is displayed
private  boolean showSlider
          if true, slider is displayed
private  javax.swing.JSlider slider
          slider for cell size
 
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
JListView()
          default constructor
JListView(javax.swing.ListModel model)
          constructor
JListView(javax.swing.ListModel model, JListView.ListViewOrientation orientation, javax.swing.ListCellRenderer renderer)
          constructor
 
Method Summary
 boolean acceptDropPartner(java.awt.Component c)
          true, if the component accepts this component a drop target.
 boolean addSelectionObserver(int[] observer)
          add a selection observer
private  void adjustCellSize()
          set cell and separator size based on slider position
 boolean allowDrag(java.awt.Point point)
          if true, drag is allowed at this point
 boolean allowDrop(java.lang.Object item, int count)
          if true, drop is allowed for this component
 void finishDragOperation(java.lang.Object item, int count, java.awt.Component receiver)
          finish the drag'n drop operation
 java.awt.Component getBoundingComponent()
          get component which defines the range of this component. e.g. a JScrollPane
 float getCellRatio()
          get cellRatio
 DnDMotionComponent getDnDMotionComponent(java.lang.Object item, int count)
          get the component which is displayed during drag'n drop operation on FormSheet.getDragLayer()
 java.lang.Object getDragItem(java.awt.Point point)
          get the item at this point, what will be transfered.
 int getDragItemIndex(java.awt.Point point)
          index of item at this point.
 java.awt.Component getDragSourceComponent()
          Component which contains the drag items
private  int getHoverIndex()
          get hoverIndex
 float getInitialCellWidth()
          get initialCellWidth
 javax.swing.JList getList()
          get list
 float getMaximumCellWidth()
          get maximumCellWidth
 float getMinimumCellWidth()
          get minimumCellWidth
 javax.swing.ListModel getModel()
          get model
protected  JModelFilter getModelFilter()
          get modelFilter
 boolean getMoreDragItems(java.awt.Point point, java.lang.Object item, int count, int additionalCount)
          user requests more items.
 javax.swing.JScrollPane getScrollpane()
          get scrollpane
 javax.swing.JTextField getSearchField()
          get search field from modelFilter
 javax.swing.JLabel getSearchResultLabel()
          get result count label from modelFilter
 javax.swing.JSlider getSlider()
          get slider
private  void initialize()
          build component
 void paintHightlightEffect(java.awt.Graphics2D g, java.awt.Rectangle bounds, java.awt.Component cmp)
          paint drag'n drop highlight effect. drawing takes place on some layer above the standard layer, so the effect can be drawn beyond components bounds
 void removeSelectionObserver(int[] observer)
          remove selection observer
 void setAllowDrag(boolean value)
           
 void setAllowDrop(boolean value)
           
 void setCellConstraints(float minimum, float maximum, float initial, float cellRatio)
          set sell constrains
 void setCellRatio(float cellRatio)
          set cellRatio
 void setDnDPartner(java.awt.Component c)
          DND methods
private  void setHoverIndex(int index)
          set hoverIndex
 void setInitialCellWidth(float initialCellWidth)
          set initialCellWidth
 void setMaximumCellWidth(float maximumCellWidth)
          set maximumCellWidth
 void setMinimumCellWidth(float minimumCellWidth)
          set minimumCellWidth
 void setModel(javax.swing.ListModel model)
          set model
 void setMoveAction(MoveAction ma)
           
 void setSeperatorThickness(int thickness)
          set seperatorThickness
 void setShowSearch(boolean value)
          set showSearch
 void setShowSlider(boolean value)
          set showSlider
 void startDragOperation(java.awt.Point p)
          start a drag operation at this point.
 void takeDragItem(java.lang.Object item, int count)
          component should take the transferred item with given count
protected  void updateHeader()
          set header visibility based on showSearch and showSlider
protected  void updateSliderLabels()
          set labels of slider
 
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, getPreferredSize, 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, 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
 

Field Detail

slider

private javax.swing.JSlider slider
slider for cell size


list

private javax.swing.JList list
internal JList


scrollpane

private JDefaultScrollPane scrollpane
scrollpane which contains the list


modelFilter

private JModelFilter modelFilter
model filter for search


model

private javax.swing.ListModel model
list model


orientation

private JListView.ListViewOrientation orientation
orientation of list view


renderer

private javax.swing.ListCellRenderer renderer
cell renderer


cellRatio

private float cellRatio
aspect ration of cells


seperatorThickness

private int seperatorThickness
height respectively width of separator


initialCellWidth

private float initialCellWidth
initial slider position


minimumCellWidth

private float minimumCellWidth
minimum slider position


maximumCellWidth

private float maximumCellWidth
maximum slider position


hoverIndex

private int hoverIndex
current hover index


showSearch

private boolean showSearch
if true, modelFilter is displayed


showSlider

private boolean showSlider
if true, slider is displayed


cellSize

private java.awt.Dimension cellSize
current cell dimensions


seperatorSize

private java.awt.Dimension seperatorSize
current separator dimensions


dndPartner

private java.awt.Component dndPartner

allowDrag

private boolean allowDrag

allowDrop

private boolean allowDrop

moveAction

private MoveAction moveAction

selectionListener

private JListView.ListSelectionDisptacher selectionListener
Constructor Detail

JListView

public JListView()
default constructor


JListView

public JListView(javax.swing.ListModel model)
constructor

Parameters:
model - model

JListView

public JListView(javax.swing.ListModel model,
                 JListView.ListViewOrientation orientation,
                 javax.swing.ListCellRenderer renderer)
constructor

Parameters:
model - model
orientation - orientation
renderer - renderer
Method Detail

setShowSearch

public void setShowSearch(boolean value)
set showSearch

Parameters:
value -

setShowSlider

public void setShowSlider(boolean value)
set showSlider

Parameters:
value -

setModel

public void setModel(javax.swing.ListModel model)
set model

Parameters:
model -

getModel

public javax.swing.ListModel getModel()
get model

Returns:

getList

public javax.swing.JList getList()
get list

Returns:

getScrollpane

public javax.swing.JScrollPane getScrollpane()
get scrollpane

Returns:

getSearchField

public javax.swing.JTextField getSearchField()
get search field from modelFilter

Returns:

getSlider

public javax.swing.JSlider getSlider()
get slider

Returns:

getSearchResultLabel

public javax.swing.JLabel getSearchResultLabel()
get result count label from modelFilter


addSelectionObserver

public boolean addSelectionObserver(int[] observer)
add a selection observer

Parameters:
observer - int[1]
Returns:

removeSelectionObserver

public void removeSelectionObserver(int[] observer)
remove selection observer

Parameters:
observer - int[1]

adjustCellSize

private void adjustCellSize()
set cell and separator size based on slider position


setHoverIndex

private void setHoverIndex(int index)
set hoverIndex

Parameters:
index -

getHoverIndex

private int getHoverIndex()
get hoverIndex

Returns:

getModelFilter

protected JModelFilter getModelFilter()
get modelFilter

Returns:

updateSliderLabels

protected void updateSliderLabels()
set labels of slider


updateHeader

protected void updateHeader()
set header visibility based on showSearch and showSlider


initialize

private void initialize()
build component


getCellRatio

public float getCellRatio()
get cellRatio

Returns:

setCellRatio

public void setCellRatio(float cellRatio)
set cellRatio

Parameters:
cellRatio -

getInitialCellWidth

public float getInitialCellWidth()
get initialCellWidth

Returns:

setInitialCellWidth

public void setInitialCellWidth(float initialCellWidth)
set initialCellWidth

Parameters:
initialCellWidth -

getMinimumCellWidth

public float getMinimumCellWidth()
get minimumCellWidth

Returns:

setMinimumCellWidth

public void setMinimumCellWidth(float minimumCellWidth)
set minimumCellWidth

Parameters:
minimumCellWidth -

getMaximumCellWidth

public float getMaximumCellWidth()
get maximumCellWidth

Returns:

setMaximumCellWidth

public void setMaximumCellWidth(float maximumCellWidth)
set maximumCellWidth

Parameters:
maximumCellWidth -

setSeperatorThickness

public void setSeperatorThickness(int thickness)
set seperatorThickness

Parameters:
thickness -

setCellConstraints

public void setCellConstraints(float minimum,
                               float maximum,
                               float initial,
                               float cellRatio)
set sell constrains

Parameters:
minimum - minimumCellWidth
maximum - maximumCellWidth
initial - initialCellWidth
cellRatio - cellRatio

setDnDPartner

public void setDnDPartner(java.awt.Component c)
DND methods


setAllowDrag

public void setAllowDrag(boolean value)

setAllowDrop

public void setAllowDrop(boolean value)

setMoveAction

public void setMoveAction(MoveAction ma)

acceptDropPartner

public boolean acceptDropPartner(java.awt.Component c)
Description copied from interface: DnDComponent
true, if the component accepts this component a drop target.

Specified by:
acceptDropPartner in interface DnDComponent
Parameters:
c - component
Returns:
true, if allowed

allowDrag

public boolean allowDrag(java.awt.Point point)
Description copied from interface: DnDComponent
if true, drag is allowed at this point

Specified by:
allowDrag in interface DnDComponent
Parameters:
point - mouse point in this components coordinate system
Returns:
true, if drag allowed

allowDrop

public boolean allowDrop(java.lang.Object item,
                         int count)
Description copied from interface: DnDComponent
if true, drop is allowed for this component

Specified by:
allowDrop in interface DnDComponent
Parameters:
item - item that requests to be dropped
count - number of this items
Returns:
true, if drop allowed

finishDragOperation

public void finishDragOperation(java.lang.Object item,
                                int count,
                                java.awt.Component receiver)
Description copied from interface: DnDComponent
finish the drag'n drop operation

Specified by:
finishDragOperation in interface DnDComponent
Parameters:
item - item that has been dragged
count - number of this items
receiver - component which will receive this items

getDragItem

public java.lang.Object getDragItem(java.awt.Point point)
Description copied from interface: DnDComponent
get the item at this point, what will be transfered.

Specified by:
getDragItem in interface DnDComponent
Parameters:
point - mouse point in this components coordinate system
Returns:
the transfer object

getMoreDragItems

public boolean getMoreDragItems(java.awt.Point point,
                                java.lang.Object item,
                                int count,
                                int additionalCount)
Description copied from interface: DnDComponent
user requests more items.

Specified by:
getMoreDragItems in interface DnDComponent
Parameters:
point - mouse point in this components coordinate system
item - currently transferred item
count - current number of items
additionalCount - requested number of items
Returns:
true, if allowed

startDragOperation

public void startDragOperation(java.awt.Point p)
Description copied from interface: DnDComponent
start a drag operation at this point. DnDComponent.allowDrag(Point) is called before and returned true

Specified by:
startDragOperation in interface DnDComponent
Parameters:
p - mouse point in this components coordinate system

takeDragItem

public void takeDragItem(java.lang.Object item,
                         int count)
Description copied from interface: DnDComponent
component should take the transferred item with given count

Specified by:
takeDragItem in interface DnDComponent
Parameters:
item - transferred item
count - transferred item count

getDnDMotionComponent

public DnDMotionComponent getDnDMotionComponent(java.lang.Object item,
                                                int count)
Description copied from interface: DnDComponent
get the component which is displayed during drag'n drop operation on FormSheet.getDragLayer()

Specified by:
getDnDMotionComponent in interface DnDComponent
Parameters:
item - item that is transferred
count - number of transferred items
Returns:

getBoundingComponent

public java.awt.Component getBoundingComponent()
Description copied from interface: DnDComponent
get component which defines the range of this component. e.g. a JScrollPane

Specified by:
getBoundingComponent in interface DnDComponent
Returns:

getDragSourceComponent

public java.awt.Component getDragSourceComponent()
Description copied from interface: DnDComponent
Component which contains the drag items

Specified by:
getDragSourceComponent in interface DnDComponent
Returns:

paintHightlightEffect

public void paintHightlightEffect(java.awt.Graphics2D g,
                                  java.awt.Rectangle bounds,
                                  java.awt.Component cmp)
Description copied from interface: DnDComponent
paint drag'n drop highlight effect. drawing takes place on some layer above the standard layer, so the effect can be drawn beyond components bounds

Specified by:
paintHightlightEffect in interface DnDComponent
Parameters:
g - Graphics context which is NOT in components coordinate system
bounds - bounds of highlight component
cmp - highlight component

getDragItemIndex

public int getDragItemIndex(java.awt.Point point)
Description copied from interface: DnDComponent
index of item at this point.

Specified by:
getDragItemIndex in interface DnDComponent
Parameters:
point - mouse point in this components coordinate system
Returns:
index or -1