/*
* 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ü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ügen der Kante mit dem Shape s.
*/
public void add(Edge kante,Object s) {
add((Object)new GraphEdge (kante,s));
}
/** Prü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> ü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üssen
tmp_kante = (GraphEdge) tmp_enum.nextElement(); // Hole Element aus Vector
if (tmp_kante.intersects(p)) gefunden=true;
}
if (gefunden) return tmp_kante;
else return null;
}
/** Lö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;
}
}
|