// About.java
/* A Java class for
 * LineImpedance.java
 * Electromagnetic Transmission Line Applet
 * Applet without Smith Chart - Prepared by Umberto Ravaioli 
 * for 6th edition of Fundamentals of Applied Electromagnetics Book
 * May 2009 - All Rights Reserved
 */   


import java.io.*;
import java.applet.*;
import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.awt.event.*;
import java.awt.font.*;
import java.net.URL;
import java.text.*;
import java.util.*;
import java.util.Map;
import java.util.Hashtable;
import java.util.jar.Attributes;
import java.awt.image.BufferedImage;
//import java.io.IOException;
import javax.imageio.ImageIO;


public class Instructions extends Panel {
    
    //private static final Color bgcolor = new Color(236,236,236);
    private static final Color bgcolor = Color.white;
    
    public TextField epsilon;
    private Paint paint;
    
    private Image im;
    private Graphics buf;
    Mod2State state;
    public Button closeIt;
    private Panel closeIt_panel;

    public Instructions(Mod2State state){
	super();
        this.state = state;
	setLayout(null);
	setBackground(bgcolor);

	closeIt = new Button("Close");
        closeIt.setBackground(new Color(240,240,255));
        //closeIt.setVisible(false);
	add(closeIt);
        int buttonx = 440;
        int buttony = 500;
        int buttonwide = 70;
        int buttonheight = 27;        
	
        closeIt.setBounds(buttonx,buttony,buttonwide,buttonheight);	
        closeIt_panel = new Panel();
	    closeIt_panel.setBackground(Color.lightGray);
            closeIt_panel.setVisible(false);
	    add(closeIt_panel);
	    closeIt_panel.setBounds(buttonx-1,buttony-1,buttonwide+2,buttonheight+2);
    }



    
    public void paint(Graphics g){
            
        if(im == null){
            im = createImage(getSize().width,getSize().height);
            buf = im.getGraphics();
        }
        
        drawCanvas(buf);
        g.drawImage(im,0,0,null);
    }

	
    //Addition to reduce flicker new routine
    public void update(Graphics g){		// added to avoid clearing
            paint(g);
    }
    
    public void clear(){
	    this.getGraphics().clearRect(0,0,getSize().width,getSize().height);
	    repaint();
    }
    
    public void drawCanvas(Graphics g){
        FontMetrics fm;
        Graphics2D g2d = (Graphics2D)g;
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                             RenderingHints.VALUE_ANTIALIAS_ON);        
        g.clearRect(0,0,getSize().width-1,getSize().height-1);

        
        Font italicFont = new Font("SanSerif",Font.ITALIC,14);
        Font normalFont = state.ttfFont.deriveFont(14f);
        int deltaY = 20;
        String s;
        int endingX;

        g.setColor(Color.red);
        g.setFont(state.ttfFont.deriveFont(Font.BOLD,16f));

        g.drawString("Instructions ", 15,25);
        g.setColor(Color.black);
        //g.setFont(state.ttfFont.deriveFont(14f));
        g.setFont(normalFont);

        s = "Given a scalar function ";
        endingX = STR.displayString(s,g,25,60);

        s = ", its gradient is a vector given by";
        endingX = STR.displayString(s,g,endingX+48,60);

        drawCopyRight(g);
    }



    public void drawCopyRight(Graphics g) {
        int deltaY = 20;
        int startingY = getSize().height - 60;
        int startingX = 0;
        FontMetrics fm;
        g.setColor(Color.black);
        g.setColor(Color.black);
        //g.setFont(normalfont14);
        g.setFont(state.ttfFont.deriveFont(14f));
        fm = g.getFontMetrics();

        startingY += deltaY;
        g.drawString("Applet Design: Fawwaz Ulaby",
                     startingX,startingY+deltaY);
        
        int lineLength = fm.stringWidth("Applet Design: Fawwaz Ulaby");
        lineLength+= 10;

        g.setFont(state.ttfFont.deriveFont(14f));
        g.drawLine(startingX,startingY+5,
                   startingX+lineLength+10,startingY+5);
        g.drawLine(startingX+lineLength+10,startingY+5,
                   startingX+lineLength+10,startingY+2*deltaY);
    }
}
    

