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

import java.awt.*;
import java.io.*;

/* implements Compareable!! wichtig für das Zeichnen der Liste
 */
 /** Klasse die neben der Node Information noch das dem Knoten umgebene Rechteck
  * enthält, sowie die Farbe in der der Knoten gefüllt werden soll.
  */
class GraphNode 
extends Node 
implements Comparable, Serializable
{
  
  Rectangle rectangle = null;
  Color color = Color.white;
  
  /** Einen GraphNode mit dem Knoten <I>n</I> und dem Rechteckt <I>r</I> erzeugen.
   */
  public GraphNode (Node n, Rectangle r) {
    value = n.getValue();
    rectangle = r;
  }

  /** Einen GraphNode mit dem GraphNode <I>gn</I> erzeugen.
   */   
  public GraphNode (GraphNode gn) {
    value = gn.getValue();
    rectangle = gn.rectangle;
  }
  
  /** Einen GraphNode mit dem Knoten <I>n</I> und dem Rechteckt <I>r</I> erzeugen.
   */
  public GraphNode (int n, Rectangle r) {
    value = n;
    rectangle = r;
  }
  
  /** Einen GraphNode mit dem Knoten <I>n</I> und dem Rechteckt 
   <I>(x,y,width,height)</I> erzeugen.
   */
  public GraphNode (int n, int x, int y, int width, int height) {
    value = n;
    rectangle = new Rectangle (x,y,width,height);    
  }  
  
  /** Setzen der Farbe.
   */
  public void setColor (Color c) {
    color = c;
  }
  
  /** Holen der Farbe.
   */
  public Color getColor() {
    return color;
  }
  
  /** Setzen des Rechtecks, bzw. deren Position.
   */
    public void setRectangleLocation(int x,int y){
         rectangle.setLocation(x, y);
    }

  /** Zur&uuml;ckgeben des Rechtecks.
   */
  public Rectangle getRectangle() {
    return rectangle;
  }
  
  /** Zur&uuml;ckgeben des Knotens.
   */
  public Node getNode() {
    return new Node(value);
  }
  
  /** Setzen des Knotens.
   */
  public void setNode(int v) {
    value=v;
  }
  
  /** Vergleichen mit einem anderen Knoten. Das Ergebnis ist der Klasse Node 
   * und der Methode compareTo zu entnehmen.
   */
     public int compareTo (GraphNode n) {
    return compareTo(n.getValue());
  }
  
  /** Vergleichen mit einem anderen Knoten. Das Ergebnis ist der Klasse Node 
   * und der Methode compareTo zu entnehmen.
   */
  public int compareTo (Object n) {
    return compareTo ((GraphNoden);
  }

  /** Erzeuge aus dem GraphNode einen String.
   */
  public String toString() {
    return "["+value+","+rectangle.toString()+","+color.toString()+"]";
  }
}