PredecessorTable.java

/*
 *     YAV (Yet another Visualiser)
 *     (c) 2004 by Robin Quast
 *    Version 1.0 (04.03.2004)
 *    
 *  erstellt im Rahmen der Diplomarbeit
 * "Theorie und Java- Realisierung
 *  ausgewählter Algorithmen zur
 *  Bestimmung kürzester Wege in Graphen"
 *
 *  betreut durch Prof. Dr. Lenze
 *  an der Fachhochschule Dortmund
 *  im SS 2003/ WS 2003/2004
 *
 *  @(#)PredecessorTable.java  1.0 04/03/09
 */

import javax.swing.*;
import java.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import java.util.Enumeration;
import java.lang.Math;
import java.util.Collections;
import java.awt.geom.*;
import javax.swing.table.*;

/** Klasse, die das Vorgängerarray in einer JTable zur Verfügung stellt. 
 */
class PredecessorTable
extends JTable  {

  /** Konstruktor, der das AbstractTableModel übernimmt.
   */
  public PredecessorTable(AbstractTableModel atm) {
        super();  
        DefaultTableColumnModel cm = new DefaultTableColumnModel();
        TableColumn col = new TableColumn(050);
         col.setHeaderValue("Knoten");
         cm.addColumn(col);
         col = new TableColumn(175);
         col.setHeaderValue("Vorgänger");
         cm.addColumn(col);
           
    setModel(atm);
    setColumnModel(cm);
       setPreferences();
  }

  /** Kontruktor, der ein TableModel erzeugt und initiale Werte vergibt.
   */
  public PredecessorTable() {
    super();
    setModel(new PredecessorTableModel());
    setPreferences();
  }
  
  /** Initialisieren der Werte.
   */
  public void setPreferences() {
    setPreferredScrollableViewportSize(new Dimension(150150));
    getTableHeader().setReorderingAllowed(false);
    setShowGrid(true);
    setSelectionMode(0);
  }

  /** Eventroutine für das auslösen einer Taste.
   */
  public void keyPressed(KeyEvent e) {
    repaint();
  }

  /** Die Taste wurde losgelassen.
   */
  public void keyReleased(KeyEvent e) {
    repaint();
  }

  /** Eine Zeile löschen, wobei die Zeile selektiert sein muss.
   */
    public void removeRow() { 
      int index = getSelectedRow();
    removeRow(index);
    }
    
    /** Eine Zeile mit dem übergebenen Index löschen.
     */
    public void removeRow(int index) {
      if (index>=0) {
        ((EdgeTableModel)getModel()).removeRow(index);
      
      repaint();    
  }

  
}