Class Arbeitsbereich

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

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

Die Klasse Arbeitsbereich liefert die Daten, die auf dem Bildschirm in der Arbeitsbereichstabelle 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 der Tabelle.

Im Unterschied zur Klasse ActionGotoTabelle, die keine eigene Datenhaltung hat, werden in dieser Klasse die Daten der Tabelle auch selbst verwaltet. Für Information darüber, welche Daten gespeichert werden, siehe auch den Abschnitt unter 'Field Summary' bzw. 'Field Detail'.

Die Klasse besitzt 2 besonders wichtige Methoden: 'fuegeZeileHinzu' und 'reduziere'. Siehe die entsprechende Dokumentation dieser Methoden für Details.

See Also:
fuegeZeileHinzu(ArbeitsbereichZeile), reduziere(int), Serialized Form

Field Summary
private  LingDaten lingdat
          Referenz auf die linguistischen Daten (Aktions- und Sprungtabelle)
private  java.util.Vector parsebaum
          Die Liste aller Parsebäume, die vom Parser bis zum aktuellen Zeitpunkt gebildet wurden.
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
private  java.lang.String[] ueberschriften
          Liste der Überschriften der Tabelle: "Nr","Pos","Arbeitsbereich","Erklärung"
private  java.util.Vector zeile
          Liste aller Zeilen im Anzeigebereich.
 
Fields inherited from class javax.swing.table.AbstractTableModel
listenerList
 
Constructor Summary
Arbeitsbereich(LingDaten lidat)
          Dieser Konstruktor erzeugt ein neues Datenobjekt.
 
Method Summary
 int anzahlZeilen()
          Liefert die Anzahl der Zeilen des Arbeitsbereichs.
 void fuegeParsebaumHinzu(ParseTree neuerBaum)
           
 void fuegeZeileHinzu(ArbeitsbereichZeile pzeile)
           
 int getColumnCount()
           
 java.lang.String getColumnName(int columnIndex)
           
 int getRowCount()
           
 java.lang.Object getValueAt(int rowIndex, int columnIndex)
           
 java.util.Vector holeParseBaeume()
          Liefert die Liste der Parsebäume.
 boolean isCellEditable(int rowIndex, int columnIndex)
           
 ArbeitsbereichZeile letzteZeile()
           
 void raeumeAuf()
          Diese Methode räumt den Arbeitsbereich auf, d.h.
 ArbeitsbereichZeile reduziere(int regelnr)
           
 void setValueAt(java.lang.Object aValue, int rowIndex, int columnIndex)
           
 void setzeLingDaten(LingDaten lidat)
          Das Datenobjekt, dass die linguistischen Daten trägt, kann auch noch später gesetzt werden.
 void setzeParsebaeume(java.util.Vector baeume)
          Setzt die Liste der Parsebäume.
 void setzeView(javax.swing.JTable ptab, javax.swing.JScrollPane pscroll)
          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

lingdat

private LingDaten lingdat
Referenz auf die linguistischen Daten (Aktions- und Sprungtabelle)


parsebaum

private java.util.Vector parsebaum
Die Liste aller Parsebäume, die vom Parser bis zum aktuellen Zeitpunkt gebildet wurden. Da der Parser nach Bottom-Up vorgeht, kann es mehrere Parsebäume geben, die erst bei einem späteren Reduktionsschritt zu einem größeren Parsebaum zusammengefasst werden.


zeile

private java.util.Vector zeile
Liste aller Zeilen im Anzeigebereich. Zum Verständnis der Struktur einer Zeile siehe die Dokumentation der Klasse 'ArbeitsbereichZeile'.


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.


ueberschriften

private java.lang.String[] ueberschriften
Liste der Überschriften der Tabelle: "Nr","Pos","Arbeitsbereich","Erklärung"

Constructor Detail

Arbeitsbereich

public Arbeitsbereich(LingDaten lidat)
Dieser Konstruktor erzeugt ein neues Datenobjekt. Die angezeigten Daten kommen aus der Liste der Arbeitsbereichzeilen (Attribut 'zeile').

Method Detail

raeumeAuf

public void raeumeAuf()
Diese Methode räumt den Arbeitsbereich auf, d.h. die Anzeige wird gelöscht. Dies wird dann benötigt, wenn ein begonnener Parsevorgang beendet ist bzw. der Parsevorgang abgebrochen wird. Ein Beispiel ist, dass der Benutzer den Knopf "Tabellen erzeugen" gedrückt hat. Dies bricht immer den aktuellen Parsevorgang ab, und der Arbeitsbereich wird aufgeräumt.


setzeLingDaten

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


setzeView

public void setzeView(javax.swing.JTable ptab,
                      javax.swing.JScrollPane pscroll)
Das Datenobjekt steuert zugleich auch Änderungen in der Anzeige, wenn dies nötig ist. Insbesondere die Methode 'fuegeZeileHinzu' 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). Die aktuelle Zeile ist immer die letzte Zeile in der Tabelle. Um diese Anzeige zu gewährleisten, wird ein Zugriff auf die Bildschirmobjekte benötigt.

Parameters:
ptab - Bildschirmtabelle, die die Tabelle anzeigt
pscroll - Scrollbereich, in dem die Tabelle untergebracht ist.

holeParseBaeume

public java.util.Vector holeParseBaeume()
Liefert die Liste der Parsebäume. Siehe Dokumentation des Attributs 'parsebaum'.

Returns:
Liste der Parsebäume, die der Parser bis zum gegenwärtigen Zeitpunkt gebildet hat.
See Also:
parsebaum

anzahlZeilen

public int anzahlZeilen()
Liefert die Anzahl der Zeilen des Arbeitsbereichs. Siehe Dokumentation des Attributs 'zeile'.

Returns:
Anzahl der Zeilen des Arbeitsbereichs
See Also:
zeile

setzeParsebaeume

public void setzeParsebaeume(java.util.Vector baeume)
Setzt die Liste der Parsebäume. Dies ist dann nötig, wenn der Parser in eine Sackgasse geraten ist und wieder in einen vorherigen Zustand zurückkehren muss. In diesem Fall wird die Liste der Parsebäume vom Stack eingelesen und mit dieser Methode wieder im Arbeitsbereich gesetzt.

See Also:
ShiftReduceParser.backtracke(), zeile

fuegeZeileHinzu

public void fuegeZeileHinzu(ArbeitsbereichZeile pzeile)

letzteZeile

public ArbeitsbereichZeile letzteZeile()

fuegeParsebaumHinzu

public void fuegeParsebaumHinzu(ParseTree neuerBaum)

reduziere

public ArbeitsbereichZeile reduziere(int regelnr)

getRowCount

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

getColumnCount

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

getColumnName

public java.lang.String getColumnName(int columnIndex)
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)
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)
Specified by:
getValueAt in interface javax.swing.table.TableModel
See Also:
TableModel.getValueAt(int, int)

setValueAt

public void setValueAt(java.lang.Object aValue,
                       int rowIndex,
                       int columnIndex)
Specified by:
setValueAt in interface javax.swing.table.TableModel
Overrides:
setValueAt in class javax.swing.table.AbstractTableModel
See Also:
TableModel.setValueAt(Object, int, int)