home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 1995 November
/
PCWK1195.iso
/
inne
/
win95
/
sieciowe
/
hotja32.lzh
/
hotjava
/
demo
/
classes
/
audioitem.java
< prev
next >
Wrap
Text File
|
1995-05-19
|
3KB
|
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);
}
}
}