de.bsvrz.pat.sysbed.dataview
Class HeaderGrid

java.lang.Object
  extended by de.bsvrz.pat.sysbed.dataview.HeaderGrid

public class HeaderGrid
extends Object

Die Klasse HeaderGrid dient zur Darstellung einer hierarchischen Struktur (z.B. Baum). Die Darstellung kann dazu verwendet werden, einen verschachtelten Tabellenkopf einer Tabelle zu erstellen. Ein Objekt dieser Klasse besteht aus einem Vater-Element und beliebig vielen Nachfolgern. Bei der Darstellung werden die Nachfolger mittels eines Schiebereglers voneinander getrennt.

Author:
Kappich Systemberatung

Nested Class Summary
(package private)  class HeaderGrid.Arrow
          Erstellt einen Pfeil in einer angegebenen Richtung und Farbe der Größe 5 x 5 Pixel.
 class HeaderGrid.HeaderElement
          Diese Klasse repräsentiert eine Zelle des hierarchischen Spaltenheaders.
(package private)  class HeaderGrid.Splitter
          Die Klasse implementiert einen Schieberegler.
 
Field Summary
private  boolean _closedFromAbove
          Gibt an, ob die Spalte von übergeordneten Spalte geschlossen wurde oder nicht.
private  DataViewPanel _dataViewPanel
          speichert ein Exemplar des DataViewPanels
private  Debug _debug
          der Debug-Logger
private  boolean _fromParent
          Gibt an, ob die mouseDragged-Methode des Splitters von einem Vaterknoten aus aufgerufen wurde.
private  HeaderGrid.HeaderElement _headerElement
          speichert die Attributliste oder das Attribut, welches dargestellt werden soll
private  int _lastColumnWidth
          Speichert die Spaltenbreite, bevor die Spalte verkleinert wird.
private  int _numberOfColumns
          Speichert zu jedem Element die Anzahl der Spalten unter sich.
private  HeaderGrid _parent
          Speichert den Vaterknoten.
private  int _percent
          Gibt die prozentuale Veränderung des Vater-Elements beim Vergrößern bzw.
private  List<RowListener> _rowListener
          speichert alle angemeldeten Objekte, u.a.
private  HeaderGrid.Splitter _splitter
          speichert das Objekt des Schiebereglers
private  List<HeaderGrid> _successors
          Liste aller Nachfolger vom Vater-Element
 
Constructor Summary
HeaderGrid(HeaderGrid parent, Object node, DataViewPanel dataViewPanel)
          Es wird ein Objekt der Klasse HeaderGrid erzeugt.
 
Method Summary
 void addHeaderSuccessor(HeaderGrid headerGrid)
          Fügt einen Nachfolger hinzu.
 void addRowListener(RowListener rowListener)
          Objekte, die sich hier anmelden, werden benachrichtigt, sobald im Spaltenheader ein Schieberegler bewegt wird.
 JPanel createHeader()
          Erstellt ein Panel aus den im Objekt gesammelten Daten.
private  JPanel createHeaderElement()
          Erstellt ein Panel, welches ein Element mit zugehörigem Schieberegler auf der rechten Seite darstellt.
 HeaderGrid.HeaderElement getHeaderElement()
          Gibt das Vater-Element zurück.
 List<HeaderGrid> getHeaderSuccessors()
          Gibt die Nachfolger des Grids zurück.
 int getNumberOfColumns()
          Gibt die Anzahl der Spalten zurück, die sich unterhalb dieses Grids befinden.
 int getOptimalColumnWidth()
          Liefert die optimale Spaltenbreite, so dass alle Einträge zu sehen sind.
 HeaderGrid.Splitter getSplitter()
          Gibt den Schieberegler zurück.
private  GridBagConstraints makeGBC(int gridx, int gridy, int gridwidth, int gridheight, double weightx, double weighty)
          Hilfsfunktion zur Konstruktion des Panels.
 void removeRowListener(RowListener rowListener)
          Objekt, welches beim Listener wieder abgemeldet werden soll.
private  void setHeaderCursors(HeaderGrid grid, int cursor)
          Setzt bei allen Komponenten den Cursor, sobald der Schieberegler betätigt wird.
 void setNumberOfColumns(int numberOfColumns)
          Setzt die Anzahl der Spalten, die sich unterhalb dieses Grids befinden.
 void setRowWidth(int width)
          An alle angemeldeten Objekte wird die neue Breite der veränderten Spalte übergeben.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_debug

private Debug _debug
der Debug-Logger


_splitter

private final HeaderGrid.Splitter _splitter
speichert das Objekt des Schiebereglers


_headerElement

private final HeaderGrid.HeaderElement _headerElement
speichert die Attributliste oder das Attribut, welches dargestellt werden soll


_successors

private final List<HeaderGrid> _successors
Liste aller Nachfolger vom Vater-Element


_rowListener

