Whistle.java Source code

Java tutorial

Introduction

Here is the source code for Whistle.java

Source

/*
* Copyright (c) 1996, 1998 Bill Venners. All Rights Reserved.
*
* Source code file for the Whistle applet, part of the article
* "Impressions of SD '98" by Bill Venners, published 
* in JavaWorld March, 1998
*
* This source file may not be copied, modified, or redistributed
* EXCEPT as allowed by the following statements: You may freely use
* this file for your own work, including modifications and
* distribution in compiled (class files, native executable, etc.)
* form only. You may not copy and distribute this file. You may not
* remove this copyright notice. You may not distribute modified
* versions of this source file. You may not use this file in printed
* media without the express permission of Bill Venners.
*
* BILL VENNERS MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE
* SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING
* BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR PARTICULAR PURPOSE, OR NON-INFRINGEMENT.  BILL VENNERS
* SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY A LICENSEE AS A
* RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
* DERIVATIVES.
*/

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Label;
import java.applet.AudioClip;
import java.awt.Event;
import java.net.URL;
import java.net.URLConnection;
import java.net.MalformedURLException;

/**
* This applet is a simple button that plays an audio clip when
* pushed.
*
* @author  Bill Venners
*/
public class Whistle extends java.applet.Applet implements Runnable {

    URL theURL;
    private AudioClip yeehaa;
    private Thread runner;
    private boolean startClip = false;
    private boolean urlExceptionWasThrown = false;

    public void start() {
        if (runner == null) {
            runner = new Thread(this);
            runner.start();
        }
    }

    public void stop() {
        if (runner != null) {
            if (yeehaa != null) {
                yeehaa.stop();
            }
            runner.stop();
            runner = null;
        }
    }

    public void init() {
        super.init();

        String url = getParameter("clipURL");
        try {
            theURL = new URL(getDocumentBase(), url);
        } catch (MalformedURLException e) {
            urlExceptionWasThrown = true;
        }

        if (!urlExceptionWasThrown) {
            yeehaa = getAudioClip(theURL);
            setLayout(new BorderLayout());
            add("Center", new Button("Whistle"));
        } else {
            setLayout(new BorderLayout());
            add("Center", new Label("Sorry, No Audio"));
        }
    }

    public void run() {

        while (runner != null) {

            if (startClip && yeehaa != null) {
                startClip = false;
                yeehaa.play();
            }

            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
            }
        }
    }

    public boolean action(Event evt, Object arg) {
        if (evt.target instanceof Button) {
            String bname = (String) arg;
            if (bname.equals("Whistle")) {
                startClip = true;
            }
        }
        return true;
    }
}