Class ActionGotoTabelle

java.lang.Object
  |
  +--javax.swing.table.AbstractTableModel
        |
        +--ActionGotoTabelle
All Implemented Interfaces:
java.io.Serializable, javax.swing.table.TableModel

public class ActionGotoTabelle
extends javax.swing.table.AbstractTableModel
implements javax.swing.table.TableModel

Die Klasse ActionGotoTabelle liefert die Daten, die auf dem Bildschirm in der Aktions- und Sprungtabelle gezeigt werden. Insbesondere liefert die Methode 'getValueAt' für eine Position der Tabelle (Zeile, Spalte) ein Datenelement. Die Methode 'getRowCount' liefert die Anzahl der Zeilen, die Methode 'getColumnCount' liefert die Anzahl der Spalten.

Bitte beachten, dass die Aktions- und Sprungtabelle programmtechnisch in einer einzigen Tabelle verwaltet und dargestellt werden.

See Also:
Serialized Form

Field Summary
private  LingDaten lingdaten
          Referenz auf die linguistischen Daten, die zur Anzeige gebracht werden sollen.
private  javax.swing.JScrollPane scrollpane
          Referenz auf den Scrollbereich, in dem die Tabelle untergebracht ist.
private  javax.swing.JTable tabsicht
          Referenz auf die Bildschirmtabelle, die die Tabelle anzeigt
 
Fields inherited from class javax.swing.table.AbstractTableModel
listenerList
 
Constructor Summary
ActionGotoTabelle(LingDaten plingdaten)
          Dieser Konstruktor erzeugt ein neues Datenobjekt.
 
Method Summary
 int getColumnCount()
          Liefert die Anzahl der Spalten der Tabelle.
 java.lang.String getColumnName(int columnIndex)
          Liefert die Namen der Spalten der Tabelle.
 int getRowCount()
          Liefert die Anzahl der Zeilen der Tabelle.
 java.lang.Object getValueAt(int rowIndex, int columnIndex)
          Mit dieser Methode wird beim Bildschirmaufbau der Tabelle jeweils der aktuelle Wert eines Feldes der Tabelle abgerufen.
 boolean isCellEditable(int rowIndex, int columnIndex)
          Diese Methode liefert die Editierbarkeit eines Feldes der Tabelle.
 void setValueAt(java.lang.Object aValue, int rowIndex, int columnIndex)
          Diese Methode erlaubt das Setzen des Wertes eines Tabellenfeldes.
 void setzeAktuelleZeile(int zeilennr)
          Diese Methode wird während des Parse-Vorgangs aufgerufen.
 void setzeLingDaten(LingDaten plingdaten)
          Das Datenobjekt, dass die linguistischen Daten trägt, kann auch noch später gesetzt werden.
 void setzeTabSicht(javax.swing.JTable sicht, javax.swing.JScrollPane pscrollpane)
          Das Datenobjekt steuert zugleich auch Änderungen in der Anzeige, wenn dies nötig ist.
 
Methods inherited from class javax.swing.table.AbstractTableModel
addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getColumnClass, getListeners, getTableModelListeners, removeTableModelListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface javax.swing.table.TableModel
addTableModelListener, getColumnClass, removeTableModelListener
 

Field Detail

lingdaten

private LingDaten lingdaten
Referenz auf die linguistischen Daten, die zur Anzeige gebracht werden sollen.


tabsicht

private javax.swing.JTable tabsicht
Referenz auf die Bildschirmtabelle, die die Tabelle anzeigt


scrollpane

private javax.swing.JScrollPane scrollpane
Referenz auf den Scrollbereich, in dem die Tabelle untergebracht ist.

Constructor Detail

ActionGotoTabelle

public ActionGotoTabelle(LingDaten plingdaten)
Dieser Konstruktor erzeugt ein neues Datenobjekt. Die angezeigten Daten kommen aus dem Datenobjekt, dass die linguistischen Daten verwaltet (Klasse LingDaten). Daher wird hier eine Referenz auf dieses Datenobjekt mitgegeben.

Parameters:
plingdaten - Linguistische Daten, die zur Anzeige gebracht werden sollen.
Method Detail

setzeLingDaten

public void setzeLingDaten(LingDaten plingdaten)
Das Datenobjekt, dass die linguistischen Daten trägt, kann auch noch später gesetzt werden. In diesem Falle wird diese Methode genutzt.

Parameters:
plingdaten - Linguistische Daten, die zur Anzeige gebracht werden sollen.

setzeTabSicht

public void setzeTabSicht(javax.swing.JTable sicht,
                          javax.swing.JScrollPane pscrollpane)
Das Datenobjekt steuert zugleich auch Änderungen in der Anzeige, wenn dies nötig ist. Insbesondere die Methode 'setzeAktuelleZeile' benötigt eine spezielle Anzeige: während des Parse-Vorgangs soll immer die aktuelle Zeile in der Tabelle, die dem aktuellen Zustand des Parsers entspricht, angezeigt werden (im selektierten Zustand). Um diese Anzeige zu gewährleisten, wird ein Zugriff auf die Bildschirmobjekte benötigt.

