// About.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.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;
    private static final Color bgcolor = new Color(255,255,245);
    
    public TextField epsilon;
    private Paint paint;
    
    private Image im;
    private Graphics buf;
    private BufferedImage figure;

    //Mod1State state;
    public Button bupdate;
  
    public Instructions(){
	super();
        //this.state = state;
	setLayout(null);
	setBackground(bgcolor);
	bupdate = new Button("CLOSE");
        bupdate.setBackground(new Color(240,240,255));
	add(bupdate);
        //int buttonx = 410;
        //int buttony = 440;
        int buttonx = 600;
        int buttony = 255;
        int buttonwide = 70;
        int buttonheight = 27;
        
        bupdate.setBounds(buttonx,buttony,buttonwide,buttonheight);	
        Panel ps7 = new Panel();
	    ps7.setBackground(Color.lightGray);
	    add(ps7);
	    ps7.setBounds(buttonx-1,buttony-1,buttonwide+2,buttonheight+2);
	    
	Panel ps8 = new Panel();
	    ps8.setBackground(Color.black);
	    add(ps8);
	    ps8.setBounds(buttonx-2,buttony-2,buttonwide+4,buttonheight+4);	
    }
    
    public void paint(Graphics g){
            
	    if(im == null){
		im = createImage(getSize().width,getSize().height);
		buf = im.getGraphics();
		drawCanvas(buf);
	    }
	    else{
		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);

        //g.setFont(font_one);
        //fm = g.getFontMetrics();

        //boolean saveOldFlag = MaestroG.useBiggerFont;
        //MaestroG.useBiggerFont = false;
        
        g.setColor(Color.black);
        //g.setFont(state.ttfFont.deriveFont(Font.BOLD,16f));
        g.setFont(new Font("SanSerif",Font.BOLD,16));
        

        //try {
        //    figure = ImageIO.read(getClass().getResource("mod9.4.gif"));
        //} catch (IOException e) {
        //    e.printStackTrace();
        //}


        //g.drawString("Instructions", 20,25);
        
        String s;
        int nextX;
        int newY;
        int xleft = 30;
        int deltaY = 20;
        int ystart = 25;
        
        g.setColor(Color.red);
        //g.setFont(state.ttfFont.deriveFont(Font.BOLD,15f));
        g.setFont(new Font("SanSerif",Font.BOLD,15));

        g.drawString("Input", xleft,ystart);
        g.setColor(Color.black);
        //g.setFont(state.ttfFont.deriveFont(14f));
        g.setFont(new Font("SanSerif",Font.PLAIN,14));
        //INPUT
        newY = ystart+deltaY;
        s = "\u2022 Ground distance between antennas "+STR.ITAL+"d"+STR.ENDITAL;
        nextX = STR.displayString(s,g,xleft,newY);
        newY += deltaY;
        s = "\u2022 Elevation of antennas "+STR.ITAL+"h"+STR.ENDITAL+STR.SUB+"1"
            +STR.ENDSUB+STR.ITAL+" and  h"+STR.ENDITAL+STR.SUB+"2"+STR.ENDSUB;
        nextX = STR.displayString(s,g,xleft,newY);
        newY += deltaY;
        s = "\u2022 Frequency of operation "+STR.ITAL+"f"+STR.ENDITAL;
        nextX = STR.displayString(s,g,xleft,newY);
        newY += deltaY;
        s = "\u2022 Conductivity and permittivity of the terrain ";
        nextX = STR.displayString(s,g,xleft,newY);
        
        newY += deltaY+10;
        g.setColor(Color.red);
        //g.setFont(state.ttfFont.deriveFont(Font.BOLD,15f));
        g.setFont(new Font("SanSerif",Font.BOLD,15));
        g.drawString("Assumptions", xleft,newY);
        g.setColor(Color.black);
        //g.setFont(state.ttfFont.deriveFont(14f));
        g.setFont(new Font("SanSerif",Font.PLAIN,14));
        newY += deltaY;
        s = "\u2022 Earth curvature is neglected";
        nextX = STR.displayString(s,g,xleft,newY);
        newY += deltaY;
        s = "\u2022 No obstruction on the reflected path";
        nextX = STR.displayString(s,g,xleft,newY);
        s = "\u2022 Uniform atmosphere ("+STR.ITAL+"\u03b5"+STR.ENDITAL+STR.SUB+"r"
            +STR.ENDSUB+" = 1.0 )";
        newY += deltaY;
        nextX = STR.displayString(s,g,xleft,newY);
        s = "\u2022 Uniform radiation pattern in the plane of incidence";
        newY += deltaY;
        nextX = STR.displayString(s,g,xleft,newY);
                
        //s = "\u2022 Perpendicular polarization and perfectly conducting";
        //nextX = STR.displayString(s,g,xright,80+4*deltaY);
        //s = "    ground with reflection coefficient "+STR.ITAL+"\u0393(E)"+STR.ENDITAL+" = -1.0";
        //nextX = STR.displayString(s,g,xright,80+5*deltaY);
        
        
        // SECOND COLUMN
        
        //OUTPUT
        int xright = 420;
        ystart = 0;
        newY = ystart;
        
        /*
        g.setColor(Color.black);
        //g.setFont(state.ttfFont.deriveFont(14f));
        g.setFont(new Font("SanSerif",Font.PLAIN,14));
        newY += 20;
        s = "At sufficiently high frequencies, communication between two antennas takes";
        nextX = STR.displayString(s,g,xright,newY);
        newY += 20;
        
        s = "place mainly through superposition of a direct and a ground-reflected signal.";
        nextX = STR.displayString(s,g,xright,newY);
        newY += 20;
        s = "The different travel paths generate a phase delay for the reflected signal.";
        nextX = STR.displayString(s,g,xright,newY);
        newY += 20;
        
        s = "In addition, the complex reflection coefficient related to the conductivity and";
        nextX = STR.displayString(s,g,xright,newY);
        newY += 20;
        
        s = "the permittivity of the terrain causes additional phase shift and attenuation.";
        nextX = STR.displayString(s,g,xright,newY);
        newY += 20;
        
        s = "For a fixed transmitter, the elevation of the receiving antenna determines ";
        nextX = STR.displayString(s,g,xright,newY);
        newY += 20;
        
        s = "whether there is constructive or destructive interference of the two signals.";
        nextX = STR.displayString(s,g,xright,newY);
        
        */
        
        newY +=20;
        
        g.setColor(Color.red);
        //g.setFont(state.ttfFont.deriveFont(Font.BOLD,15f));
        g.setFont(new Font("SanSerif",Font.BOLD,15));
        g.drawString("Displayed Information", xright,newY);
        g.setColor(Color.black);
        //g.setFont(state.ttfFont.deriveFont(14f));
        g.setFont(new Font("SanSerif",Font.PLAIN,14));
        newY += 20;
        s = "\u2022 Vector interference diagram for the resultant signal at the receiver.";
        nextX = STR.displayString(s,g,xright,newY);
        s = "\u2022 Complex reflection coefficient for perpendicular (horizontal) polarization";
        nextX = STR.displayString(s,g,xright,newY+deltaY);
        s = "or parallel (vertical) polarization, and phase delay information.";
        nextX = STR.displayString(s,g,xright,newY+2*deltaY);
        
        g.setColor(Color.blue.darker());
        //g.setFont(state.ttfFont.deriveFont(14f));
        g.setFont(new Font("SanSerif",Font.PLAIN,14));
        newY += 75;
        s = "At sufficiently high frequencies, communication between two antennas takes";
        nextX = STR.displayString(s,g,xright,newY);
        newY += 20;
        
        s = "place mainly through superposition of a direct and a ground-reflected signal.";
        nextX = STR.displayString(s,g,xright,newY);
        newY += 20;
        s = "The different travel paths generate a phase delay for the reflected signal.";
        nextX = STR.displayString(s,g,xright,newY);
        newY += 20;
        
        s = "In addition, the complex reflection coefficient related to the conductivity and";
        nextX = STR.displayString(s,g,xright,newY);
        newY += 20;
        
        s = "the permittivity of the terrain causes additional phase shift and attenuation.";
        nextX = STR.displayString(s,g,xright,newY);
        newY += 20;
        
        s = "For a fixed transmitter, the elevation of the receiving antenna determines ";
        nextX = STR.displayString(s,g,xright,newY);
        newY += 20;
        
        s = "whether there is constructive or destructive interference of the two signals.";
        nextX = STR.displayString(s,g,xright,newY);
               
        //g.drawImage(figure,435,8*deltaY,this);

        drawCopyRight(g);

        //MaestroG.useBiggerFont = saveOldFlag;

    }


    public void drawCopyRight(Graphics g) {
        int deltaY = 20;
        int startingY = getSize().height - 70;
        int startingX = 0;
        FontMetrics fm;
        g.setColor(Color.black);
        g.setColor(Color.black);
        //g.setFont(normalfont14);
        //g.setFont(state.ttfFont.deriveFont(14f));
        g.setFont(new Font("SanSerif",Font.PLAIN,14));
        fm = g.getFontMetrics();
        g.drawString("Applet Design: Umberto Ravaioli",
                     startingX+15,startingY+deltaY);
        
        //MaestroG.superscripter("Interactive Java","TM"," platform:  www.amanogawa.com",
        //                       g,14,startingX,startingY+2*deltaY);
        String s = "Interactive Java"+STR.SUP+"TM"+STR.ENDSUP+
            " platform:  www.amanogawa.com";
        int nextX = STR.displayString(s,g,startingX+15,startingY+2*deltaY);
        int lineLength = fm.stringWidth("Interactive JavaTM platform:  www.amanogawa.com");
        lineLength+= 10;

        //g.setFont(state.ttfFont.deriveFont(14f));
        g.drawString("All Rights Reserved",startingX+15,startingY+3*deltaY);
        g.drawLine(startingX,startingY+5,
                   startingX+15+lineLength+10,startingY+5);
        g.drawLine(startingX+15+lineLength+10,startingY+5,
                   startingX+15+lineLength+10,startingY+4*deltaY);
    }

//----------------------------------------------------------------------------------------    
}//End
    

