//PlaneWaveMenuPanel.java
import java.awt.*;
import javax.swing.*;
import javax.swing.event.*;

public class PlaneWaveMenuPanel extends Panel{
    private static final Color bgcolor = new Color(236,236,236);
    public Button b1, b2, b3;
    public Checkbox EHbox, SDbox;
    public JSlider slider1;
    public int SCROLLMIN=750, SCROLLMAX=1001;
    private int SleepTime = 50;
    PlaneWave_State state;
        
    public PlaneWaveMenuPanel(PlaneWave_State state){
	super();
        setLayout(null);
        this.state = state;
        
	setBackground(bgcolor);
        
	b1 = new Button("Input/Output");
        b1.setBackground(Color.white);
	b2 = new Button("Phase Planes");
	b2.setBackground(Color.white);
        b3 = new Button("Instructions");
        b3.setBackground(Color.white);
        b1.setFont(new Font("SanSerif",Font.PLAIN,state.s10));
        b2.setFont(new Font("SanSerif",Font.PLAIN,state.s10));
        b3.setFont(new Font("SanSerif",Font.PLAIN,state.s10));
        
        add(b1);
	add(b2);
        add(b3);
	EHbox = new Checkbox("|Phasors|",null,true);
        SDbox = new Checkbox("Show \u03b4 z",null,true);
        //SDbox.setEnabled(false);
        SDbox.setVisible(false);
                
	//add(EHbox);
	EHbox.setBackground(bgcolor);
        add(SDbox);
	SDbox.setBackground(bgcolor);       
        
        b1.setBounds(state.s5,state.s3,state.s95,state.s20);
        b2.setBounds(state.s105,state.s3,state.s95,state.s20);
        b3.setBounds(state.s200+state.s5,state.s3,state.s95,state.s20);
        Panel pb1 = new Panel();
	    pb1.setBackground(Color.black);
	    add(pb1);
	    pb1.setBounds(state.s105-1,state.s3-1,state.s95+2,state.s20+2);
        Panel pb2 = new Panel();
	    pb2.setBackground(Color.black);
	    add(pb2);
	    pb2.setBounds(state.s5-1,state.s3-1,state.s95+2,state.s20+2);
        Panel pb3 = new Panel();
	    pb3.setBackground(Color.black);
	    add(pb3);
	    pb3.setBounds(state.s200+state.s5-1,state.s3-1,state.s95+2,state.s20+2);
            
        EHbox.setBounds(state.s200+state.s20,state.s3,state.s100,state.s20);
        SDbox.setBounds(state.s200+state.s20,state.s29,state.s100,state.s20);
        
        slider1 = new JSlider(SCROLLMIN,SCROLLMAX);
	slider1.setValue(SCROLLMAX-1-SleepTime);
        //slider1 = new Scrollbar(Scrollbar.HORIZONTAL,SCROLLMAX-1-SleepTime,1,SCROLLMIN,SCROLLMAX);
	slider1.setBounds(state.s25,state.s27,state.s200+state.s55,state.s15);
        slider1.setBackground(Color.white);
	add(slider1);
        /*
        Panel ps1 = new Panel();
                    ps1.setBackground(Color.black);
                    add(ps1);
                    ps1.setBounds(state.s25-1,state.s27-1,state.s200+state.s55+2,state.s15+2);
	*/
    }
    
    public void paint(Graphics g){
	g.setColor(bgcolor);
	g.fillRect(0,0,getSize().width-1,getSize().height-1);
	//g.setColor(Color.black);
        //g.drawLine(0,size().height-1,size().width-1,size().height-1);
        //g.drawLine(size().width-1,0,size().width-1,size().height-1);
        //g.setColor(Color.white);
        //g.drawLine(0,0,size().width-1,0);
        //g.drawLine(0,0,0,size().height-1);
        
        Graphics2D g2d = (Graphics2D)g;
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
            
        g.setColor(Color.black);
        MaestroG.subscripter("Animation speed","","",g,state.s10,state.s120,state.s53);
        
        g.setColor(Color.black);
        g.setColor(Color.white);
        
        g.setColor(Color.blue.darker());
	drawArrowNew(state.s35,state.s49,2,g);
	drawArrowNew(state.s42,state.s49,2,g);
            
        g.setColor(Color.red.darker());
	drawArrowNew(state.s200+state.s64,state.s49,1,g);
	drawArrowNew(state.s200+state.s71,state.s49,1,g);

	slider1.requestFocusInWindow();
    }
    
    public void drawArrowNew(int x, int y, int tipo, Graphics g){
	Graphics2D g2d = (Graphics2D)g;
	 
        switch (tipo){
	   case 1://ArrowRightSmooth
               g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
        
          	Polygon pK = new Polygon();
		pK.addPoint(x+state.s2, y-state.s2);
		pK.addPoint(x+state.s2, y+state.s2);
		pK.addPoint(x+state.s7,y);
		g.drawPolygon(pK);
		g.fillPolygon(pK);
                
                g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_OFF);
	   
	   break;
           
           case 2://ArrowLeftSmooth
               g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
        
                Polygon pL = new Polygon();
		pL.addPoint(x-state.s2, y-state.s2);
		pL.addPoint(x-state.s2, y+state.s2);
		pL.addPoint(x-state.s7,y);
		g.drawPolygon(pL);
		g.fillPolygon(pL);
                
                g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_OFF);
 
	   break;
          
	}		
    }
}
