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
 
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
 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, convertRowIndexToModel, 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
 

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