/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import java.applet.AudioClip;
import java.awt.Button;
import java.awt.Choice;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.*;
import java.net.URL;
import java.applet.Applet;
import java.io.File;
/**
 *
 * @author Shylock
 */
class Tool {
    
    public static void showMsg(String msg)
    {
        System.out.println(msg);
    }
}
    
class Audio extends Frame implements Runnable,ActionListener,ItemListener{
    Thread thread;
    Choice choice;
    URL url;
    AudioClip clip;
    
    Button buttonPlay;
    Button buttonLoop;
    Button buttonStop;
    
    String str;
    Audio(){
    thread = new Thread(this);
choice = new Choice();
    choice.add("1.mid");
    choice.add("1.mp3");
    
    choice.addItemListener(this);
    buttonPlay = new Button("Play");
    buttonLoop = new Button("Loop");
    buttonStop = new Button("Stop");
    
    buttonPlay.addActionListener(this);
    buttonLoop.addActionListener(this);
    buttonStop.addActionListener(this);
    
    setLayout(new FlowLayout());    add(choice);
    add(buttonPlay);
    add(buttonLoop);
    add(buttonStop);
    
    setSize(350,120);
    setVisible(true);
    addWindowListener(new WindowAdapter(){
                        @Override
                        public void windowClosing(WindowEvent e){
                        System.exit(0);
                        }
                       });
    validate();
    }    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource() == buttonPlay){
            clip.play();
        }
        else if(e.getSource() == buttonLoop){
            clip.loop();
        }
        else{
            clip.stop();
        }
    }    @Override
    public void itemStateChanged(ItemEvent e) {
        str = choice.getSelectedItem();
        if(!thread.isAlive()){
            thread = new Thread(this);
}
        try{
            thread.start();
        }catch(Exception exp){
            Tool.showMsg(exp.toString());
        }
    }    @Override
    public void run() {
        try{
            File file = new File(str);
            url = file.toURI().toURL();
Tool.showMsg(url.toString());
            clip = Applet.newAudioClip(url);
Tool.showMsg(clip.toString());
Tool.showMsg(Thread.currentThread().getName()+"....run....");
        }
        catch(Exception e){
            Tool.showMsg(e.toString());
        }
    }
    
}
public class AudioDemo {    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Audio audio  = new Audio();
//audio.thread.start();
    }
}