Parameters:
sicht - Bildschirmtabelle, die die Tabelle anzeigt
pscrollpane - Scrollbereich, in dem die Tabelle untergebracht ist.

setzeAktuelleZeile

public void setzeAktuelleZeile(int zeilennr)
Diese Methode wird während des Parse-Vorgangs aufgerufen. Wenn sich der Parser in einem bestimmten Zustand befindet, soll passend dazu die entsprechende Zeile der Tabelle (Aktions- und Sprungtabelle) deutlich unterlegt (d.h. selektiert) angezeigt werden. Insbesondere ist dafür zu sorgen, dass, wenn die Tabelle so gross ist, dass auf dem Bildschirm ein Rollbalken angezeigt wird, zu der entsprechenden Zeile 'hingerollt' wird, und zwar programmgesteuert. Dieser Zugriff muss über den Viewport des Rollbereichs gesteuert werden.

Parameters:
zeilennr - Zeilennummer der Zeile, die im selektierten Zustand auf dem Bildschirm angezeigt werden soll.

getRowCount

public int getRowCount()
Liefert die Anzahl der Zeilen der Tabelle. Dies entspricht gerade der Anzahl der Zuständen.

Diese Information wird aus dem Datenobjekt, dass die linguistischen Daten trägt, bezogen.

Specified by:
getRowCount in interface javax.swing.table.TableModel
See Also:
TableModel.getRowCount()

getColumnCount

public int getColumnCount()
Liefert die Anzahl der Spalten der Tabelle. Dies entspricht gerade der Anzahl der Terminale plus der Anzahl der Nicht-Terminale.

Diese Information wird aus dem Datenobjekt, dass die linguistischen Daten trägt, bezogen.

Specified by:
getColumnCount in interface javax.swing.table.TableModel
See Also:
TableModel.getColumnCount()

getColumnName

public java.lang.String getColumnName(int columnIndex)
Liefert die Namen der Spalten der Tabelle.

Diese Information wird aus dem Datenobjekt, dass die linguistischen Daten trägt, bezogen. Dort ist die erste Zeile der Tabelle (quasi die Überschrift) mit den Terminalen aus dem Lexikon (Aktionstabelle) bzw. den Nicht-Terminalen aus der Grammatik (Sprungtabelle) beschriftet.

Specified by:
getColumnName in interface javax.swing.table.TableModel
Overrides:
getColumnName in class javax.swing.table.AbstractTableModel
See Also:
TableModel.getColumnName(int)

isCellEditable

public boolean isCellEditable(int rowIndex,
                              int columnIndex)
Diese Methode liefert die Editierbarkeit eines Feldes der Tabelle. Für dieses Projekt wird dies nicht benötigt, daher wird hier immer 'false' zurückgegeben.

Specified by:
isCellEditable in interface javax.swing.table.TableModel
Overrides:
isCellEditable in class javax.swing.table.AbstractTableModel
See Also:
TableModel.isCellEditable(int, int)

getValueAt

public java.lang.Object getValueAt(int rowIndex,
                                   int columnIndex)
Mit dieser Methode wird beim Bildschirmaufbau der Tabelle jeweils der aktuelle Wert eines Feldes der Tabelle abgerufen.

Da die Klasse ActionGotoTabelle nur eine Sicht auf die Daten bildet, nicht aber die Daten selber speichert, werden die Daten aus dem "echten" Datenobjekt gezogen und hier zurückgegeben.

Diese Information wird aus dem Datenobjekt, dass die linguistischen Daten trägt, bezogen. Da dieses Datenobjekt jedoch zwischen Aktions- und Sprungtabelle unterscheidet, muss in dieser Methode beim Spaltenindex geprüft werden, ob sich dieser letztlich auf die Aktions- oder Sprungtabelle bezieht. Je nachdem wird dann entweder auf die Aktions- oder Sprungtabelle zurückgegriffen.

Specified by:
getValueAt in interface javax.swing.table.TableModel
Parameters:
rowIndex - Tabellenzeile des Feldes, dass angezeigt werden soll
columnIndex - Tabellenspalte des Feldes, dass angezeigt werden soll
See Also:
TableModel.getValueAt(int, int)

setValueAt

public void setValueAt(java.lang.Object aValue,
                       int rowIndex,
                       int columnIndex)
Diese Methode erlaubt das Setzen des Wertes eines Tabellenfeldes. Da diese Klasse nicht die Werte echt speichert sondern nur eine Sicht auf die Daten liefert, wird diese Methode nicht benötigt. Sie ist daher leer.

Specified by:
setValueAt in interface javax.swing.table.TableModel
Overrides:
setValueAt in class javax.swing.table.AbstractTableModel
See Also:
TableModel.setValueAt(Object, int, int)