org.salespointframework.desktop
Class JAbstractTable

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JTable
                  extended by org.salespointframework.desktop.JAbstractTable
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.event.CellEditorListener, javax.swing.event.ListSelectionListener, javax.swing.event.RowSorterListener, javax.swing.event.TableColumnModelListener, javax.swing.event.TableModelListener, javax.swing.Scrollable, DnDComponent
Direct Known Subclasses:
JCatalogTable, JCountingStockTable, JDataBasketTable, JLogTable, JStoringStockTable, JUserTable

public class JAbstractTable
extends javax.swing.JTable
implements DnDComponent

A JTable that prefers models that are lists of records. A JAbstractTable always must be used together with an AbstractTableModel.

Also JAbstractTable supports one selection observer which is basically an int value that will always contain the index of the currently selected record in the table. Setting up such an observer is quite straightforward:

 int[] anSelection = new int[1];

 JAbstractTable jat = new JAbstractTable (...);
 jat.setSelectionObserver (anSelection);
 

To use this observer write code like the following:

 ...
 Object oSelectedRecord = ((org.salespointframework.util.swing.AbstractTableModel) jat.getModel()).getRecord (anSelection[0]);
 if (oSelectedRecord != null) {
   ...
 }
 

Note that although you only use the actual int value, you still have to set up an array of int values. The current selection will always be written to the first element in this array, no matter how long the actual array is.

Note: This class is not meant to be serialized!

Since:
v2.0
Version:
2.0 28/07/1999
Author:
Steffen Zschaler
See Also:
AbstractTableModel, TableEntryDescriptor, Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JTable
javax.swing.JTable.AccessibleJTable, javax.swing.JTable.DropLocation, javax.swing.JTable.PrintMode
 
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  AbstractTableModel atm
          The current AbstractTableModel
private  java.awt.Component dndPartner
           
private static javax.swing.ImageIcon DOWN
          Icon "Down"
private  int[] m_anSelection
          The current selection observer.
private  java.lang.Object[] m_aoSelectedColumn
          Holds the currently selected Column in Header
private  java.lang.Object m_oSelectionLock
          The monitor that synchronizes access to the selection observer.
private  MoveAction moveAction
           
private static javax.swing.ImageIcon UP
          Icon "Up"
 
Fields inherited from class javax.swing.JTable
AUTO_RESIZE_ALL_COLUMNS, AUTO_RESIZE_LAST_COLUMN, AUTO_RESIZE_NEXT_COLUMN, AUTO_RESIZE_OFF, AUTO_RESIZE_SUBSEQUENT_COLUMNS, autoCreateColumnsFromModel, autoResizeMode, cellEditor, cellSelectionEnabled, columnModel, dataModel, defaultEditorsByColumnClass, defaultRenderersByColumnClass, editingColumn, editingRow, editorComp, gridColor, preferredViewportSize, rowHeight, rowMargin, rowSelectionAllowed, selectionBackground, selectionForeground, selectionModel, showHorizontalLines, showVerticalLines, tableHeader
 
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
JAbstractTable(AbstractTableModel atm)
          Construct a new JAbstractTable that is based on an AbstractTableModel.
 
Method Summary
 boolean acceptDropPartner(java.awt.Component c)
          true, if the component accepts this component a drop target.
 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
 int convertRowIndexToModel(int viewRowIndex)
           
 javax.swing.table.DefaultTableCellRenderer createHeader()
          Creates the TableHeader and enables it to display sorting icons (arrows up and down)
 void finishDragOperation(java.lang.Object item, int count, java.awt.Component receiver)
          finish the drag'n drop operation
 AbstractTableModel getAbstractTableModel()
          return the AbstractTableModel
 java.awt.Component getBoundingComponent()
          get component which defines the range of this component. e.g. a JScrollPane
 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
 boolean getMoreDragItems(java.awt.Point point, java.lang.Object item, int count, int additionalCount)
          user requests more items.
 void initialize()
           
 void initRenderers()
           
 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 setAllowDrag(boolean value)
           
 void setAllowDrop(boolean value)
           
 void setDnDPartner(java.awt.Component c)
          DND methods
 void setMoveAction(MoveAction ma)
           
 void setSelectionObserver(int[] anSelection)
          Set a selection observer for this table.
 void startDragOperation(java.awt.Point p)
          start a drag operation at this point.
 void tableChanged(javax.swing.event.TableModelEvent e)
          need to reestablish cell renderers
 void takeDragItem(java.lang.Object item, int count)
          component should take the transferred item with given count
 
