import java.awt.*;
import java.util.*;
import java.applet.*;
import java.net.*;

public class ZeichenBereich extends Canvas
{
  private MyApplet myApplet = null;
  
  public ZeichenBereich(MyApplet myApplet)
  {
    this.myApplet = myApplet;
    
    setBackground( Color.lightGray );
  }
  public void paint( Graphics g )
  { 
    // Bild auf Hintergrund legen
    Image img = null;
    MediaTracker mt = new MediaTracker(MyApplet.c);
    if ( MyApplet.c instanceof Applet )
    {  
      try
      {
        Applet applet = (Applet)MyApplet.c;
        System.out.println(applet.getCodeBase());
        URL url = new URL(applet.getCodeBase().toString()+"tal.gif");
        img = applet.getImage( url );        
      }
      catch( MalformedURLException murle ){System.out.println("murle : "+murle);}
      catch( Exception e )
      {
        System.out.println("e : "+e);
      }
    }
    else
    {
      img = Toolkit.getDefaultToolkit().getImage("tal.gif");
    }
    
    // Bild dem Mediatracker geben, der das Laden koordiniert
    try
    {
      mt.addImage(img, 0);
      mt.waitForID(0);      
    }
    catch( InterruptedException ie ){}
    
    // Bild zeichnen
    g.drawImage( img,0,0,null );
    
    
    // Fachwerk holen
    Fachwerk f = myApplet.getFachwerk();
    
    // Alle knoten zeichnen (Farbe blau)
    Enumeration enum = f.getKnotenListe().elements();
    g.setColor( Color.blue );
    while ( enum.hasMoreElements() )
    {
      Knoten k = (Knoten)enum.nextElement();    
      g.drawArc( k.getX(), k.getY(), 6, 6, 0, 360 );  
      
      // Lager zeichnen hierhin!
      // Aber jetzt nicht mit Linien, sondern mit den entsprechenden Grafiken
      if (k.getLager().getU()==1 && k.getLager().getV()==1 && k.getLager().getPhi()==1) 
      {
	   Image fl;
	   fl = Toolkit.getDefaultToolkit().getImage( "auflager_2.gif" );
       MediaTracker tracker = new MediaTracker(MyApplet.c);
	   tracker.addImage(fl,0);
	   try
	   {
	   	tracker.waitForID(0);
	   }
	   catch (InterruptedException e)
	   {
	   }
	   g.drawImage (fl,k.getX()-4,k.getY()+2,null);
		
	    }   
	    if (k.getLager().getU()==1 && k.getLager().getV()==1 && k.getLager().getPhi()==0) 
	    {
	  	 Image ll;
	   ll = Toolkit.getDefaultToolkit().getImage( "auflager_1.gif" );
       MediaTracker tracker = new MediaTracker(MyApplet.c);
	   tracker.addImage(ll,0);
	   try
	   {
	   	tracker.waitForID(0);
	   }
	   catch (InterruptedException e)
	   {
	   }
	   g.drawImage (ll,k.getX()-4,k.getY()+2,null); 	    
	    } 

    }
    
    // Alle Säbe zeichnen
    enum = f.getStabListe().elements();
    g.setColor( Color.red );
    while ( enum.hasMoreElements() )
    {
      Stab s = (Stab)enum.nextElement();    
      g.drawLine( 
                  s.getKnotenA().getX()+3, s.getKnotenA().getY()+3,
                  s.getKnotenB().getX()+3, s.getKnotenB().getY()+3
                );      
    }
  }
}