schmitzm.swing.table
Class MutableTable

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 schmitzm.swing.table.MutableTable
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, EventListener, Accessible, CellEditorListener, ListSelectionListener, RowSorterListener, TableColumnModelListener, TableModelListener, Scrollable
Direct Known Subclasses:
ColorMapTable

public class MutableTable
extends JTable

Diese Klasse stellt eine veraenderbare Tabelle dar. Sie erhaelt ein Kontextmenue, ueber das der Tabelle Datensaetze hinzugefuegt, entfernt oder geaendert werden koennen. Zudem reagiert die Tabelle automatisch auf einen Doppelklick mit der Aenderungsaktion.

Version:
1.0
Author:
Martin Schmitz (University of Bonn/Germany)
See Also:
MutableTableModel, Serialized Form

Nested Class Summary
protected  class MutableTable.PopupMenu
          Diese Klasse stellt das Kontextmenue fuer einen MutableTable dar.
 
Nested classes/interfaces inherited from class javax.swing.JTable
JTable.AccessibleJTable, JTable.DropLocation, JTable.PrintMode
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
static int ITEM_ADD
          Konstante fuer den Menuepunkt "Hinzufuegen".
static int ITEM_ALL
          Konstante, die alle Menuepunkte beinhaltet.
static int ITEM_CHANGE
          Konstante fuer den Menuepunkt "Aendern".
static int ITEM_REMOVE
          Konstante fuer den Menuepunkt "Loeschen".
protected  int mask
          Speichert, welche Menuepunkte fuer das Kontextmenue aktiv sind
protected  MutableTableModel model
          Speichert die Datenbasis fuer die Tabelle
 
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
MutableTable(MutableTableModel model)
          Erzeugt eine neue Tabelle mit komplettem Kontextmenue.
MutableTable(MutableTableModel model, int mask)
          Erzeugt eine neue Tabelle.
 