private final List<RowListener> _rowListener
speichert alle angemeldeten Objekte, u.a. zwecks Größenanpassung


_dataViewPanel

private final DataViewPanel _dataViewPanel
speichert ein Exemplar des DataViewPanels


_fromParent

private boolean _fromParent
Gibt an, ob die mouseDragged-Methode des Splitters von einem Vaterknoten aus aufgerufen wurde.


_closedFromAbove

private boolean _closedFromAbove
Gibt an, ob die Spalte von übergeordneten Spalte geschlossen wurde oder nicht.


_percent

private int _percent
Gibt die prozentuale Veränderung des Vater-Elements beim Vergrößern bzw. Verkleinern an.


_lastColumnWidth

private int _lastColumnWidth
Speichert die Spaltenbreite, bevor die Spalte verkleinert wird.


_numberOfColumns

private int _numberOfColumns
Speichert zu jedem Element die Anzahl der Spalten unter sich.


_parent

private HeaderGrid _parent
Speichert den Vaterknoten.

Constructor Detail

HeaderGrid

public HeaderGrid(HeaderGrid parent,
                  Object node,
                  DataViewPanel dataViewPanel)
Es wird ein Objekt der Klasse HeaderGrid erzeugt.

Parameters:
parent - Vater-Knoten, dieses Knotens
node - eine Attributgruppe oder ein Attribut
dataViewPanel - Komponente, in der die Datensätze dargestellt werden
Method Detail

addRowListener

public void addRowListener(RowListener rowListener)
Objekte, die sich hier anmelden, werden benachrichtigt, sobald im Spaltenheader ein Schieberegler bewegt wird.

Parameters:
rowListener - anzumeldendes Objekt

removeRowListener

public void removeRowListener(RowListener rowListener)
Objekt, welches beim Listener wieder abgemeldet werden soll.

Parameters:
rowListener - abzumeldendes Objekt

setRowWidth

public void setRowWidth(int width)
An alle angemeldeten Objekte wird die neue Breite der veränderten Spalte übergeben.

Parameters:
width - neue Spaltenbreite

getOptimalColumnWidth

public int getOptimalColumnWidth()
Liefert die optimale Spaltenbreite, so dass alle Einträge zu sehen sind.

Returns:
optimale Spaltenbreite

addHeaderSuccessor

public void addHeaderSuccessor(HeaderGrid headerGrid)
Fügt einen Nachfolger hinzu.

Parameters:
headerGrid - ein Nachfolger

getHeaderSuccessors

public List<HeaderGrid> getHeaderSuccessors()
Gibt die Nachfolger des Grids zurück.

Returns:
die Nachfolger

getHeaderElement

public HeaderGrid.HeaderElement getHeaderElement()
Gibt das Vater-Element zurück.

Returns:
Vater-Element

getSplitter

public HeaderGrid.Splitter getSplitter()
Gibt den Schieberegler zurück.

Returns:
Schieberegler

getNumberOfColumns

public int getNumberOfColumns()
Gibt die Anzahl der Spalten zurück, die sich unterhalb dieses Grids befinden.

Returns:
Anzahl der Spalten

setNumberOfColumns

public void setNumberOfColumns(int numberOfColumns)
Setzt die Anzahl der Spalten, die sich unterhalb dieses Grids befinden.

Parameters:
numberOfColumns - Anzahl der Spalten

createHeader

public JPanel createHeader()
Erstellt ein Panel aus den im Objekt gesammelten Daten. Dieses Objekt besteht aus einem Element und seinen Nachfolgern. Wird für den Aufbau eines hierarchischen Tabellenkopfes genutzt.

Returns:
das Panel des Objekts

createHeaderElement

private JPanel createHeaderElement()
Erstellt ein Panel, welches ein Element mit zugehörigem Schieberegler auf der rechten Seite darstellt.

Returns:
das Panel des Objekts

makeGBC

private GridBagConstraints makeGBC(int gridx,
                                   int gridy,
                                   int gridwidth,
                                   int gridheight,
                                   double weightx,
                                   double weighty)
Hilfsfunktion zur Konstruktion des Panels. Hierüber werden die Bedingungen für die Anordnung der Elemente gesetzt.

Parameters:
gridx - Spaltennummer
gridy - Zeilennummer
gridwidth - Anzahl der Spalten über die das Element reicht
gridheight - Anzahl der Zeilen über die das Element reicht
weightx - Verteilung von zur Verfügung stehendem Platz (horizontal)
weighty - Verteilung von zur Verfügung stehendem Platz (vertikal)
Returns:
die Bedingungen für die Anordnung des Elements

setHeaderCursors

private void setHeaderCursors(HeaderGrid grid,
                              int cursor)
Setzt bei allen Komponenten den Cursor, sobald der Schieberegler betätigt wird.

Parameters:
grid - das Grid, welches den Cursor zugewiesen bekommt
cursor - den Wert für den Cursor
See Also:
Cursor, Component.setCursor(java.awt.Cursor)