// 18/05/2003
import java.applet.Applet;
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

/* <APPLET CODE="luzsolar.class" CODEBASE="." WIDTH=470 HEIGHT=400> </APPLET> */

public class luzsolar extends Applet implements ActionListener, ItemListener
{

  CheckboxGroup opções;
  Checkbox  checkbox1, checkbox2, checkbox3, checkbox4;
  Label     titulo01, rotulo01, rotulo02;
  TextField caixa001, caixa002;
  Button    botao;
  double    hora, A, Y;

  public void init()
  {
    opções = new CheckboxGroup();
    checkbox1 = new Checkbox("Verão     ", false, opções); add(checkbox1); checkbox1.addItemListener(this);
    checkbox2 = new Checkbox("Outono    ", true,  opções); add(checkbox2); checkbox2.addItemListener(this);
    checkbox3 = new Checkbox("Inverno   ", false, opções); add(checkbox3); checkbox3.addItemListener(this);
    checkbox4 = new Checkbox("Primavera", false, opções); add(checkbox4); checkbox4.addItemListener(this);
    titulo01  = new Label(" Oscilação diária da luz solar ");	add(titulo01);
    rotulo01  = new Label("Hora:");      add(rotulo01);
	caixa001  = new TextField("12",2);   add(caixa001);	 caixa001.setBackground(Color.yellow);
	botao = new Button("Calcular!");     add(botao);     botao.addActionListener(this);
	rotulo02  = new Label("Radiação:");  add(rotulo02);
	caixa002  = new TextField("",6);     add(caixa002);  caixa002.setBackground(Color.yellow);
  }

  public void itemStateChanged(ItemEvent e)
  {
    if(e.getItemSelectable() == checkbox1)
    {   A=3.0;
        hora =  Double.valueOf(caixa001.getText()).doubleValue();
	    Y=A*Math.sin((hora-6)*(2*3.1416/24));
	    if (Y<0.00001) Y=0;
        caixa002.setText(String.valueOf(Y));
        repaint();
    }
	else if(e.getItemSelectable() == checkbox2)
	{
		A=2.6;
		hora =  Double.valueOf(caixa001.getText()).doubleValue();
	    Y=A*Math.sin((hora-6)*(2*3.1416/24));
	    if (Y<0.00001) Y=0;
        caixa002.setText(String.valueOf(Y));
        repaint();
    }
	else if(e.getItemSelectable() == checkbox3)
	{
		A=2.0;
		hora =  Double.valueOf(caixa001.getText()).doubleValue();
		Y=A*Math.sin((hora-6)*(2*3.1416/24));
		if (Y<0.00001) Y=0;
        caixa002.setText(String.valueOf(Y));
		repaint();
	}
	else if(e.getItemSelectable() == checkbox4)
	{
		A=2.5;
		hora =  Double.valueOf(caixa001.getText()).doubleValue();
	    Y=A*Math.sin((hora-6)*(2*3.1416/24));
	    if (Y<0.00001) Y=0;
        caixa002.setText(String.valueOf(Y));
        repaint();
	}
  }

  public void actionPerformed(ActionEvent e)
  {	if (e.getSource() == botao)
	{
	   hora =  Double.valueOf(caixa001.getText()).doubleValue();
	   Y=A*Math.sin((hora-6)*(2*3.1416/24));
	   if (Y<0) Y=0;
       caixa002.setText(String.valueOf(Y));
	   repaint();
	}
  }
  public void paint (Graphics g)
  { double  T, DT, Y0, T0;
    T=0;    DT=0.1; Y0=30; T0=15;
    g.drawRect(80,120,360,200);
    g.drawString("Radiação ", 5, 175);
	g.drawString("Tempo (horas)", 270, 335);

    if(A==3.0)      {g.setColor(Color.red);}
	else if(A==2.6) {g.setColor(Color.magenta);}
	else if(A==2.0) {g.setColor(Color.blue);}
	else if(A==2.5) {g.setColor(Color.green);}

    g.drawLine(80, (int)(320-Y*Y0),440,(int)(320-Y*Y0));

	for (T=0;T<(24);T=T+DT)
    {
		g.drawOval((int)(80+T*T0),(int)(320-Y*Y0),1,1);
		g.drawLine((int)((hora+5.5)*T0),120,(int)((hora+5.5)*T0),320);
		Y=A*Math.sin((T-6)*(2*3.1416/24));
        if (Y<0) Y=0;
    }
  }
}// Enrique Ortega DEA-FEA-Unicamp 25 abril 2002
