public class DataViewPanel extends javax.swing.JPanel implements DataViewListener
Dieses Panel stellt die Datensätze, die das Model
übergibt, in einem ScrollPane dar. Mit dem Konstruktor wird ein baumartiger Header erstellt, dessen Spaltenbreiten durch Schieberegler verändert werden kann. Damit dies funktioniert, muss nachdem der Header erzeugt und dieser angezeigt (z.B. durch validate() oder durch Frame.setVisible()) wird mit der Methode initHeaderSize()
initialisiert werden.
Modifier and Type | Class and Description |
---|---|
private class |
DataViewPanel.VerticalScrollBarAdjustmentListener
Wird benötigt, um das Scrollverhalten des vertikalen Scrollbalkens zu steuern.
|
javax.swing.JPanel.AccessibleJPanel
javax.swing.JComponent.AccessibleJComponent
Modifier and Type | Field and Description |
---|---|
private AttributeGroup |
_attributeGroup
speichert die Attributgruppe
|
private DataViewModel |
_dataViewModel
speichert eine Instanz des DataViewModel
|
private Debug |
_debug
der Debug-Logger
|
private java.util.List<DataTableObjectRenderer> |
_dtoRenderers
speichert alle Datensätze, die von der Applikation gesendet wurden
|
private javax.swing.JPanel |
_emptyDummyLowerRowHeaderPanel
der untere Platzhalter des Zeilenheaders; wird nur für die Höhenarithmetik benötigt
|
private javax.swing.JPanel |
_emptyDummyUpperRowHeaderPanel
der obere Platzhalter für den Zeilenheader; wird nur für die Höhenarithmetik benötigt
|
private javax.swing.JPanel |
_emptyDummyUpperViewportPanel
der obere Platzhalter für den Viewport; wird nur für die Höhenarithmetik benötigt
|
private int |
_firstRow
der Index des ersten Datensatzes, der angezeigt wird
|
private boolean |
_firstRun
merkt sich, ob es sich um den ersten Aufruf handelt
|
private HeaderGrid |
_headerGrid
speichert die Sruktur des Headers
|
private int |
_lastRow
der Index des letzten Datensatzes, der angezeigt wird
|
private javax.swing.JPanel |
_lowerViewportPanel
der untere Platzhalter des Viewports; wird nur für die Höhenarithmetik benötigt
|
private javax.swing.JPanel |
_rowHeaderPanel
der sichtbare Teil des Zeilenheaders
|
private int |
_rowHeaderWidth
die Breite des Zeilenheaders
|
private int |
_screenHeight
die sichtbare Höhe des Viewports
|
private javax.swing.JScrollPane |
_scrollPane
speichert das dargestellte ScrollPane
|
private SelectionManager |
_selectionManager
der Selektion-Manager der Online-Tabelle
|
private javax.swing.JScrollBar |
_verticalScrollBar
speichert den vertikalen Scrollbalken
|
private javax.swing.JPanel |
_viewportPanel
der sichtbare Teil des Viewports
|
private java.lang.String |
TIME_FORMAT
speichert das Zeitformat für die Spalte ‘Zeit’
|
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
Constructor and Description |
---|
DataViewPanel(DataViewModel model)
Konstruktor.
|
Modifier and Type | Method and Description |
---|---|
void |
addDataTableObject(int index,
DataTableObject dataTableObject)
TBD Fügt einen Datensatz an eine bestimmte Position der bisherigen Datensätze ein.
|
void |
addDataTableObjects(java.util.List<DataTableObject> dataTableObjects)
Fügt eine beliebige Anzahl neuer Datensätze an die bestehenden Datensätze hinten an.
|
private void |
appendRowElements(RowData rowData,
java.util.Set<CellKey> keys,
java.util.Map<RowElement,CellKey> rowElementKeyMap) |
private boolean |
checkRowHeight()
Prüft, wieviel Platz die Komponente in der Höhe verbraucht und ob sie noch in der ScrollPane angezeigt werden kann.
|
private void |
createAndShowGui()
Erstellt die Elemente für das Panel und ordnet diese an.
|
private javax.swing.JPanel |
createColumnHeader()
Erstellt den vollständigen Spaltenheader für das ScrollPane.
|
private javax.swing.JPanel |
createRowHeader()
Erstellt den initialen Zeilenheader für das ScrollPane.
|
private javax.swing.JComponent |
createUpperLeftCorner()
Erstellt die Komponente für die obere linke Ecke im ScrollPane.
|
private javax.swing.JPanel |
createViewport()
Erstellt den initialen Viewport für das Scrollpane
|
java.util.Map<RowElement,CellKey> |
findRowElements(java.util.Set<CellKey> keys)
Methode zur Ermittlung von RowElements
|
java.util.Map<javax.swing.JComponent,RowKey> |
findRowHeaderRows(java.util.Set<RowKey> keys)
Methode zur Ermittlung von Komponenten
|
java.util.Map<RowPanel,CellKey> |
findRowPanels(java.util.Set<CellKey> keys)
Methode zur Ermittlung von RowPanels
|
long |
getDataindex(java.lang.String key)
Methode zur Ermittlung des Datensatzindex
|
boolean |
getFirstRun()
Hoffentlich bald überflüssig.
|
HeaderGrid |
getHeaderGrid()
Gibt den Spaltenheader zurück.
|
SelectionManager |
getSelectionManager()
Gibt den SelectionManager zurück.
|
int |
getVerticalScrollBarsMaximumValue()
Gibt den Maximalwert des vertikalen Rollbalkens zurück.
|
int |
getVerticalScrollBarsVisibleAmount()
Gibt den Ausdehung des Knopfes der vertikalen Rollbalkens zurück.
|
int |
getVisibleViewPortHeight()
Gibt die Höhe des sichtbaren Bereich des Viewports zurück.
|
void |
increaseLowerPanel(int height)
Vergrößert den unteren Platzhalter um die angebene Höhe
|
void |
initHeaderSize()
Die Größe des Headers wird initial gesetzt.
|
boolean |
isHorizontalScrollBarVisible()
Gibt
true zurück, wenn der horizontale Rolbalken sichtbar ist. |
void |
removeDataTableObject(int index)
Löscht einen Datensatz an angegebener Position.
|
void |
setDataTableObjects(java.util.List<DataTableObject> dataTableObjects)
Alle bisherigen Datensätze werden gelöscht und die neuen werden übernommen.
|
void |
setFirstRun(boolean firstRun)
Kann auf false gesetzt werden, falls die Größen des Spaltenheaders initialisiert worden sind.
|
private void |
setHeaderSizes(HeaderGrid headerGrid,
int percent)
Initialisiert die Größen aller Elemente des Headers rekursiv.
|
private void |
setHeaderSuccessors(HeaderGrid attributeList)
Bestimmt die Nachfolger einer Attributgruppe bzw. einer Attributliste.
|
void |
setHorizontalScrollBarPolicy(int horizontalPolicy)
Setzt den Modus des horizontalen Rollbalkens.
|
void |
setLowerPanel(int height)
Setzt für die unteren Platzhalter des Zeilenheaders und des Viewports die Höhe.
|
private void |
setScrollPane()
Das ScrollPane wird mit Spaltenheader, Zeilenheader und oberer linker Ecke ausgestattet und initialisiert.
|
private void |
setUpperPanel(int height)
Setzt für die oberen Platzhalter des Zeilenheaders und des Viewports die Höhe.
|
void |
setVerticalScrollBarsMaximumValue(int value)
Setzt den maximalen Wert des vertikalen Rollbalkens.
|
void |
setVerticalScrollBarValue(int value)
Setzt den Wert des vertikalen Rollbalkens.
|
void |
update(int index,
DataTableObject dataTableObject)
Aktualisiert an angegebener Position den Datensatz.
|
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
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, 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
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
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, 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, transferFocusBackward, transferFocusUpCycle
private final Debug _debug
der Debug-Logger
private final DataViewModel _dataViewModel
speichert eine Instanz des DataViewModel
private final AttributeGroup _attributeGroup
speichert die Attributgruppe
private final java.util.List<DataTableObjectRenderer> _dtoRenderers
speichert alle Datensätze, die von der Applikation gesendet wurden
private final javax.swing.JScrollPane _scrollPane
speichert das dargestellte ScrollPane
private HeaderGrid _headerGrid
speichert die Sruktur des Headers
private boolean _firstRun
merkt sich, ob es sich um den ersten Aufruf handelt
private final javax.swing.JScrollBar _verticalScrollBar
speichert den vertikalen Scrollbalken
private final javax.swing.JPanel _emptyDummyUpperRowHeaderPanel
der obere Platzhalter für den Zeilenheader; wird nur für die Höhenarithmetik benötigt
private final javax.swing.JPanel _emptyDummyLowerRowHeaderPanel
der untere Platzhalter des Zeilenheaders; wird nur für die Höhenarithmetik benötigt
private final javax.swing.JPanel _emptyDummyUpperViewportPanel
der obere Platzhalter für den Viewport; wird nur für die Höhenarithmetik benötigt
private final javax.swing.JPanel _lowerViewportPanel
der untere Platzhalter des Viewports; wird nur für die Höhenarithmetik benötigt
private final javax.swing.JPanel _rowHeaderPanel
der sichtbare Teil des Zeilenheaders
private final javax.swing.JPanel _viewportPanel
der sichtbare Teil des Viewports
private int _firstRow
der Index des ersten Datensatzes, der angezeigt wird
private int _lastRow
der Index des letzten Datensatzes, der angezeigt wird
private int _screenHeight
die sichtbare Höhe des Viewports
private final java.lang.String TIME_FORMAT
speichert das Zeitformat für die Spalte ‘Zeit’
private int _rowHeaderWidth
die Breite des Zeilenheaders
private SelectionManager _selectionManager
der Selektion-Manager der Online-Tabelle
public DataViewPanel(DataViewModel model)
Konstruktor. Benötigt eine Instanz des DataViewModel
. Das Model gibt Benachrichtigungen, falls sich an den anzuzeigenden Daten etwas ändert.
model
- das DataViewModelpublic long getDataindex(java.lang.String key)
Methode zur Ermittlung des Datensatzindex
key
- Schlüssel, wessen Datensatzindex gesucht wirdpublic java.util.Map<javax.swing.JComponent,RowKey> findRowHeaderRows(java.util.Set<RowKey> keys)
Methode zur Ermittlung von Komponenten
keys
- die Schlüsselpublic java.util.Map<RowElement,CellKey> findRowElements(java.util.Set<CellKey> keys)
Methode zur Ermittlung von RowElements
keys
- die Schlüsselpublic java.util.Map<RowPanel,CellKey> findRowPanels(java.util.Set<CellKey> keys)
Methode zur Ermittlung von RowPanels
keys
- die Schlüsselprivate void appendRowElements(RowData rowData, java.util.Set<CellKey> keys, java.util.Map<RowElement,CellKey> rowElementKeyMap)
private void createAndShowGui()
Erstellt die Elemente für das Panel und ordnet diese an.
private void setScrollPane()
Das ScrollPane wird mit Spaltenheader, Zeilenheader und oberer linker Ecke ausgestattet und initialisiert. Die vertikale Scrollbar wird ebenfalls initialisiert und ein AdjustmentListener
wird angemeldet.
private javax.swing.JPanel createColumnHeader()
Erstellt den vollständigen Spaltenheader für das ScrollPane.
private javax.swing.JPanel createRowHeader()
Erstellt den initialen Zeilenheader für das ScrollPane.
private javax.swing.JComponent createUpperLeftCorner()
Erstellt die Komponente für die obere linke Ecke im ScrollPane. Sie zeigt die Zeit und das Objekt an.
private javax.swing.JPanel createViewport()
Erstellt den initialen Viewport für das Scrollpane
public SelectionManager getSelectionManager()
Gibt den SelectionManager zurück.
public HeaderGrid getHeaderGrid()
Gibt den Spaltenheader zurück.
public void initHeaderSize()
Die Größe des Headers wird initial gesetzt. Dies ist notwendig, damit die Headergröße durch die Maus verändert werden kann. Diese Methode muss nach dem Anzeigen der Tabelle, allerdings bevor die ersten Daten kommen, aufgerufen werden.
setHeaderSizes(HeaderGrid,int)
private void setHeaderSizes(HeaderGrid headerGrid, int percent)
Initialisiert die Größen aller Elemente des Headers rekursiv.
headerGrid
- Spaltenheaderpercent
- gibt die prozentuale Ausdehnung anprivate void setHeaderSuccessors(HeaderGrid attributeList)
Bestimmt die Nachfolger einer Attributgruppe bzw. einer Attributliste.
attributeList
- Objekt vom Typ HeaderGrid
, von dem die Nachfolger bestimmt werden sollen.public boolean getFirstRun()
Hoffentlich bald überflüssig. Spätestens, wenn die Methode initHeaderSize()
von der Applikation aufgerufen wird.
true
oder false
zurückpublic void setFirstRun(boolean firstRun)
Kann auf false gesetzt werden, falls die Größen des Spaltenheaders initialisiert worden sind.
firstRun
- true
ist Default-Einstellungpublic void addDataTableObjects(java.util.List<DataTableObject> dataTableObjects)
Fügt eine beliebige Anzahl neuer Datensätze an die bestehenden Datensätze hinten an.
Achtung: es ist nicht geklärt, ob diese Methode auch dafür sorgt, dass die Zeilen der Datensätze sichtbar werden, falls sie im sichtbaren Bereich sind, oder ob dazu noch der AdjustmentListener getriggert werden muss. S. addDataTableObject(..).
addDataTableObjects
in interface DataViewListener
dataTableObjects
- Liste neuer Datensätzepublic void addDataTableObject(int index, DataTableObject dataTableObject)
TBD Fügt einen Datensatz an eine bestimmte Position der bisherigen Datensätze ein. Befindet sich die Position innerhalb der gerade dargestellten Datensätze, dann wird die Darstellung neu erzeugt und angezeigt.
DIESER KOMMENTAR IST FALSCH: Tatsächlich wird nur die erste Zeile ins Panel eingefügt, alle anderen kommen erst durch den AdjustmentListener hinzu. Da ein AdjustmentEvent künstlich nur recht komisch auszulösen ist, hätte man das besser so wie beschrieben implementiert. TN, nach langer Fehlersuche.
addDataTableObject
in interface DataViewListener
index
- Position des neuen DatensatzesdataTableObject
- der neue Datensatzpublic void setDataTableObjects(java.util.List<DataTableObject> dataTableObjects)
Alle bisherigen Datensätze werden gelöscht und die neuen werden übernommen. Die ersten Datensätze, die angezeigt werden können, werden dargestellt.
Für diese Methode ist nicht klar, ob sie von den Problemen der Methode addDataTableObject betroffen ist.
setDataTableObjects
in interface DataViewListener
dataTableObjects
- Liste neuer Datensätzepublic void removeDataTableObject(int index)
Löscht einen Datensatz an angegebener Position.
removeDataTableObject
in interface DataViewListener
index
- Position des zu löschenden Datensatzespublic void update(int index, DataTableObject dataTableObject)
Aktualisiert an angegebener Position den Datensatz.
Von dieser Methode ist nicht bekannt, ob sie von den Problemen der Methode addDataTableObject betroffen ist.
update
in interface DataViewListener
index
- Position des zu aktualisierenden DatensatzesdataTableObject
- aktueller Datensatzprivate void setUpperPanel(int height)
Setzt für die oberen Platzhalter des Zeilenheaders und des Viewports die Höhe.
height
- die neue Höhe der Platzhalterpublic void setLowerPanel(int height)
Setzt für die unteren Platzhalter des Zeilenheaders und des Viewports die Höhe.
height
- die neue Höhe der Platzhalterpublic void increaseLowerPanel(int height)
Vergrößert den unteren Platzhalter um die angebene Höhe
height
- die zu addierende Höhe für den Platzhalterprivate boolean checkRowHeight()
Prüft, wieviel Platz die Komponente in der Höhe verbraucht und ob sie noch in der ScrollPane angezeigt werden kann.
public void setVerticalScrollBarValue(int value)
Setzt den Wert des vertikalen Rollbalkens.
value
- der neue Wertpublic int getVerticalScrollBarsMaximumValue()
Gibt den Maximalwert des vertikalen Rollbalkens zurück.
public void setVerticalScrollBarsMaximumValue(int value)
Setzt den maximalen Wert des vertikalen Rollbalkens.
value
- der neue Wertpublic int getVerticalScrollBarsVisibleAmount()
Gibt den Ausdehung des Knopfes der vertikalen Rollbalkens zurück.
public int getVisibleViewPortHeight()
Gibt die Höhe des sichtbaren Bereich des Viewports zurück.
public boolean isHorizontalScrollBarVisible()
Gibt true
zurück, wenn der horizontale Rolbalken sichtbar ist.
true
zurück, wenn der horizontale Rolbalken sichtbar istpublic void setHorizontalScrollBarPolicy(int horizontalPolicy)
Setzt den Modus des horizontalen Rollbalkens.
horizontalPolicy
- der neue Modus