home *** CD-ROM | disk | FTP | other *** search
Java Source | 1995-05-19 | 3.2 KB | 133 lines |
- /*
- * @(#)AudioItem.java 1.26 95/03/22 James Gosling
- *
- * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
- *
- * Permission to use, copy, modify, and distribute this software
- * and its documentation for NON-COMMERCIAL purposes and without
- * fee is hereby granted provided that this copyright notice
- * appears in all copies. Please refer to the file "copyright.html"
- * for further important copyright and licensing information.
- *
- * SUN 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 A
- * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
- */
-
- import java.io.InputStream;
- import java.util.Hashtable;
- import java.util.Enumeration;
- import java.util.StringTokenizer;
-
- import awt.*;
- import browser.*;
- import browser.audio.*;
- import net.www.html.*;
-
- /**
- * A simple Item class to play an audio clip.
- * @author James Gosling
- */
-
- public
- class AudioItem extends Applet {
- /**
- * The sounds to be played.
- */
- private String sounds;
-
- /**
- * The index of the next sound in the sounds strings.
- */
- private int index;
-
- /**
- * The currently playing audio stream, or null
- * when no audio is playing.
- */
- private InputStream audio;
-
- /**
- * Play the next sound. The sound URLS are obtained
- * from the "snd" attribute. You can specify a list
- * of them by seperating the sounds by '|'s.<p>
- * Note that the URL is constructed relative to the
- * documentURL, that is because the url is obtained
- * from within the document
- */
- public void next() {
- try {
- stopPlaying(audio);
- audio = null;
-
- String url = sounds;
- if (sounds.indexOf('|') >= 0) {
- int start = index;
- if ((index = sounds.indexOf('|', index)) < 0) {
- url = sounds.substring(start);
- index = start;
- } else {
- url = sounds.substring(start, index++);
- }
- }
- if (url.length() > 0) {
- audio = getAudioStream(new URL(documentURL, url));
- startPlaying(audio);
- }
- } catch(Exception e) {
- }
- }
-
- /**
- * Initialize the applet. First resize it, then get the
- * "snd" attribute.
- */
- public void init() {
- resize(10, 12);
-
- sounds = getAttribute("snd");
- if (sounds == null) {
- sounds = "doc:/demo/audio/ding.au";
- }
- }
-
- /**
- * When the applet is started play the next sound.
- */
- public void start() {
- next();
- }
-
- /**
- * When the applet is stopped, stop playing the current sound.
- */
- public void stop() {
- if (audio != null) {
- stopPlaying(audio);
- audio = null;
- }
- }
-
- /**
- * When the user clicks in the applet, play the next sound.
- */
- public void mouseUp(int x, int y) {
- next();
- }
-
- /**
- * Paint an audio icon.
- */
- public void paint(Graphics g) {
- double f = ((double)(height - 1)) / ((width - 1) * 2);
- int offset = height / 2;
- for (int i = width - 1; i >= 0; i -= 3) {
- int h = (int)(i * f);
- g.drawLine(i, offset - h, i, offset + h);
- }
- }
- }
-