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

import javax.swing.*;
import java.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.Math;
import java.util.Collections;
import java.awt.geom.*;
import java.io.*;
import java.util.*;

/** Diese Kante dient zum Verwalten der GraphEdges. Diese werden in einem Vector
 * (GraphEdgeList ist Kind der Klasse Vector) gespeichert.
 */
public class GraphEdgeList
extends Vector
{

  /** Kontruktor.
  */
  public GraphEdgeList() {
    super();
  }
  
  /** Konstruktor, der die Kante newedge gleich einfügt.
   */
  public GraphEdgeList (GraphEdge newedge) {
    super();
    add(newedge);
  }
    
  /** Löschen der Kante e.
   */
  public void remove (GraphEdge e) {
    remove ((Object)e);
  }
  
  /** Hinzuf&uuml;gen der GraphEdge, die aus den Werten <i>tail</I><I>head</I>
   * und <I>c</I> und <I>shape</I> besteht.
   */
  public void add(Node tail,Node head, int c,Object s) {
    add((Object)new GraphEdge (tail,head,c ,s));
  }

  /** Hinzuf&uuml;gen der Kante mit dem Shape s.
   */
  public void add(Edge kante,Object s) {
    add((Object)new GraphEdge (kante,s));
  }

  /** Pr&uuml;fen, ob die GraphEdge schon in der Liste enthalten ist.
   */
  public boolean contains(GraphEdge ge) {
    return true;
  }
  
  /** Gibt die erste Kante wieder, die den Punkt <I>p</I> &uuml;berschneidet.
   */
  public GraphEdge getIntersectsEdge(Point p) {
    boolean gefunden=false;
    GraphEdge tmp_kante=new GraphEdge();
    Enumeration tmp_enum = elements();
    while ((tmp_enum.hasMoreElements()) && !(gefunden)){ // solange noch Knoten in der Liste gefunden werden, die gezeiochnet werden m&uuml;ssen 
      tmp_kante = (GraphEdgetmp_enum.nextElement()// Hole Element aus Vector        
      if (tmp_kante.intersects(p)) gefunden=true;
    }
    if (gefundenreturn tmp_kante;
    else return null;
  }
  
  /** L&ouml;scht die Kante, die den Punkt <I>p</I> schneidet.
   */
  public Edge removeIntersectsEdge (Point p) {
    GraphEdge tmp_edge = getIntersectsEdge(p);
    if (tmp_edge!=null)remove (tmp_edge);
    return tmp_edge;
    
  }

}