// 18/05/2003
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

/* <APPLET CODE="sol.class" CODEBASE="." WIDTH=470 HEIGHT=400> </APPLET> */

public class sol extends Applet implements ItemListener, AdjustmentListener
{

  CheckboxGroup opções;
  Checkbox  checkbox1, checkbox2, checkbox3, checkbox4;
  Label     titulo01, rotulo01, rotulo02;
  TextField caixa001, caixa002;
  Scrollbar sb1;
  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);

	sb1 = new Scrollbar(Scrollbar.HORIZONTAL,8,0,0,25); add(sb1); sb1.addAdjustmentListener(this);
	caixa001 = new TextField(String.valueOf(sb1.getValue()),2); add(caixa001);
	caixa001.setEditable(false);

	rotulo02  = new Label("Radiação:");  add(rotulo02);
	caixa002  = new TextField("",6);     add(caixa002);  caixa002.setBackground(Color.yellow);
	caixa002.setEditable(false);
  }

  public void itemStateChanged(ItemEvent e)
  {
    if(e.getItemSelectable() == checkbox1)
    {   A=3.0;
        hora=(double)sb1.getValue();   caixa001.setText(String.valueOf(hora));
        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)sb1.getValue();   caixa001.setText(String.valueOf(hora));
		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)sb1.getValue();   caixa001.setText(String.valueOf(hora));
		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)sb1.getValue();   caixa001.setText(String.valueOf(hora));
		Y=A*Math.sin((hora-6)*(2*3.1416/24));
	    if (Y<0.00001) Y=0;
        caixa002.setText(String.valueOf(Y));
        repaint();
	}
  }

  public void adjustmentValueChanged(AdjustmentEvent e)
  {
    if(e.getAdjustable() == sb1)
    {
		 hora=(double)sb1.getValue();
		 Y=A*Math.sin((hora-6)*(2*3.1416/24));
	     if (Y<0.00001) Y=0;
		 caixa001.setText(String.valueOf(hora));
		 caixa002.setText(String.valueOf(Y));
		 repaint();
     }
   }

  public void paint (Graphics g)
  { double  T, DT, Y0, T0;
    T=0;    DT=0.2;

    Y0=30; T0=15; /* fatores de escala */
    g.drawRect(83,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.darkGray);}

    g.drawLine(83, (int)(320-Y*Y0),440,(int)(320-Y*Y0));

	for (T=0.3;T<(24);T=T+DT)
    {
		g.drawOval((int)(80+T*T0),(int)(320-Y*Y0),1,1);
		g.drawLine((int)((hora+5.6)*T0),120,(int)((hora+5.6)*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
