import java.awt.*;
import java.applet.Applet;
import java.io.*;
import java.net.*;

public class componenti extends Applet {

  Button bottone;
  Label label;
  Checkbox checkbox;
  Checkbox check1;
  Checkbox check2;
  CheckboxGroup checkGroup;
  Choice choice;
  List list;
  TextField field;
  TextArea textArea;
  Scrollbar scrollbar;
    

  public void init () {
    setBackground (Color.white);     // Sfondo applet
    setLayout (new BorderLayout ()); // Layout con le cinque posizioni
		
    Panel np = new Panel ();             // Pannello (un'area)
    np.setLayout (new GridLayout (3,1)); // Griglia di una colonna con tre righe
  
    // Prima Riga     
    label = new Label ("Label");              // Occupa tutta la prima riga
    np.add (label);

    // Seconda Riga
    Panel np1 = new Panel ();                 // La seconda riga e' un'altro pannello
    np1.setLayout (new FlowLayout ());        // Questo mette gli elementi in fila
    checkbox = new Checkbox ("Checkbox");
    checkbox.setBackground (Color.white);
    np1.add (checkbox);

    checkGroup = new CheckboxGroup ();        // Radio button - raggruppati - uno spegne l'altro
    check1 = new Checkbox ("Scelta1", checkGroup, false);
    check1.setBackground (Color.white);
    np1.add (check1);

    check2 = new Checkbox ("Scelta2", checkGroup, false);
    check2.setBackground (Color.white);
    np1.add (check2);
    np.add (np1);

    // Terza Riga     
    Panel np2 = new Panel ();                 // Ancora un pannello
    np2.setLayout (new GridLayout (1,3));     // Una riga e tre colonne
    field = new TextField (20);
    np2.add (field);                          // Prima colonna

    choice = new Choice ();
    choice.addItem("one");
    choice.addItem("two");
    choice.addItem("three");
    choice.addItem("four");
    np2.add (choice);                         // Seconda colonna
    
    scrollbar = new Scrollbar (Scrollbar.HORIZONTAL,0,10,0,100);
    np2.add (scrollbar);                      // Terza colonna

    np.add (np2);                             // Aggiungo questo panel, nella terza riga

    add ("North",np);                         // Aggiungo la griglia di tre righe a nord dell'applet

    list = new List (4,false);
    list.addItem("uno");
    list.addItem("due");
    list.addItem("tre");
    list.addItem("quattro");
    list.addItem("cinque");
    list.addItem("sei");
    add ("East",list);                        // Aggiungo la lista a est (destra) nell'applet
        
    textArea = new TextArea(4, 50);
    textArea.setEditable(false);
    add ("West", textArea);                   // Aggiungo l'area di testo a ovest (sinistra) nell'applet

    Panel sp = new Panel ();                  // Un ultimo pannello
    sp.setLayout  (new FlowLayout ());        // Che mette i compoinenti uno in fianco all'altro
    bottone = new Button ("Bottone");
    sp.add (bottone);                         // Aggiungo il bottone al pannello - avra' la sua dimensione naturale
        
    add ("South",sp);                         // Metto il pannello con il bottone a sud dell'applet
  }


  // Gestione ScrollBar
  public boolean handleEvent(Event evt) {
    switch (evt.id) {             // Per ogni movimento della scroll bar
      case Event.SCROLL_LINE_UP:
      case Event.SCROLL_LINE_DOWN:
      case Event.SCROLL_PAGE_UP:
      case Event.SCROLL_PAGE_DOWN:
      case Event.SCROLL_ABSOLUTE:
        textArea.appendText ("Scroll Bar a " +            // Aggiungo un messaggio nell'area di testo
          String.valueOf (scrollbar.getValue ()) + "\n");
        break;
    }
    return super.handleEvent(evt); // Faccio comunque gestire gli eventi all'handler di Applet (la superclasse)
  }

  // Gestione di tutti i bottoni (normali, check e radio)
  public boolean action(Event event, Object arg) {
    if (event.target == bottone) {
      textArea.setText ("");                  // Il bottone cancella il testo nell'area
    } else if (event.target == checkbox) {
      textArea.appendText ("Checkbox e' " + ((checkbox.getState()) ? "On" : 
        "off") + "\n");                       // Indico nella textarea lo stato cel check box
    } else if (event.target == check1) {
      if (check1.getState()) {
        textArea.appendText ("Seleziono Scelta1\n");
      }
    } else if (event.target == check2) {
      if (check2.getState()) {
        textArea.appendText ("Seleziono Scelta2\n");
      }
    } else if (event.target == choice) {
      textArea.appendText ("Si e' scelto '" + choice.getSelectedItem() + "'\n");
    } else if (event.target == list) {
      textArea.appendText ("Si e' scelto '" + list.getSelectedItem() + 
        "' dalla lista\n");
    } else if (event.target == field) {
      textArea.appendText ("'" + field.getText () + "'\n");
    }
    return true;
  }
}
