/*
* 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
*
* @(#)Daten.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 java.awt.print.PrinterJob;
import java.awt.print.*;
import javax.swing.event.*;
import java.io.*;
import javax.swing.table.*;
/** Diese Klasse dient zur Darstellung der Adjazenzliste und der Adjazenzmatrix in
* einen JPanel. Die Adjazenzmatrix und die Adjazenzliste werden in einem JSplitPane
* angezeigt.
*/
public class Daten
extends JPanel
implements TableModelListener {
AdjazenzlistenViewer ad_view = null;
AdjazenzmatrixTable ad_table = null;
Adjazenzmatrix ad_matrix = new Adjazenzmatrix();
AdjazenzmatrixTableModel ad_table_model = new AdjazenzmatrixTableModel();
/** Leerer Kónstruktor.
*/
public Daten() {
}
/** Konstruktor, der die Adjazenzliste übernimmt.
*/
public Daten(Adjazenzliste adlist) {
setLayout(new BorderLayout());
JPanel oben = new JPanel();
ad_view = new AdjazenzlistenViewer(adlist.toHtml());
ad_view.setToolTipText("Adjazenzlistendarstellung");
JLabel l_adl=new JLabel("Adjazenzliste");
l_adl.setAlignmentX(Component.CENTER_ALIGNMENT);
oben.setLayout(new BoxLayout(oben,BoxLayout.Y_AXIS));
oben.add(l_adl);
oben.add(ad_view);
JPanel unten = new JPanel();
ad_table= new AdjazenzmatrixTable(ad_table_model);
ad_table.setToolTipText("Adjazenzmatrixdarstellung");
ad_table_model.addTableModelListener(ad_table);
JScrollPane ad_scrollPane = new JScrollPane(ad_table);
ad_scrollPane.setAlignmentX(Component.CENTER_ALIGNMENT);
JLabel l_adm =new JLabel("Adjazenzmatrix");
l_adm.setAlignmentX(Component.CENTER_ALIGNMENT);
unten.setLayout(new BoxLayout(unten,BoxLayout.Y_AXIS));
unten.add(l_adm,BorderLayout.NORTH);
unten.add(ad_scrollPane,BorderLayout.CENTER);
JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, oben, unten);
splitPane.setContinuousLayout(true);
splitPane.setOneTouchExpandable(true);
add(splitPane,BorderLayout.CENTER);
}
/** Setzt den Text der Adjazenzliste. Dieser muss im HTML Code als String
* üebergebene werden.
*/
public void setAdjazenzlistenText(String text) {
ad_view.setText(text);
}
/** Setzt die Adjazenzmatrix, die sich aus der Adjazenzliste ergibt.
*/
public void setAdjazenzmatrix(Adjazenzliste al) {
int maxnnum =al.getMaxNodeNumber();
Object[] colnames=new String[maxnnum+1];
for (int i = 0; i < maxnnum+1; ++i) {
colnames[i]=new String (""+i);
}
ad_matrix.setAdjazenzmatrix(al);
Object[][] data = new Object[ad_matrix.getRows()][ad_matrix.getColumns()];
for (int i=0;i<ad_matrix.getRows();i++) {
for (int j=0;j<ad_matrix.getColumns();j++) {
if (ad_matrix.getValue(i,j)!=Integer.MAX_VALUE) data[i][j]=new Integer(ad_matrix.getValue(i,j));
}
}
ad_table_model.setDataVector(data, colnames);
ad_table.setColumnSelectionAllowed(true);
ad_table.setToolTipText("Adjazenzmatrixdarstellung");
repaint();
}
/** Eventhandling, wenn sich die Tabelle der Adjazenzmatrix ändert.
*/
public void tableChanged(TableModelEvent e) {
repaint();
}
}
|