package javacodebook.media.sound;

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

/**
 * Ein einfacher Frame, der die Abspielfunktionen des Java Media Frameworks
 * demonstriert.
 */
public class SoundPlayer extends JFrame {
    AudioClip clip = null;

    /**
     * Einen Frame mit einfacher Benutzerführung erstellen und anzeigen.
     */
    public SoundPlayer() {
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        getContentPane().setLayout(new BorderLayout());
        //Einen Button zum Öffnen von Dateien erstellen
        JPanel buttonPanel = new JPanel();
        getContentPane().add(buttonPanel, BorderLayout.NORTH);
        JButton openButton = new JButton("Datei öffnen");
        JButton stopButton = new JButton("Stop");
        buttonPanel.add(openButton);
        buttonPanel.add(stopButton);
        //Einen ActionLister auf den Button legen, der einen FileChooser öffnet
        openButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                JFileChooser chooser = new JFileChooser(new File("d:\\win2000\\media"));
                int status = chooser.showOpenDialog(SoundPlayer.this);
                if (status == JFileChooser.APPROVE_OPTION) {
                    //ausgewählte Datei ermitteln und abspielen
                    File file = chooser.getSelectedFile();
                    try {
                        //Einen Audio-Clip erzeugen
                        clip = Applet.newAudioClip(file.toURL());
                        //Audio-Clip abspielen
                        clip.play();
                    } catch(Exception e) {
                        e.printStackTrace(System.out);
                    }
                }
            }
        });
        stopButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                if(clip != null) {
                    clip.stop();
                }
            }
        });
    }

    public static void main(String[] args) {
        //Erzeuge einen neuen SoundPlayer und zeige ihn an
        SoundPlayer SoundPlayer = new SoundPlayer();
        SoundPlayer.setSize(320, 200);
        SoundPlayer.pack();
        SoundPlayer.show();
    }


}
