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

import java.awt.*;  
import java.awt.event.*;
import java.awt.color.*;
import javax.swing.*;
import javax.swing.border.*;
import java.net.*;
import java.io.*;
import java.awt.geom.*;
import java.awt.print.PrinterJob;
import java.awt.print.*;

/** Diese Klasse dient zur visuellen Darstellung und der Druckerausgabe 
 * der Adjazenzliste. Die Adjazenzliste wird in einem JEditorPane als HTML
 * formattierter Text angezeigt. Der Text ist nicht editierbar.
 */   
class AdjazenzlistenViewer 
extends JScrollPane
implements Printable {
  
  JEditorPane adlistPane = null;
  //??? AdjazenzmatrixTable admatrix = null;
  
  /** Konstruktor. Der Textinhalt bleibt leer.
   */
  public AdjazenzlistenViewer () {    
    adlistPane = new JEditorPane("text/html""");
    adlistPane.setEditable(false);

    getViewport().add(adlistPane);
  }

  /** Konstruktor. Der Textinhalt wird auf den String adjazenzliste
   * gesetzt. Dieser enthält die Adjazenzliste im HTML Format. Zur Umwandlung 
   * kann die Methode toHTML() der Klasse <i>Adjazenzliste</I> genutzt werden.
   *
   */
  public AdjazenzlistenViewer (String adjazenzliste) {    
    adlistPane = new JEditorPane("text/html", adjazenzliste);
    adlistPane.setEditable(false);

    getViewport().add(adlistPane);
  }
  
  /** Setzt den Text auf den per Parameter &uuml;bergebenen String.
   */
  public void setText (String adjazenzliste) {
    adlistPane.setText(adjazenzliste);
  }
  
  /** Druckt die Adjazenzliste mittels der Java Druckausgabe.
   */
    public int print(Graphics g, PageFormat pf, int pithrows PrinterException {
        if (pi >= 1) {
            return Printable.NO_SUCH_PAGE;
       }
    Graphics2D g2d=(Graphics2Dg;

    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);    
        
    double scale =Math.min(pf.getImageableWidth()/getWidth(),pf.getImageableHeight()/getHeight());
    scale=Math.min(1.0,scale);
    g2d.translate(pf.getImageableX(), pf.getImageableY());
    g2d.scale(scale, scale);

    adlistPane.print(g2d);

      return Printable.PAGE_EXISTS;

  }

}