//Auxiliary4.java
//author Umberto Ravaioli, 2005

import java.awt.*;
import java.awt.event.*;

//import Trans_State;
public class Auxiliary4 extends Canvas implements MouseListener{
	
	private Trans_State state;
	private Image im;
	private Graphics buf;
	private static final Font labfont = TheFonts.bold10;
	private static final Color bgcolor = Color.white;
	private static final Color bgcolor2 = new Color(236,236,236);
	private static final Color ccolor1 = new Color(50,204,153);
	private static final double epsilon0 = 8.8541878176E-12; // Units: F/m
	private static final double mu0 = 1.25663706144E-6; //      Units H/m
	private static final double light_velocity = Math.sqrt(1.0/(epsilon0*mu0)); //  Units m/s
	
	private static final Font normalfont = TheFonts.serif14;
	private static final Font normalfont2 = TheFonts.sanSerif12;
	
        private static final Font subfont = TheFonts.sanSerif10;
	private static final Font symbolfont = TheFonts.symbol14;
	private static String alpha, Ohm, lambda, infinity, Gamma, epsilon;
	
	private boolean IsFocusOn, IsTopoOn, IsDark;
	public Auxiliary4(Trans_State state){
		super();
		this.state = state;
		setBackground(bgcolor);
		this.addMouseListener(this);
		IsFocusOn = false;
		IsDark = true;
	}
        
        public void update(Graphics g){
		paint(g);
	}
        
        public void clear(){
	    this.getGraphics().clearRect(0,0,getSize().width,getSize().height);
	    repaint();
        }

	public void paint(Graphics g){
		if(im == null){
		im = createImage(getSize().width,getSize().height);
		buf = im.getGraphics();
		drawReferenceAxis(buf);
	    }
	    else{
		drawReferenceAxis(buf);
	    }
	    g.drawImage(im,0,0,null);
	}
        
	private void drawReferenceAxis(Graphics g){
                Font scalefont1 = (new Font("Serif",Font.BOLD,state.font13));
                Font scalefont2 = (new Font("Serif",Font.PLAIN,state.font13));
                
		int xd, yd, dx, dy;
		g.clearRect(0,0,getSize().width,getSize().height);
		
		g.setColor(Color.black);
		FontMetrics fm = g.getFontMetrics();
		
		alpha="\u03b1";
		lambda="\u03bb";
		Ohm="\u03a9";
		infinity="\u221e";
		Gamma="\uu0393"; 
		epsilon="\u03b5";
		
	    g.drawLine(state.s10,state.s5,getSize().width - state.s10,state.s5);
            g.drawLine(state.s34,state.s2,state.s34,state.s8);
            g.drawLine(getSize().width - state.s19,state.s2,getSize().width - state.s19,state.s8);
            //MaestroG.drawArrow(state.s15,state.s5,8,g);
            MaestroG.drawArrowScaled(state.s15,state.s5,4,state.sfactor,g);
            
            g.setFont(scalefont1);
            g.drawString("d",state.s10,state.s20);
            
            g.setFont(scalefont2);
            g.drawString("0",getSize().width - state.s22,state.s21);
            g.drawString("\u03bb",state.s32,state.s21);
        }
	
	public void mouseClicked(MouseEvent evt){
	    if(IsFocusOn){
		IsFocusOn = false;
		repaint();
	    }
	
	    else{
		IsFocusOn = true;
		repaint();
	    }
    
	}
	
	public void setDark(boolean IsDark){
	    this.IsDark = IsDark;
	}
    
	public void mouseEntered(MouseEvent evt){
	    IsTopoOn = true;
	    repaint();
	}
	public void mouseExited(MouseEvent evt){
	    IsTopoOn = false;
	    repaint();
	}
	public void mousePressed(MouseEvent evt){}
	public void mouseReleased(MouseEvent evt){}
    
}//End of CircuitCanvs

