import java.awt.event.*;
import java.awt.*;
import java.applet.*;
import java.util.*;

public class Talk extends Applet implements ItemListener, ActionListener
    {
     private Button clear;
     private Button talks;

     public AudioClip sounds[];
                     
     public String soundString[]= 
                    { "dogs.au", "monkeys.au", "trees.au", "people.au", "guys.au",
                     "cars.au", "computers.au", "guts.au", "fires.au", "guns.au",
                     "chickens.au", "bombs.au", "Mahe.au", "Jeff.au", "JohnandTepring.au",
                     "SarahJane.au", "talk.au", "eat.au", "climb.au", "rip.au", "demoralize.au",
                     "masticate.au", "fornicate.au", "shoot.au", "draw.au",
                     "disillusion.au", "pump.au", "languor.au", 
                     "fat.au", "slinky.au", "slimy.au", "tall.au", "repulsive.au",
                     "stupid.au", "busty.au", "falliferous.au", "long.au", "outrageous.au",
                     "teeny.au", "easy.au", 
                     "the.au", "or.au", "and.au", "often.au", "soon.au", "quickly.au",
                     "now.au", "then.au", "while.au", "also.au", "datata.au", "with.au",
                     "falliferously.au" };  

     private List nounList;
     private List verbList;
     private List adjectiveList;
     private List otherwords;

   
     private String NOUNS[] =
                    {"dogs","monkeys","trees","people","guys",
                    "cars","computers","guts","fires","guns",
                    "chickens","bombs","Mahe","Jeff","JohnandTepring",
                    "SarahJane"  };

     private String VERBS[] =
                    {"talk","eat","climb","rip","demoralize",
                    "masticate","fornicate","shoot","draw",
                    "disillusion","pump","languor" };

     private String ADJECTIVES[] =
                    {"fat","slinky","slimy","tall","repulsive",
                    "stupid","busty","falliferous","long","outrageous",
                    "teeny","easy" };
     private String OTHERWORDS[] =
                    {"the","or","and","often","soon","quickly",
                    "now","then","while","also","datata","with",
                    "falliferously" };

     public String s;
     
     public TextArea sentence;

     public void init()
        {

         sounds= new AudioClip[soundString.length];
         for(int m = 0; m < soundString.length; m++)
          {  sounds[m] = getAudioClip(getDocumentBase(), soundString[m]); }

         s = new String("");
         sentence = new TextArea( s, 5, 60, TextArea.SCROLLBARS_NONE );

         clear = new Button("CLEAR");
         clear.addActionListener( new ButtonHandler(this) );
         add( clear, BorderLayout.SOUTH);

         talks = new Button("TALK");
         talks.addActionListener( new ButtalkHandler(this) );
         
         nounList = new List(5, false);
         nounList.addActionListener( this );
         nounList.addItemListener( this );

         for (int i =0; i < NOUNS.length; i ++)
            nounList.add( NOUNS[i] );

         add( nounList );

         verbList = new List(5, false);
         verbList.addActionListener( this );
         verbList.addItemListener( this );

         for (int i =0; i < VERBS.length; i ++)
            verbList.add( VERBS[i] );

         add( verbList );

         adjectiveList = new List(5, false);
         adjectiveList.addActionListener( this );
         adjectiveList.addItemListener( this );

         for (int i =0; i < ADJECTIVES.length; i ++)
            adjectiveList.add( ADJECTIVES[i] );

         add( adjectiveList );

         otherwords = new List(5, false);
         otherwords.addActionListener( this );
         otherwords.addItemListener( this );

         for (int i =0; i < OTHERWORDS.length; i ++)
            otherwords.add( OTHERWORDS[i] );

         add( otherwords );
         add( talks, BorderLayout.SOUTH);
         add( sentence );


        }
      public void actionPerformed( ActionEvent e )
      {
          
        if(e.getSource() == nounList)
          {
           s = s.concat(" " + NOUNS[nounList.getSelectedIndex()] );
           sentence.setText( s);
          }
        else if(e.getSource() == verbList)
          {                      
           s = s.concat(" " + VERBS[verbList.getSelectedIndex()] );
           sentence.setText( s);
          }
        else if(e.getSource() == adjectiveList)
          {
           s = s.concat(" " + ADJECTIVES[adjectiveList.getSelectedIndex()] );
           sentence.setText( s);
          }
        else if(e.getSource() == otherwords)
          {
           s = s.concat(" " + OTHERWORDS[otherwords.getSelectedIndex()] );
           sentence.setText( s);
          }


      }
      public void itemStateChanged( ItemEvent e)
      {
       List list = (List) e.getItemSelectable();
       showStatus(list.getSelectedItem() );
      }
}

class ButtonHandler implements ActionListener
{
 Talk t;
 public ButtonHandler(Talk t)
    {
        this.t = t;
    }
 public void actionPerformed(ActionEvent e)
 {
    t.s ="";
    t.sentence.setText(t.s);
 }
}
class ButtalkHandler implements ActionListener
{
 Talk t;
 public ButtalkHandler( Talk t )
    {
        this.t = t;
    }
 public void actionPerformed( ActionEvent e)
 {
  t.showStatus("Talk button pushed");

  String TALK = t.s;
  System.out.println(TALK);
  String temp;
    
  StringTokenizer tokens = new StringTokenizer( TALK );
  while(tokens.hasMoreTokens() )
        {
           temp = tokens.nextToken();
           temp = temp.concat(".au");
           for(int n = 0; n < t.sounds.length; n++)
                if( temp.equals(t.soundString[n]) )
                {
                     t.sounds[n].play();
                     System.out.println(temp+"  "+ t.soundString[n] );
                     try{
                          Thread.sleep(1000);
                        }
                        catch(Exception ee){}

                }
              
        }

 }
}