Method Summary
protected  MutableTable.PopupMenu createPopupMenu(int mask)
          Erzeugt eine Instanz des MutableTable.PopupMenu.
 MouseListener createPopupMenuListener()
          Erzeugt einen MouseListener der bei einem Popup-Signal (z.B.
 MouseListener createPopupMenuListener(int mask)
          Erzeugt einen MouseListener der bei einem Popup-Signal (z.B.
 JScrollPane createScrollPane()
          Erzeugt ein JScrollPane fuer die Tabelle.
 int getMask()
          Liefert die Bit-Maske, welche Punkt im Kontextmenue aktiv sind.
protected  void performAdd()
          Wird aufgerufen, wenn der Menuepunkt "Hinzufügen" gewaehlt wird.
protected  void performChange()
          Wird aufgerufen, wenn der Menuepunkt "Ändern" gewaehlt wird.
 void performDoubleClick()
          Wird aufgerufen, wenn ein Doppelklick auf die Tabelle vorgenommen wird.
protected  void performRemove()
          Wird aufgerufen, wenn der Menuepunkt "Löschen" gewaehlt wird.
 void setModel(TableModel model)
          Setzt das Datenmodell fuer die Tabelle und ruft MutableTableModel.initTable(JTable) auf.
 
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, setPreferredScrollableViewportSize, setRowHeight, setRowHeight, setRowMargin, setRowSelectionAllowed, setRowSelectionInterval, setRowSorter, setSelectionBackground, setSelectionForeground, setSelectionMode, setSelectionModel, setShowGrid, setShowHorizontalLines, setShowVerticalLines, setSurrendersFocusOnKeystroke, setTableHeader, setUI, setUpdateSelectionOnSort, setValueAt, sizeColumnsToFit, sizeColumnsToFit, sorterChanged, tableChanged, 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

ITEM_ADD

public static final int ITEM_ADD
Konstante fuer den Menuepunkt "Hinzufuegen".

See Also:
Constant Field Values

ITEM_REMOVE

public static final int ITEM_REMOVE
Konstante fuer den Menuepunkt "Loeschen".

See Also:
Constant Field Values

ITEM_CHANGE

public static final int ITEM_CHANGE
Konstante fuer den Menuepunkt "Aendern".

See Also:
Constant Field Values

ITEM_ALL

public static final int ITEM_ALL
Konstante, die alle Menuepunkte beinhaltet.

See Also:
Constant Field Values

model

protected MutableTableModel model
Speichert die Datenbasis fuer die Tabelle


mask

protected int mask
Speichert, welche Menuepunkte fuer das Kontextmenue aktiv sind

Constructor Detail

MutableTable

public MutableTable(MutableTableModel model,
                    int mask)
Erzeugt eine neue Tabelle.

Parameters:
model - Datenbasis fuer die Tabelle
mask - Definiert die Eintraege im Kontextmenue (logische ODER-Verknuepfung der Konstanten ITEM_ADD, ITEM_REMOVE und ITEM_CHANGE)
See Also:
ITEM_ADD, ITEM_REMOVE, ITEM_CHANGE

MutableTable

public MutableTable(MutableTableModel model)
Erzeugt eine neue Tabelle mit komplettem Kontextmenue.

Parameters:
model - Datenbasis fuer die Tabelle
See Also:
ITEM_ALL
Method Detail

setModel

public void setModel(TableModel model)
Setzt das Datenmodell fuer die Tabelle und ruft MutableTableModel.initTable(JTable) auf.

Overrides:
setModel in class JTable
Throws:
UnsupportedOperationException - falls kein MutableTableModel uebergeben wird

createPopupMenuListener

public MouseListener createPopupMenuListener()
Erzeugt einen MouseListener der bei einem Popup-Signal (z.B. Rechtsklick) das Tabellen-Menue oeffnet. In diesem sind alle Menuepunkte (Aendern, Loeschen, Hinzufuegen) enthalten.

See Also:
createPopupMenuListener(int), ITEM_ALL

createPopupMenuListener

public MouseListener createPopupMenuListener(int mask)
Erzeugt einen MouseListener der bei einem Popup-Signal (z.B. Rechtsklick) das Tabellen-Kontextmenue oeffnet.

Parameters:
mask - Definiert die Eintraege im Kontextmenue (logische ODER-Verknuepfung der Konstanten ITEM_ADD, ITEM_REMOVE und ITEM_CHANGE)
See Also:
ITEM_ADD, ITEM_REMOVE, ITEM_CHANGE

createPopupMenu

protected MutableTable.PopupMenu createPopupMenu(int mask)
Erzeugt eine Instanz des MutableTable.PopupMenu. Unterklassen koennen diese Methode ueberschreiben, um das Menu zu erweitern.

Parameters:
mask - Definiert die Eintraege im Kontextmenue (logische ODER-Verknuepfung der Konstanten ITEM_ADD, ITEM_REMOVE und ITEM_CHANGE)
See Also:
ITEM_ADD, ITEM_REMOVE, ITEM_CHANGE

getMask

public int getMask()
Liefert die Bit-Maske, welche Punkt im Kontextmenue aktiv sind.

See Also:
ITEM_ADD, ITEM_REMOVE, ITEM_CHANGE, ITEM_ALL

performChange

protected void performChange()
Wird aufgerufen, wenn der Menuepunkt "Ändern" gewaehlt wird. Ruft fuer jede selektierte Zelle MutableTableModel#performChangeData(..) auf. Ist nur eine zeilenweise Auswahl in der Tabelle erlaubt, so wird die obige Methode nur fuer jede selektierte Zeile aufgerufen. Der Aufrufparameter fuer die Spalte ist in diesem Fall die Spalte, auf die geklickt wurde.
Erwirkt anschliessend ein AbstractTableModel.fireTableDataChanged()

See Also:
JTable.setRowSelectionAllowed(boolean)

performRemove

protected void performRemove()
Wird aufgerufen, wenn der Menuepunkt "Löschen" gewaehlt wird. Ruft fuer jede selektierte Zeile MutableTableModel#performRemoveRow(..) auf. Dabei wird rueckwaerts vorgegangen - also die letzte selektierte Zeile zuerst -, damit der Zeilenindex ueber alle MutableTableModel.performRemoveRow(int)-Aufrufe konsistent bleibt. Erwirkt anschliessend automatisch ein AbstractTableModel.fireTableDataChanged()


performAdd

protected void performAdd()
Wird aufgerufen, wenn der Menuepunkt "Hinzufügen" gewaehlt wird. Ruft MutableTableModel#performAddRow() auf.
Erwirkt anschliessend automatisch ein AbstractTableModel.fireTableDataChanged()


performDoubleClick

public void performDoubleClick()
Wird aufgerufen, wenn ein Doppelklick auf die Tabelle vorgenommen wird. Standardmaessig wird performChange() aufgerufen (sofern der Aendern-Menuepunkt aktiv ist!). Unterklassen koennen diese Methode ueberschreiben, um diesem Ereignis eins andere Aktion zuzuweisen oder das Ereignis gaenzlich zu unterdruecken.


createScrollPane

public JScrollPane createScrollPane()
Erzeugt ein JScrollPane fuer die Tabelle. Dieses erhaelt automatisch den gleichen ToolTip-Text und Popupmenue-Listener wie die Tabelle. Der Anwender kann somit auch auf das ScrollPane klicken, um die Tabellen-Optionen anzuwaehlen.