PredecessorTableModel.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
 *
 *  @(#)PredecessorTableModel.java  1.0 04/03/09
 */

import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
import java.util.Vector;
import java.util.Collections;

class PredecessorTableModel 
extends AbstractTableModel {

    /** Spaltenüberschriften festlegen.
     */
        final String[] columnNames = {"Knoten"
                                      "Vorgänger"
                                       };
                                      
        /** Der Vector data hält die Knoten mit den Vorgängern der Tabelle.
         * Diese werden als Kante in dem Vector gehalten, wobei die Kosten 
         * nicht angezeigt werden und auch für die Anzeige nicht wichtig sind.
         */                                      
        int [] data = {};
        
         /** Anzahl der Spalten ermitteln.
     */
        public int getColumnCount() {
            return columnNames.length;
        }
        
    /** Anzahl der Zeilen ermitteln.
     */        
        public int getRowCount() {
            //return data.size();
            return data.length;
        }

    /** Spaltenname f&uuml;r Spalte <i>col</I> zur&uuml;ckgeben.
     */
        public String getColumnName(int col) {
            return columnNames[col];
        }

    /** Wert an Zeile <I>row</I> und Spalte <I>col</I> zur&uuml;ckgeben.
     */
        public Object getValueAt(int row, int col) {
          switch (col)
          {
            case 0return (Objectnew Integer(row);
            case 1
              if (!(data[row]==-1)) return (Objectnew Integer(data[row]);
              else return (Objectnew String("-");
            
          }
          return null;
        }
    
    /** Alle Datenzeilen l&ouml;schen. Alle Elemente des Vectors data werden
     * gel&ouml;scht und die Gr&ouml;ße des Vectors wird auf 0 gesetzt.
     */
    public void removeRows() {
      int elements = data.length;
      data = new int[0];
      fireTableRowsDeleted(0,elements);
    }
    
    /** Keine Zelle ist editierbar.
     */    
        public boolean isCellEditable(int row, int col) {
            return false;
        }
        
        /** Alle Zeilen werden gel&ouml;scht und die Zeilen aus dem &uuml;bergebenen Array
         * &uuml;bernommen.
         */
        public void setRows(int[] pred) {
          removeRows();
          data = new int [pred.length];
      System.arraycopy(pred,0,data,0,pred.length);
      fireTableRowsInserted(0,data.length-1);
        }
}