Methods inherited from class javax.swing.JTable
addColumn, addColumnSelectionInterval, addNotify, addRowSelectionInterval, changeSelection, clearSelection, columnAdded, columnAtPoint, columnMarginChanged, columnMoved, columnRemoved, columnSelectionChanged, configureEnclosingScrollPane, convertColumnIndexToModel, convertColumnIndexToView, convertRowIndexToView, createDefaultColumnModel, createDefaultColumnsFromModel, createDefaultDataModel, createDefaultEditors, createDefaultRenderers, createDefaultSelectionModel, createDefaultTableHeader, createScrollPaneForTable, doLayout, editCellAt, editCellAt, editingCanceled, editingStopped, getAccessibleContext, getAutoCreateColumnsFromModel, getAutoCreateRowSorter, getAutoResizeMode, getCellEditor, getCellEditor, getCellRect, getCellRenderer, getCellSelectionEnabled, getColumn, getColumnClass, getColumnCount, getColumnModel, getColumnName, getColumnSelectionAllowed, getDefaultEditor, getDefaultRenderer, getDragEnabled, getDropLocation, getDropMode, getEditingColumn, getEditingRow, getEditorComponent, getFillsViewportHeight, getGridColor, getIntercellSpacing, getModel, getPreferredScrollableViewportSize, getPrintable, getRowCount, getRowHeight, getRowHeight, getRowMargin, getRowSelectionAllowed, getRowSorter, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getSelectedColumn, getSelectedColumnCount, getSelectedColumns, getSelectedRow, getSelectedRowCount, getSelectedRows, getSelectionBackground, getSelectionForeground, getSelectionModel, getShowHorizontalLines, getShowVerticalLines, getSurrendersFocusOnKeystroke, getTableHeader, getToolTipText, getUI, getUIClassID, getUpdateSelectionOnSort, getValueAt, initializeLocalVars, isCellEditable, isCellSelected, isColumnSelected, isEditing, isRowSelected, moveColumn, paramString, prepareEditor, prepareRenderer, print, print, print, print, print, processKeyBinding, removeColumn, removeColumnSelectionInterval, removeEditor, removeNotify, removeRowSelectionInterval, resizeAndRepaint, rowAtPoint, selectAll, setAutoCreateColumnsFromModel, setAutoCreateRowSorter, setAutoResizeMode, setCellEditor, setCellSelectionEnabled, setColumnModel, setColumnSelectionAllowed, setColumnSelectionInterval, setDefaultEditor, setDefaultRenderer, setDragEnabled, setDropMode, setEditingColumn, setEditingRow, setFillsViewportHeight, setGridColor, setIntercellSpacing, setModel, setPreferredScrollableViewportSize, setRowHeight, setRowHeight, setRowMargin, setRowSelectionAllowed, setRowSelectionInterval, setRowSorter, setSelectionBackground, setSelectionForeground, setSelectionMode, setSelectionModel, setShowGrid, setShowHorizontalLines, setShowVerticalLines, setSurrendersFocusOnKeystroke, setTableHeader, setUI, setUpdateSelectionOnSort, setValueAt, sizeColumnsToFit, sizeColumnsToFit, sorterChanged, unconfigureEnclosingScrollPane, updateUI, valueChanged
 
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, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, 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, 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, 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

m_anSelection

private int[] m_anSelection
The current selection observer.


m_oSelectionLock

private final transient java.lang.Object m_oSelectionLock
The monitor that synchronizes access to the selection observer. As this class is not meant to be serialized, no care needs to be taken.


m_aoSelectedColumn

private java.lang.Object[] m_aoSelectedColumn
Holds the currently selected Column in Header


atm

private AbstractTableModel atm
The current AbstractTableModel


dndPartner

private java.awt.Component dndPartner

allowDrag

private boolean allowDrag

allowDrop

private boolean allowDrop

moveAction

private MoveAction moveAction

DOWN

private static final javax.swing.ImageIcon DOWN
Icon "Down"


UP

private static final javax.swing.ImageIcon UP
Icon "Up"

Constructor Detail

JAbstractTable

public JAbstractTable(AbstractTableModel atm)
Construct a new JAbstractTable that is based on an AbstractTableModel.

Parameters:
atm - the TableModel to be used with this table.
Method Detail

createHeader

public javax.swing.table.DefaultTableCellRenderer createHeader()
Creates the TableHeader and enables it to display sorting icons (arrows up and down)


initialize

public void initialize()

initRenderers

public void initRenderers()

tableChanged

public void tableChanged(javax.swing.event.TableModelEvent e)
need to reestablish cell renderers

Specified by:
tableChanged in interface javax.swing.event.TableModelListener
Overrides:
tableChanged in class javax.swing.JTable

setSelectionObserver

public void setSelectionObserver(int[] anSelection)
Set a selection observer for this table. The first element of the given array will henceforward contain the index of the currently selected record.

Parameters:
anSelection - the selection observer

getAbstractTableModel

public AbstractTableModel getAbstractTableModel()
return the AbstractTableModel

Returns:
atm the current AbstractTableModel

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

convertRowIndexToModel

public int convertRowIndexToModel(int viewRowIndex)
Overrides:
convertRowIndexToModel in class javax.swing.JTable