//StartStopClock.java

import java.awt.*;

public class StartStopClock extends Panel {   
	private static final Color bgcolor = new Color(180,180,180); // beige
	public Button button1, button2, button3;
        public boolean IsStop;
        public ClockCanvas clockcanvas;
	PlaneWave_State state;
        
	public StartStopClock(PlaneWave_State state){
		super();
                this.state = state;
                
                int s1 = state.s25;
                int s2 = state.s50;
                int s3 = state.s75;
                
		setLayout(null);
                setBackground(bgcolor);
		
                button1 = new Button("START");
                button2 = new Button("STOP");
                button3 = new Button("RESET");
                
                button1.setBounds(state.s1+s1,state.s18,state.s66,state.s20);
		button2.setBounds(state.s65+s2,state.s18,state.s66,state.s20);
                button3.setBounds(state.s129+s3,state.s18,state.s66,state.s20);
		
		button1.setBackground(Color.white);
                button2.setBackground(Color.white);
                button3.setBackground(Color.white);
                
                button1.setBackground(new Color(255,255,230));
                button2.setBackground(new Color(255,255,230));
                button3.setBackground(new Color(255,255,230));
                
                button1.setForeground(Color.green.darker());
                button2.setForeground(Color.red.darker());
                button3.setForeground(Color.yellow.darker());
                
                button1.setFont(new Font("SanSerif",Font.BOLD,state.font11)); 
                button2.setFont(new Font("SanSerif",Font.BOLD,state.font11)); 
                button3.setFont(new Font("SanSerif",Font.BOLD,state.font11)); 
                
                clockcanvas = new ClockCanvas();
		clockcanvas.setBounds(state.s135,state.s3,state.s50,state.s50);
		add(button1);
		add(button2);
                add(button3);
                
		//add(clockcanvas);
                
                IsStop = true;
                
                button1.setEnabled(true);
                button2.setEnabled(false);
                button3.setEnabled(true);
	}
	
	public void paint(Graphics g){
            g.setColor(Color.white);
            g.fillRect(0,0,getSize().width,getSize().height);
            
            int s1 = state.s25;
            int s2 = state.s50;
            int s3 = state.s75;
                
            // Start - Stop button
            //-------------------------START BUTTON
            if(IsStop){
                g.setColor(Color.black);
                MaestroG.fillCircle(state.s35+s1,state.s30,state.s38,g);
                //g.setColor(Color.green);
                g.setColor(new Color(0,200,0));
                MaestroG.fillCircle(state.s33+s1,state.s28,state.s38,g);
                g.setColor(Color.green.darker());
                MaestroG.drawCircle(state.s33+s1,state.s28,state.s38,g);
                button1.setEnabled(true);
                button2.setEnabled(false);
                button3.setEnabled(true);
                // rectangles behind actual buttons
                g.setColor(Color.green.darker());
                g.fillRect(state.s1+s1-1,state.s18-1,state.s66+2,state.s20+2);    
            }
            else{
                g.setColor(Color.gray);
                MaestroG.fillCircle(state.s35+s1,state.s30,state.s38,g);
                g.setColor(Color.lightGray);
                MaestroG.fillCircle(state.s33+s1,state.s28,state.s38,g);
                g.setColor(Color.gray);
                MaestroG.drawCircle(state.s33+s1,state.s28,state.s38,g);
                button1.setEnabled(false);
                button2.setEnabled(true);
                button3.setEnabled(false);
                // rectangles behind actual buttons
                g.setColor(Color.black);
                g.fillRect(state.s1+s1-1,state.s18-1,state.s66+2,state.s20+2);
            }
            
            //--------------------------STOP BUTTON
            if(!IsStop){
                g.setColor(Color.black);
                MaestroG.fillCircle(state.s99+s2,state.s30,state.s38,g);
                g.setColor(Color.red);
                MaestroG.fillCircle(state.s97+s2,state.s28,state.s38,g);
                g.setColor(Color.red.darker());
                MaestroG.drawCircle(state.s97+s2,state.s28,state.s38,g);
                // rectangles behind actual buttons
                g.setColor(Color.red.darker());
                g.fillRect(state.s65+s2-1,state.s18-1,state.s66+2,state.s20+2);
            }
            else{
                g.setColor(Color.gray);
                MaestroG.fillCircle(state.s99+s2,state.s30,state.s38,g);
                g.setColor(Color.lightGray);
                MaestroG.fillCircle(state.s97+s2,state.s28,state.s38,g);
                g.setColor(Color.gray);
                MaestroG.drawCircle(state.s97+s2,state.s28,state.s38,g);
                // rectangles behind actual buttons
                g.setColor(Color.black);
                g.fillRect(state.s65+s2-1,state.s18-1,state.s66+2,state.s20+2);
            }

            //--------------------------RESET BUTTON
            
            if(IsStop){
                g.setColor(Color.black);
                MaestroG.fillCircle(state.s163+s3,state.s30,state.s38,g);
                g.setColor(Color.yellow);
                MaestroG.fillCircle(state.s161+s3,state.s28,state.s38,g);
                g.setColor(Color.yellow.darker());
                MaestroG.drawCircle(state.s161+s3,state.s28,state.s38,g);
                // rectangles behind actual buttons
                g.setColor(Color.yellow.darker());
                g.fillRect(state.s129+s3-1,state.s18-1,state.s66+2,state.s20+2);
            }
            else{
                g.setColor(Color.gray);
                MaestroG.fillCircle(state.s163+s3,state.s30,state.s38,g);
                g.setColor(Color.lightGray);
                MaestroG.fillCircle(state.s161+s3,state.s28,state.s38,g);
                g.setColor(Color.gray);
                MaestroG.drawCircle(state.s161+s3,state.s28,state.s38,g);
                // rectangles behind actual buttons
                g.setColor(Color.black);
                g.fillRect(state.s129+s3-1,state.s18-1,state.s66+2,state.s20+2);
            }
	}
	
	public void pause(boolean arg){
		clockcanvas.pause(arg);
	}
	
	public void start(){
		clockcanvas.start();
	}
	
	public void increment(){
		clockcanvas.increment();
	}
	
	public synchronized void setStatus(int CL_START, int CL_FINISH, int CL_DELTA){
		clockcanvas.setStatus(CL_START,CL_FINISH,CL_DELTA);
	}
	public synchronized void setSleepTime(int SleepTime){
		clockcanvas.setSleepTime(SleepTime);
	}
	public synchronized void reset(){
		clockcanvas.reset();
	}
	
}//End of StartStopClock.java
