diff --git a/java/cfg/jlgui.ini b/java/cfg/jlgui.ini
deleted file mode 100644
index a8081f1..0000000
--- a/java/cfg/jlgui.ini
+++ /dev/null
@@ -1,29 +0,0 @@
-allowed_extensions=m3u,pls,wsz,snd,aifc,aif,wav,au,mp1,mp2,mp3,ogg,spx,flac,ape,mac
-audio_device=
-equalizer_auto=false
-equalizer_enabled=false
-equalizer_on=false
-last_dir=C:\Users\Rik\Downloads\Skins\
-last_equalizer=50,50,92,100,10,40,0,100,50,50,50
-last_playlist=
-last_skin=C:\Users\Rik\Downloads\Skins\GSM_Winamp_FrostedFlames.wsz
-last_skin_dir=
-last_url=
-origine_x=636
-origine_y=282
-playlist_enabled=false
-playlist_impl=javazoom.jlgui.player.amp.playlist.BasePlaylist
-proxy_login=
-proxy_password=
-proxy_port=-1
-proxy_server=
-repeat_enabled=false
-screen_limit=false
-shuffle_enabled=false
-taginfo_ape_impl=javazoom.jlgui.player.amp.tag.APEInfo
-taginfo_flac_impl=javazoom.jlgui.player.amp.tag.FlacInfo
-taginfo_mpeg_impl=javazoom.jlgui.player.amp.tag.MpegInfo
-taginfo_oggvorbis_impl=javazoom.jlgui.player.amp.tag.OggVorbisInfo
-taginfo_policy=file
-visual_mode=
-volume_value=-1
diff --git a/java/cfg/log4j.properties b/java/cfg/log4j.properties
index 62c7729..0430f10 100644
--- a/java/cfg/log4j.properties
+++ b/java/cfg/log4j.properties
@@ -1,5 +1,4 @@
log4j.rootLogger=DEBUG, CA
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
-log4j.appender.CA.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
-log4j.logger.org.hibernate=TRACE
\ No newline at end of file
+log4j.appender.CA.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
\ No newline at end of file
diff --git a/java/src/javazoom/jlgui/basicplayer/BasicController.java b/java/src/javazoom/jlgui/basicplayer/BasicController.java
deleted file mode 100644
index c194ffc..0000000
--- a/java/src/javazoom/jlgui/basicplayer/BasicController.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * BasicController.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.basicplayer;
-
-import java.io.File;
-import java.io.InputStream;
-import java.net.URL;
-
-/**
- * This interface defines player controls available.
- */
-public interface BasicController
-{
- /**
- * Open inputstream to play.
- * @param in
- * @throws BasicPlayerException
- */
- public void open(InputStream in) throws BasicPlayerException;
-
- /**
- * Open file to play.
- * @param file
- * @throws BasicPlayerException
- */
- public void open(File file) throws BasicPlayerException;
-
- /**
- * Open URL to play.
- * @param url
- * @throws BasicPlayerException
- */
- public void open(URL url) throws BasicPlayerException;
-
- /**
- * Skip bytes.
- * @param bytes
- * @return bytes skipped according to audio frames constraint.
- * @throws BasicPlayerException
- */
- public long seek(long bytes) throws BasicPlayerException;
-
- /**
- * Start playback.
- * @throws BasicPlayerException
- */
- public void play() throws BasicPlayerException;
-
- /**
- * Stop playback.
- * @throws BasicPlayerException
- */
- public void stop() throws BasicPlayerException;
-
- /**
- * Pause playback.
- * @throws BasicPlayerException
- */
- public void pause() throws BasicPlayerException;
-
- /**
- * Resume playback.
- * @throws BasicPlayerException
- */
- public void resume() throws BasicPlayerException;
-
- /**
- * Sets Pan (Balance) value.
- * Linear scale : -1.0 <--> +1.0
- * @param pan value from -1.0 to +1.0
- * @throws BasicPlayerException
- */
- public void setPan(double pan) throws BasicPlayerException;
-
- /**
- * Sets Gain value.
- * Linear scale 0.0 <--> 1.0
- * @param gain value from 0.0 to 1.0
- * @throws BasicPlayerException
- */
- public void setGain(double gain) throws BasicPlayerException;
-}
diff --git a/java/src/javazoom/jlgui/basicplayer/BasicPlayer.java b/java/src/javazoom/jlgui/basicplayer/BasicPlayer.java
deleted file mode 100644
index e587bb7..0000000
--- a/java/src/javazoom/jlgui/basicplayer/BasicPlayer.java
+++ /dev/null
@@ -1,1038 +0,0 @@
-/*
- * BasicPlayer.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.basicplayer;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import javax.sound.sampled.AudioFileFormat;
-import javax.sound.sampled.AudioFormat;
-import javax.sound.sampled.AudioInputStream;
-import javax.sound.sampled.AudioSystem;
-import javax.sound.sampled.Control;
-import javax.sound.sampled.DataLine;
-import javax.sound.sampled.FloatControl;
-import javax.sound.sampled.Line;
-import javax.sound.sampled.LineUnavailableException;
-import javax.sound.sampled.Mixer;
-import javax.sound.sampled.SourceDataLine;
-import javax.sound.sampled.UnsupportedAudioFileException;
-import javazoom.spi.PropertiesContainer;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.tritonus.share.sampled.TAudioFormat;
-import org.tritonus.share.sampled.file.TAudioFileFormat;
-
-/**
- * BasicPlayer is a threaded simple player class based on JavaSound API.
- * It has been successfully tested under J2SE 1.3.x, 1.4.x and 1.5.x.
- */
-public class BasicPlayer implements BasicController, Runnable
-{
- public static int EXTERNAL_BUFFER_SIZE = 4000 * 4;
- public static int SKIP_INACCURACY_SIZE = 1200;
- protected Thread m_thread = null;
- protected Object m_dataSource;
- protected AudioInputStream m_encodedaudioInputStream;
- protected int encodedLength = -1;
- protected AudioInputStream m_audioInputStream;
- protected AudioFileFormat m_audioFileFormat;
- protected SourceDataLine m_line;
- protected FloatControl m_gainControl;
- protected FloatControl m_panControl;
- protected String m_mixerName = null;
- private int m_lineCurrentBufferSize = -1;
- private int lineBufferSize = -1;
- private long threadSleep = -1;
- private static Log log = LogFactory.getLog(BasicPlayer.class);
- /**
- * These variables are used to distinguish stopped, paused, playing states.
- * We need them to control Thread.
- */
- public static final int UNKNOWN = -1;
- public static final int PLAYING = 0;
- public static final int PAUSED = 1;
- public static final int STOPPED = 2;
- public static final int OPENED = 3;
- public static final int SEEKING = 4;
- private int m_status = UNKNOWN;
- // Listeners to be notified.
- private Collection m_listeners = null;
- private Map empty_map = new HashMap();
-
- /**
- * Constructs a Basic Player.
- */
- public BasicPlayer()
- {
- m_dataSource = null;
- m_listeners = new ArrayList();
- reset();
- }
-
- protected void reset()
- {
- m_status = UNKNOWN;
- if (m_audioInputStream != null)
- {
- synchronized (m_audioInputStream)
- {
- closeStream();
- }
- }
- m_audioInputStream = null;
- m_audioFileFormat = null;
- m_encodedaudioInputStream = null;
- encodedLength = -1;
- if (m_line != null)
- {
- m_line.stop();
- m_line.close();
- m_line = null;
- }
- m_gainControl = null;
- m_panControl = null;
- }
-
- /**
- * Add listener to be notified.
- * @param bpl
- */
- public void addBasicPlayerListener(BasicPlayerListener bpl)
- {
- m_listeners.add(bpl);
- }
-
- /**
- * Return registered listeners.
- * @return
- */
- public Collection getListeners()
- {
- return m_listeners;
- }
-
- /**
- * Remove registered listener.
- * @param bpl
- */
- public void removeBasicPlayerListener(BasicPlayerListener bpl)
- {
- if (m_listeners != null)
- {
- m_listeners.remove(bpl);
- }
- }
-
- /**
- * Set SourceDataLine buffer size. It affects audio latency.
- * (the delay between line.write(data) and real sound).
- * Minimum value should be over 10000 bytes.
- * @param size -1 means maximum buffer size available.
- */
- public void setLineBufferSize(int size)
- {
- lineBufferSize = size;
- }
-
- /**
- * Return SourceDataLine buffer size.
- * @return -1 maximum buffer size.
- */
- public int getLineBufferSize()
- {
- return lineBufferSize;
- }
-
- /**
- * Return SourceDataLine current buffer size.
- * @return
- */
- public int getLineCurrentBufferSize()
- {
- return m_lineCurrentBufferSize;
- }
-
- /**
- * Set thread sleep time.
- * Default is -1 (no sleep time).
- * @param time in milliseconds.
- */
- public void setSleepTime(long time)
- {
- threadSleep = time;
- }
-
- /**
- * Return thread sleep time in milliseconds.
- * @return -1 means no sleep time.
- */
- public long getSleepTime()
- {
- return threadSleep;
- }
-
- /**
- * Returns BasicPlayer status.
- * @return status
- */
- public int getStatus()
- {
- return m_status;
- }
-
- /**
- * Open file to play.
- */
- public void open(File file) throws BasicPlayerException
- {
- log.info("open(" + file + ")");
- if (file != null)
- {
- m_dataSource = file;
- initAudioInputStream();
- }
- }
-
- /**
- * Open URL to play.
- */
- public void open(URL url) throws BasicPlayerException
- {
- log.info("open(" + url + ")");
- if (url != null)
- {
- m_dataSource = url;
- initAudioInputStream();
- }
- }
-
- /**
- * Open inputstream to play.
- */
- public void open(InputStream inputStream) throws BasicPlayerException
- {
- log.info("open(" + inputStream + ")");
- if (inputStream != null)
- {
- m_dataSource = inputStream;
- initAudioInputStream();
- }
- }
-
- /**
- * Inits AudioInputStream and AudioFileFormat from the data source.
- * @throws BasicPlayerException
- */
- protected void initAudioInputStream() throws BasicPlayerException
- {
- try
- {
- reset();
- notifyEvent(BasicPlayerEvent.OPENING, getEncodedStreamPosition(), -1, m_dataSource);
- if (m_dataSource instanceof URL)
- {
- initAudioInputStream((URL) m_dataSource);
- }
- else if (m_dataSource instanceof File)
- {
- initAudioInputStream((File) m_dataSource);
- }
- else if (m_dataSource instanceof InputStream)
- {
- initAudioInputStream((InputStream) m_dataSource);
- }
- createLine();
- // Notify listeners with AudioFileFormat properties.
- Map properties = null;
- if (m_audioFileFormat instanceof TAudioFileFormat)
- {
- // Tritonus SPI compliant audio file format.
- properties = ((TAudioFileFormat) m_audioFileFormat).properties();
- // Clone the Map because it is not mutable.
- properties = deepCopy(properties);
- }
- else properties = new HashMap();
- // Add JavaSound properties.
- if (m_audioFileFormat.getByteLength() > 0) properties.put("audio.length.bytes", new Integer(m_audioFileFormat.getByteLength()));
- if (m_audioFileFormat.getFrameLength() > 0) properties.put("audio.length.frames", new Integer(m_audioFileFormat.getFrameLength()));
- if (m_audioFileFormat.getType() != null) properties.put("audio.type", (m_audioFileFormat.getType().toString()));
- // Audio format.
- AudioFormat audioFormat = m_audioFileFormat.getFormat();
- if (audioFormat.getFrameRate() > 0) properties.put("audio.framerate.fps", new Float(audioFormat.getFrameRate()));
- if (audioFormat.getFrameSize() > 0) properties.put("audio.framesize.bytes", new Integer(audioFormat.getFrameSize()));
- if (audioFormat.getSampleRate() > 0) properties.put("audio.samplerate.hz", new Float(audioFormat.getSampleRate()));
- if (audioFormat.getSampleSizeInBits() > 0) properties.put("audio.samplesize.bits", new Integer(audioFormat.getSampleSizeInBits()));
- if (audioFormat.getChannels() > 0) properties.put("audio.channels", new Integer(audioFormat.getChannels()));
- if (audioFormat instanceof TAudioFormat)
- {
- // Tritonus SPI compliant audio format.
- Map addproperties = ((TAudioFormat) audioFormat).properties();
- properties.putAll(addproperties);
- }
- // Add SourceDataLine
- properties.put("basicplayer.sourcedataline", m_line);
- Iterator it = m_listeners.iterator();
- while (it.hasNext())
- {
- BasicPlayerListener bpl = (BasicPlayerListener) it.next();
- bpl.opened(m_dataSource, properties);
- }
- m_status = OPENED;
- notifyEvent(BasicPlayerEvent.OPENED, getEncodedStreamPosition(), -1, null);
- }
- catch (LineUnavailableException e)
- {
- throw new BasicPlayerException(e);
- }
- catch (UnsupportedAudioFileException e)
- {
- throw new BasicPlayerException(e);
- }
- catch (IOException e)
- {
- throw new BasicPlayerException(e);
- }
- }
-
- /**
- * Inits Audio ressources from file.
- */
- protected void initAudioInputStream(File file) throws UnsupportedAudioFileException, IOException
- {
- m_audioInputStream = AudioSystem.getAudioInputStream(file);
- m_audioFileFormat = AudioSystem.getAudioFileFormat(file);
- }
-
- /**
- * Inits Audio ressources from URL.
- */
- protected void initAudioInputStream(URL url) throws UnsupportedAudioFileException, IOException
- {
- m_audioInputStream = AudioSystem.getAudioInputStream(url);
- m_audioFileFormat = AudioSystem.getAudioFileFormat(url);
- }
-
- /**
- * Inits Audio ressources from InputStream.
- */
- protected void initAudioInputStream(InputStream inputStream) throws UnsupportedAudioFileException, IOException
- {
- m_audioInputStream = AudioSystem.getAudioInputStream(inputStream);
- m_audioFileFormat = AudioSystem.getAudioFileFormat(inputStream);
- }
-
- /**
- * Inits Audio ressources from AudioSystem.
- */
- protected void initLine() throws LineUnavailableException
- {
- log.info("initLine()");
- if (m_line == null) createLine();
- if (!m_line.isOpen())
- {
- openLine();
- }
- else
- {
- AudioFormat lineAudioFormat = m_line.getFormat();
- AudioFormat audioInputStreamFormat = m_audioInputStream == null ? null : m_audioInputStream.getFormat();
- if (!lineAudioFormat.equals(audioInputStreamFormat))
- {
- m_line.close();
- openLine();
- }
- }
- }
-
- /**
- * Inits a DateLine.
- *
- * We check if the line supports Gain and Pan controls.
- *
- * From the AudioInputStream, i.e. from the sound file, we
- * fetch information about the format of the audio data. These
- * information include the sampling frequency, the number of
- * channels and the size of the samples. There information
- * are needed to ask JavaSound for a suitable output line
- * for this audio file.
- * Furthermore, we have to give JavaSound a hint about how
- * big the internal buffer for the line should be. Here,
- * we say AudioSystem.NOT_SPECIFIED, signaling that we don't
- * care about the exact size. JavaSound will use some default
- * value for the buffer size.
- */
- protected void createLine() throws LineUnavailableException
- {
- log.info("Create Line");
- if (m_line == null)
- {
- AudioFormat sourceFormat = m_audioInputStream.getFormat();
- log.info("Create Line : Source format : " + sourceFormat.toString());
- int nSampleSizeInBits = sourceFormat.getSampleSizeInBits();
- if (nSampleSizeInBits <= 0) nSampleSizeInBits = 16;
- if ((sourceFormat.getEncoding() == AudioFormat.Encoding.ULAW) || (sourceFormat.getEncoding() == AudioFormat.Encoding.ALAW)) nSampleSizeInBits = 16;
- if (nSampleSizeInBits != 8) nSampleSizeInBits = 16;
- AudioFormat targetFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, sourceFormat.getSampleRate(), nSampleSizeInBits, sourceFormat.getChannels(), sourceFormat.getChannels() * (nSampleSizeInBits / 8), sourceFormat.getSampleRate(), false);
- log.info("Create Line : Target format: " + targetFormat);
- // Keep a reference on encoded stream to progress notification.
- m_encodedaudioInputStream = m_audioInputStream;
- try
- {
- // Get total length in bytes of the encoded stream.
- encodedLength = m_encodedaudioInputStream.available();
- }
- catch (IOException e)
- {
- log.error("Cannot get m_encodedaudioInputStream.available()", e);
- }
- // Create decoded stream.
- m_audioInputStream = AudioSystem.getAudioInputStream(targetFormat, m_audioInputStream);
- AudioFormat audioFormat = m_audioInputStream.getFormat();
- DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat, AudioSystem.NOT_SPECIFIED);
- Mixer mixer = getMixer(m_mixerName);
- if (mixer != null)
- {
- log.info("Mixer : "+mixer.getMixerInfo().toString());
- m_line = (SourceDataLine) mixer.getLine(info);
- }
- else
- {
- m_line = (SourceDataLine) AudioSystem.getLine(info);
- m_mixerName = null;
- }
- log.info("Line : " + m_line.toString());
- log.debug("Line Info : " + m_line.getLineInfo().toString());
- log.debug("Line AudioFormat: " + m_line.getFormat().toString());
- }
- }
-
- /**
- * Opens the line.
- */
- protected void openLine() throws LineUnavailableException
- {
- if (m_line != null)
- {
- AudioFormat audioFormat = m_audioInputStream.getFormat();
- int buffersize = lineBufferSize;
- if (buffersize <= 0) buffersize = m_line.getBufferSize();
- m_lineCurrentBufferSize = buffersize;
- m_line.open(audioFormat, buffersize);
- log.info("Open Line : BufferSize=" + buffersize);
- /*-- Display supported controls --*/
- Control[] c = m_line.getControls();
- for (int p = 0; p < c.length; p++)
- {
- log.debug("Controls : " + c[p].toString());
- }
- /*-- Is Gain Control supported ? --*/
- if (m_line.isControlSupported(FloatControl.Type.MASTER_GAIN))
- {
- m_gainControl = (FloatControl) m_line.getControl(FloatControl.Type.MASTER_GAIN);
- log.info("Master Gain Control : [" + m_gainControl.getMinimum() + "," + m_gainControl.getMaximum() + "] " + m_gainControl.getPrecision());
- }
- /*-- Is Pan control supported ? --*/
- if (m_line.isControlSupported(FloatControl.Type.PAN))
- {
- m_panControl = (FloatControl) m_line.getControl(FloatControl.Type.PAN);
- log.info("Pan Control : [" + m_panControl.getMinimum() + "," + m_panControl.getMaximum() + "] " + m_panControl.getPrecision());
- }
- }
- }
-
- /**
- * Stops the playback.
- *
- * Player Status = STOPPED.
- * Thread should free Audio ressources.
- */
- protected void stopPlayback()
- {
- if ((m_status == PLAYING) || (m_status == PAUSED))
- {
- if (m_line != null)
- {
- m_line.flush();
- m_line.stop();
- }
- m_status = STOPPED;
- notifyEvent(BasicPlayerEvent.STOPPED, getEncodedStreamPosition(), -1, null);
- synchronized (m_audioInputStream)
- {
- closeStream();
- }
- log.info("stopPlayback() completed");
- }
- }
-
- /**
- * Pauses the playback.
- *
- * Player Status = PAUSED.
- */
- protected void pausePlayback()
- {
- if (m_line != null)
- {
- if (m_status == PLAYING)
- {
- m_line.flush();
- m_line.stop();
- m_status = PAUSED;
- log.info("pausePlayback() completed");
- notifyEvent(BasicPlayerEvent.PAUSED, getEncodedStreamPosition(), -1, null);
- }
- }
- }
-
- /**
- * Resumes the playback.
- *
- * Player Status = PLAYING.
- */
- protected void resumePlayback()
- {
- if (m_line != null)
- {
- if (m_status == PAUSED)
- {
- m_line.start();
- m_status = PLAYING;
- log.info("resumePlayback() completed");
- notifyEvent(BasicPlayerEvent.RESUMED, getEncodedStreamPosition(), -1, null);
- }
- }
- }
-
- /**
- * Starts playback.
- */
- protected void startPlayback() throws BasicPlayerException
- {
- if (m_status == STOPPED) initAudioInputStream();
- if (m_status == OPENED)
- {
- log.info("startPlayback called");
- if (!(m_thread == null || !m_thread.isAlive()))
- {
- log.info("WARNING: old thread still running!!");
- int cnt = 0;
- while (m_status != OPENED)
- {
- try
- {
- if (m_thread != null)
- {
- log.info("Waiting ... " + cnt);
- cnt++;
- Thread.sleep(1000);
- if (cnt > 2)
- {
- m_thread.interrupt();
- }
- }
- }
- catch (InterruptedException e)
- {
- throw new BasicPlayerException(BasicPlayerException.WAITERROR, e);
- }
- }
- }
- // Open SourceDataLine.
- try
- {
- initLine();
- }
- catch (LineUnavailableException e)
- {
- throw new BasicPlayerException(BasicPlayerException.CANNOTINITLINE, e);
- }
- log.info("Creating new thread");
- m_thread = new Thread(this, "BasicPlayer");
- m_thread.start();
- if (m_line != null)
- {
- m_line.start();
- m_status = PLAYING;
- notifyEvent(BasicPlayerEvent.PLAYING, getEncodedStreamPosition(), -1, null);
- }
- }
- }
-
- /**
- * NetworkClient loop.
- *
- * Player Status == STOPPED || SEEKING => End of Thread + Freeing Audio Ressources.
- * Player Status == PLAYING => Audio stream data sent to Audio line.
- * Player Status == PAUSED => Waiting for another status.
- */
- public void run()
- {
- log.info("Thread Running");
- int nBytesRead = 1;
- byte[] abData = new byte[EXTERNAL_BUFFER_SIZE];
- // Lock stream while playing.
- synchronized (m_audioInputStream)
- {
- // NetworkClient play/pause loop.
- while ((nBytesRead != -1) && (m_status != STOPPED) && (m_status != SEEKING) && (m_status != UNKNOWN))
- {
- if (m_status == PLAYING)
- {
- // Play.
- try
- {
- nBytesRead = m_audioInputStream.read(abData, 0, abData.length);
- if (nBytesRead >= 0)
- {
- byte[] pcm = new byte[nBytesRead];
- System.arraycopy(abData, 0, pcm, 0, nBytesRead);
- if (m_line.available() >= m_line.getBufferSize()) log.debug("Underrun : "+m_line.available()+"/"+m_line.getBufferSize());
- int nBytesWritten = m_line.write(abData, 0, nBytesRead);
- // Compute position in bytes in encoded stream.
- int nEncodedBytes = getEncodedStreamPosition();
- // Notify listeners
- Iterator it = m_listeners.iterator();
- while (it.hasNext())
- {
- BasicPlayerListener bpl = (BasicPlayerListener) it.next();
- if (m_audioInputStream instanceof PropertiesContainer)
- {
- // Pass audio parameters such as instant bitrate, ...
- Map properties = ((PropertiesContainer) m_audioInputStream).properties();
- bpl.progress(nEncodedBytes, m_line.getMicrosecondPosition(), pcm, properties);
- }
- else bpl.progress(nEncodedBytes, m_line.getMicrosecondPosition(), pcm, empty_map);
- }
- }
- }
- catch (IOException e)
- {
- log.error("Thread cannot running()", e);
- m_status = STOPPED;
- notifyEvent(BasicPlayerEvent.STOPPED, getEncodedStreamPosition(), -1, null);
- }
- // Nice CPU usage.
- if (threadSleep > 0)
- {
- try
- {
- Thread.sleep(threadSleep);
- }
- catch (InterruptedException e)
- {
- log.error("Thread cannot sleep(" + threadSleep + ")", e);
- }
- }
- }
- else
- {
- // Pause
- try
- {
- Thread.sleep(1000);
- }
- catch (InterruptedException e)
- {
- log.error("Thread cannot sleep(1000)", e);
- }
- }
- }
- // Free audio resources.
- if (m_line != null)
- {
- m_line.drain();
- m_line.stop();
- m_line.close();
- m_line = null;
- }
- // Notification of "End Of Media"
- if (nBytesRead == -1)
- {
- notifyEvent(BasicPlayerEvent.EOM, getEncodedStreamPosition(), -1, null);
- }
- // Close stream.
- closeStream();
- }
- m_status = STOPPED;
- notifyEvent(BasicPlayerEvent.STOPPED, getEncodedStreamPosition(), -1, null);
- log.info("Thread completed");
- }
-
- /**
- * Skip bytes in the File inputstream.
- * It will skip N frames matching to bytes, so it will never skip given bytes length exactly.
- * @param bytes
- * @return value>0 for File and value=0 for URL and InputStream
- * @throws BasicPlayerException
- */
- protected long skipBytes(long bytes) throws BasicPlayerException
- {
- long totalSkipped = 0;
- if (m_dataSource instanceof File)
- {
- log.info("Bytes to skip : " + bytes);
- int previousStatus = m_status;
- m_status = SEEKING;
- long skipped = 0;
- try
- {
- synchronized (m_audioInputStream)
- {
- notifyEvent(BasicPlayerEvent.SEEKING, getEncodedStreamPosition(), -1, null);
- initAudioInputStream();
- if (m_audioInputStream != null)
- {
- // Loop until bytes are really skipped.
- while (totalSkipped < (bytes - SKIP_INACCURACY_SIZE))
- {
- skipped = m_audioInputStream.skip(bytes - totalSkipped);
- if (skipped == 0) break;
- totalSkipped = totalSkipped + skipped;
- log.info("Skipped : " + totalSkipped + "/" + bytes);
- if (totalSkipped == -1) throw new BasicPlayerException(BasicPlayerException.SKIPNOTSUPPORTED);
- }
- }
- }
- notifyEvent(BasicPlayerEvent.SEEKED, getEncodedStreamPosition(), -1, null);
- m_status = OPENED;
- if (previousStatus == PLAYING) startPlayback();
- else if (previousStatus == PAUSED)
- {
- startPlayback();
- pausePlayback();
- }
- }
- catch (IOException e)
- {
- throw new BasicPlayerException(e);
- }
- }
- return totalSkipped;
- }
-
- /**
- * Notify listeners about a BasicPlayerEvent.
- * @param code event code.
- * @param position in the stream when the event occurs.
- */
- protected void notifyEvent(int code, int position, double value, Object description)
- {
- BasicPlayerEventLauncher trigger = new BasicPlayerEventLauncher(code, position, value, description, new ArrayList(m_listeners), this);
- trigger.start();
- }
-
- protected int getEncodedStreamPosition()
- {
- int nEncodedBytes = -1;
- if (m_dataSource instanceof File)
- {
- try
- {
- if (m_encodedaudioInputStream != null)
- {
- nEncodedBytes = encodedLength - m_encodedaudioInputStream.available();
- }
- }
- catch (IOException e)
- {
- //log.debug("Cannot get m_encodedaudioInputStream.available()",e);
- }
- }
- return nEncodedBytes;
- }
-
- protected void closeStream()
- {
- // Close stream.
- try
- {
- if (m_audioInputStream != null)
- {
- m_audioInputStream.close();
- log.info("Stream closed");
- }
- }
- catch (IOException e)
- {
- log.info("Cannot close stream", e);
- }
- }
-
- /**
- * Returns true if Gain control is supported.
- */
- public boolean hasGainControl()
- {
- if (m_gainControl == null)
- {
- // Try to get Gain control again (to support J2SE 1.5)
- if ( (m_line != null) && (m_line.isControlSupported(FloatControl.Type.MASTER_GAIN))) m_gainControl = (FloatControl) m_line.getControl(FloatControl.Type.MASTER_GAIN);
- }
- return m_gainControl != null;
- }
-
- /**
- * Returns Gain value.
- */
- public float getGainValue()
- {
- if (hasGainControl())
- {
- return m_gainControl.getValue();
- }
- else
- {
- return 0.0F;
- }
- }
-
- /**
- * Gets max Gain value.
- */
- public float getMaximumGain()
- {
- if (hasGainControl())
- {
- return m_gainControl.getMaximum();
- }
- else
- {
- return 0.0F;
- }
- }
-
- /**
- * Gets min Gain value.
- */
- public float getMinimumGain()
- {
- if (hasGainControl())
- {
- return m_gainControl.getMinimum();
- }
- else
- {
- return 0.0F;
- }
- }
-
- /**
- * Returns true if Pan control is supported.
- */
- public boolean hasPanControl()
- {
- if (m_panControl == null)
- {
- // Try to get Pan control again (to support J2SE 1.5)
- if ((m_line != null)&& (m_line.isControlSupported(FloatControl.Type.PAN))) m_panControl = (FloatControl) m_line.getControl(FloatControl.Type.PAN);
- }
- return m_panControl != null;
- }
-
- /**
- * Returns Pan precision.
- */
- public float getPrecision()
- {
- if (hasPanControl())
- {
- return m_panControl.getPrecision();
- }
- else
- {
- return 0.0F;
- }
- }
-
- /**
- * Returns Pan value.
- */
- public float getPan()
- {
- if (hasPanControl())
- {
- return m_panControl.getValue();
- }
- else
- {
- return 0.0F;
- }
- }
-
- /**
- * Deep copy of a Map.
- * @param src
- * @return
- */
- protected Map deepCopy(Map src)
- {
- HashMap map = new HashMap();
- if (src != null)
- {
- Iterator it = src.keySet().iterator();
- while (it.hasNext())
- {
- Object key = it.next();
- Object value = src.get(key);
- map.put(key, value);
- }
- }
- return map;
- }
-
- /**
- * @see javazoom.jlgui.basicplayer.BasicController#seek(long)
- */
- public long seek(long bytes) throws BasicPlayerException
- {
- return skipBytes(bytes);
- }
-
- /**
- * @see javazoom.jlgui.basicplayer.BasicController#play()
- */
- public void play() throws BasicPlayerException
- {
- startPlayback();
- }
-
- /**
- * @see javazoom.jlgui.basicplayer.BasicController#stop()
- */
- public void stop() throws BasicPlayerException
- {
- stopPlayback();
- }
-
- /**
- * @see javazoom.jlgui.basicplayer.BasicController#pause()
- */
- public void pause() throws BasicPlayerException
- {
- pausePlayback();
- }
-
- /**
- * @see javazoom.jlgui.basicplayer.BasicController#resume()
- */
- public void resume() throws BasicPlayerException
- {
- resumePlayback();
- }
-
- /**
- * Sets Pan value.
- * Line should be opened before calling this method.
- * Linear scale : -1.0 <--> +1.0
- */
- public void setPan(double fPan) throws BasicPlayerException
- {
- if (hasPanControl())
- {
- log.debug("Pan : " + fPan);
- m_panControl.setValue((float) fPan);
- notifyEvent(BasicPlayerEvent.PAN, getEncodedStreamPosition(), fPan, null);
- }
- else throw new BasicPlayerException(BasicPlayerException.PANCONTROLNOTSUPPORTED);
- }
-
- /**
- * Sets Gain value.
- * Line should be opened before calling this method.
- * Linear scale 0.0 <--> 1.0
- * Threshold Coef. : 1/2 to avoid saturation.
- */
- public void setGain(double fGain) throws BasicPlayerException
- {
- if (hasGainControl())
- {
- double minGainDB = getMinimumGain();
- double ampGainDB = ((10.0f / 20.0f) * getMaximumGain()) - getMinimumGain();
- double cste = Math.log(10.0) / 20;
- double valueDB = minGainDB + (1 / cste) * Math.log(1 + (Math.exp(cste * ampGainDB) - 1) * fGain);
- log.debug("Gain : " + valueDB);
- m_gainControl.setValue((float) valueDB);
- notifyEvent(BasicPlayerEvent.GAIN, getEncodedStreamPosition(), fGain, null);
- }
- else throw new BasicPlayerException(BasicPlayerException.GAINCONTROLNOTSUPPORTED);
- }
-
- public List getMixers()
- {
- ArrayList mixers = new ArrayList();
- Mixer.Info[] mInfos = AudioSystem.getMixerInfo();
- if (mInfos != null)
- {
- for (int i = 0; i < mInfos.length; i++)
- {
- Line.Info lineInfo = new Line.Info(SourceDataLine.class);
- Mixer mixer = AudioSystem.getMixer(mInfos[i]);
- if (mixer.isLineSupported(lineInfo))
- {
- mixers.add(mInfos[i].getName());
- }
- }
- }
- return mixers;
- }
-
- public Mixer getMixer(String name)
- {
- Mixer mixer = null;
- if (name != null)
- {
- Mixer.Info[] mInfos = AudioSystem.getMixerInfo();
- if (mInfos != null)
- {
- for (int i = 0; i < mInfos.length; i++)
- {
- if (mInfos[i].getName().equals(name))
- {
- mixer = AudioSystem.getMixer(mInfos[i]);
- break;
- }
- }
- }
- }
- return mixer;
- }
-
- public String getMixerName()
- {
- return m_mixerName;
- }
-
- public void setMixerName(String name)
- {
- m_mixerName = name;
- }
-}
diff --git a/java/src/javazoom/jlgui/basicplayer/BasicPlayerEvent.java b/java/src/javazoom/jlgui/basicplayer/BasicPlayerEvent.java
deleted file mode 100644
index 9726c3b..0000000
--- a/java/src/javazoom/jlgui/basicplayer/BasicPlayerEvent.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * BasicPlayerEvent.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.basicplayer;
-
-/**
- * This class implements player events.
- */
-public class BasicPlayerEvent
-{
- public static final int UNKNOWN = -1;
- public static final int OPENING = 0;
- public static final int OPENED = 1;
- public static final int PLAYING = 2;
- public static final int STOPPED = 3;
- public static final int PAUSED = 4;
- public static final int RESUMED = 5;
- public static final int SEEKING = 6;
- public static final int SEEKED = 7;
- public static final int EOM = 8;
- public static final int PAN = 9;
- public static final int GAIN = 10;
- private int code = UNKNOWN;
- private int position = -1;
- private double value = -1.0;
- private Object source = null;
- private Object description = null;
-
- /**
- * Constructor
- * @param source of the event
- * @param code of the envent
- * @param position optional stream position
- * @param value opitional control value
- * @param desc optional description
- */
- public BasicPlayerEvent(Object source, int code, int position, double value, Object desc)
- {
- this.value = value;
- this.position = position;
- this.source = source;
- this.code = code;
- this.description = desc;
- }
-
- /**
- * Return code of the event triggered.
- * @return
- */
- public int getCode()
- {
- return code;
- }
-
- /**
- * Return position in the stream when event occured.
- * @return
- */
- public int getPosition()
- {
- return position;
- }
-
- /**
- * Return value related to event triggered.
- * @return
- */
- public double getValue()
- {
- return value;
- }
-
- /**
- * Return description.
- * @return
- */
- public Object getDescription()
- {
- return description;
- }
-
- public Object getSource()
- {
- return source;
- }
-
- public String toString()
- {
- if (code == OPENED) return "OPENED:" + position;
- else if (code == OPENING) return "OPENING:" + position + ":" + description;
- else if (code == PLAYING) return "PLAYING:" + position;
- else if (code == STOPPED) return "STOPPED:" + position;
- else if (code == PAUSED) return "PAUSED:" + position;
- else if (code == RESUMED) return "RESUMED:" + position;
- else if (code == SEEKING) return "SEEKING:" + position;
- else if (code == SEEKED) return "SEEKED:" + position;
- else if (code == EOM) return "EOM:" + position;
- else if (code == PAN) return "PAN:" + value;
- else if (code == GAIN) return "GAIN:" + value;
- else return "UNKNOWN:" + position;
- }
-}
diff --git a/java/src/javazoom/jlgui/basicplayer/BasicPlayerEventLauncher.java b/java/src/javazoom/jlgui/basicplayer/BasicPlayerEventLauncher.java
deleted file mode 100644
index d3ef1ef..0000000
--- a/java/src/javazoom/jlgui/basicplayer/BasicPlayerEventLauncher.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * BasicPlayerEventLauncher.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.basicplayer;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-/**
- * This class implements a threaded events launcher.
- */
-public class BasicPlayerEventLauncher extends Thread
-{
- private int code = -1;
- private int position = -1;
- private double value = 0.0;
- private Object description = null;
- private Collection listeners = null;
- private Object source = null;
-
- /**
- * Contructor.
- * @param code
- * @param position
- * @param value
- * @param description
- * @param listeners
- * @param source
- */
- public BasicPlayerEventLauncher(int code, int position, double value, Object description, Collection listeners, Object source)
- {
- super();
- this.code = code;
- this.position = position;
- this.value = value;
- this.description = description;
- this.listeners = listeners;
- this.source = source;
- }
-
- public void run()
- {
- if (listeners != null)
- {
- Iterator it = listeners.iterator();
- while (it.hasNext())
- {
- BasicPlayerListener bpl = (BasicPlayerListener) it.next();
- BasicPlayerEvent event = new BasicPlayerEvent(source, code, position, value, description);
- bpl.stateUpdated(event);
- }
- }
- }
-}
diff --git a/java/src/javazoom/jlgui/basicplayer/BasicPlayerException.java b/java/src/javazoom/jlgui/basicplayer/BasicPlayerException.java
deleted file mode 100644
index e2f2893..0000000
--- a/java/src/javazoom/jlgui/basicplayer/BasicPlayerException.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * BasicPlayerException.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.basicplayer;
-
-import java.io.PrintStream;
-import java.io.PrintWriter;
-
-/**
- * This class implements custom exception for basicplayer.
- */
-public class BasicPlayerException extends Exception
-{
- public static final String GAINCONTROLNOTSUPPORTED = "Gain control not supported";
- public static final String PANCONTROLNOTSUPPORTED = "Pan control not supported";
- public static final String WAITERROR = "Wait error";
- public static final String CANNOTINITLINE = "Cannot init line";
- public static final String SKIPNOTSUPPORTED = "Skip not supported";
- private Throwable cause = null;
-
- public BasicPlayerException()
- {
- super();
- }
-
- public BasicPlayerException(String msg)
- {
- super(msg);
- }
-
- public BasicPlayerException(Throwable cause)
- {
- super();
- this.cause = cause;
- }
-
- public BasicPlayerException(String msg, Throwable cause)
- {
- super(msg);
- this.cause = cause;
- }
-
- public Throwable getCause()
- {
- return cause;
- }
-
- /**
- * Returns the detail message string of this throwable. If it was
- * created with a null message, returns the following:
- * (cause==null ? null : cause.toString()).
- */
- public String getMessage()
- {
- if (super.getMessage() != null)
- {
- return super.getMessage();
- }
- else if (cause != null)
- {
- return cause.toString();
- }
- else
- {
- return null;
- }
- }
-
- public void printStackTrace()
- {
- printStackTrace(System.err);
- }
-
- public void printStackTrace(PrintStream out)
- {
- synchronized (out)
- {
- PrintWriter pw = new PrintWriter(out, false);
- printStackTrace(pw);
- pw.flush();
- }
- }
-
- public void printStackTrace(PrintWriter out)
- {
- if (cause != null) cause.printStackTrace(out);
- }
-}
diff --git a/java/src/javazoom/jlgui/basicplayer/BasicPlayerListener.java b/java/src/javazoom/jlgui/basicplayer/BasicPlayerListener.java
deleted file mode 100644
index 9e05d2e..0000000
--- a/java/src/javazoom/jlgui/basicplayer/BasicPlayerListener.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * BasicPlayerListener.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.basicplayer;
-
-import java.util.Map;
-
-/**
- * This interface defines callbacks methods that will be notified
- * for all registered BasicPlayerListener of BasicPlayer.
- */
-public interface BasicPlayerListener
-{
- /**
- * Open callback, stream is ready to play.
- *
- * properties map includes audio format dependant features such as
- * bitrate, duration, frequency, channels, number of frames, vbr flag,
- * id3v2/id3v1 (for MP3 only), comments (for Ogg Vorbis), ...
- *
- * @param stream could be File, URL or InputStream
- * @param properties audio stream properties.
- */
- public void opened(Object stream, Map properties);
-
- /**
- * Progress callback while playing.
- *
- * This method is called severals time per seconds while playing.
- * properties map includes audio format features such as
- * instant bitrate, microseconds position, current frame number, ...
- *
- * @param bytesread from encoded stream.
- * @param microseconds elapsed (reseted after a seek !).
- * @param pcmdata PCM samples.
- * @param properties audio stream parameters.
- */
- public void progress(int bytesread, long microseconds, byte[] pcmdata, Map properties);
-
- /**
- * Notification callback for basicplayer events such as opened, eom ...
- *
- * @param event
- */
- public void stateUpdated(BasicPlayerEvent event);
-
- /**
- * A handle to the BasicPlayer, plugins may control the player through
- * the controller (play, stop, ...)
- * @param controller : a handle to the player
- */
- public void setController(BasicController controller);
-}
diff --git a/java/src/javazoom/jlgui/player/amp/Loader.java b/java/src/javazoom/jlgui/player/amp/Loader.java
deleted file mode 100644
index dd70ea9..0000000
--- a/java/src/javazoom/jlgui/player/amp/Loader.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Loader.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp;
-
-import java.awt.Point;
-
-public interface Loader
-{
- public void loaded();
-
- public void close();
-
- public void minimize();
-
- public Point getLocation();
-
- public void togglePlaylist(boolean enabled);
-
- public void toggleEqualizer(boolean enabled);
-}
diff --git a/java/src/javazoom/jlgui/player/amp/PlayerActionEvent.java b/java/src/javazoom/jlgui/player/amp/PlayerActionEvent.java
deleted file mode 100644
index 0c1b98c..0000000
--- a/java/src/javazoom/jlgui/player/amp/PlayerActionEvent.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * PlayerActionEvent.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp;
-
-import java.awt.event.ActionEvent;
-
-public class PlayerActionEvent extends ActionEvent
-{
- public static final String ACPREVIOUS = "Previous";
- public static final String ACPLAY = "Play";
- public static final String ACPAUSE = "Pause";
- public static final String ACSTOP = "Stop";
- public static final String ACNEXT = "Next";
- public static final String ACEJECT = "Eject";
- public static final String ACEQUALIZER = "EqualizerUI";
- public static final String ACPLAYLIST = "Playlist";
- public static final String ACSHUFFLE = "Shuffle";
- public static final String ACREPEAT = "Repeat";
- public static final String ACVOLUME = "Volume";
- public static final String ACBALANCE = "Balance";
- public static final String ACTITLEBAR = "TitleBar";
- public static final String ACEXIT = "Exit";
- public static final String ACMINIMIZE = "Minimize";
- public static final String ACPOSBAR = "Seek";
- public static final String MIPLAYFILE = "PlayFileMI";
- public static final String MIPLAYLOCATION = "PlayLocationMI";
- public static final String MIPLAYLIST = "PlaylistMI";
- public static final String MIEQUALIZER = "EqualizerMI";
- public static final String MIPREFERENCES = "PreferencesMI";
- public static final String MISKINBROWSER = "SkinBrowserMI";
- public static final String MILOADSKIN = "LoadSkinMI";
- public static final String MIJUMPFILE = "JumpFileMI";
- public static final String MISTOP = "StopMI";
- public static final String EQSLIDER = "SliderEQ";
- public static final String ACEQPRESETS = "PresetsEQ";
- public static final String ACEQONOFF = "OnOffEQ";
- public static final String ACEQAUTO = "AutoEQ";
- public static final String ACPLUP = "ScrollUpPL";
- public static final String ACPLDOWN = "ScrollDownPL";
- public static final String ACPLINFO = "InfoPL";
- public static final String ACPLPLAY = "PlayPL";
- public static final String ACPLREMOVE = "RemovePL";
- public static final String ACPLADDPOPUP = "AddPopupPL";
- public static final String ACPLADDFILE = "AddFilePL";
- public static final String ACPLADDDIR = "AddDirPL";
- public static final String ACPLADDURL = "AddURLPL";
- public static final String ACPLREMOVEPOPUP = "RemovePopupPL";
- public static final String ACPLREMOVEMISC = "RemoveMiscPL";
- public static final String ACPLREMOVESEL = "RemoveSelPL";
- public static final String ACPLREMOVEALL = "RemoveAllPL";
- public static final String ACPLREMOVECROP = "RemoveCropPL";
- public static final String ACPLSELPOPUP = "SelectPopupPL";
- public static final String ACPLSELALL = "SelectAllPL";
- public static final String ACPLSELZERO = "SelectZeroPL";
- public static final String ACPLSELINV = "SelectInvPL";
- public static final String ACPLMISCPOPUP = "MiscPopupPL";
- public static final String ACPLMISCOPTS = "MiscOptsPL";
- public static final String ACPLMISCFILE = "MiscFilePL";
- public static final String ACPLMISCSORT = "MiscSortPL";
- public static final String ACPLLISTPOPUP = "ListPopupPL";
- public static final String ACPLLISTLOAD = "ListLoadPL";
- public static final String ACPLLISTSAVE = "ListSavePL";
- public static final String ACPLLISTNEW = "ListNewPL";
-
- public PlayerActionEvent(Object source, int id, String command)
- {
- super(source, id, command);
- }
-
- public PlayerActionEvent(Object source, int id, String command, int modifiers)
- {
- super(source, id, command, modifiers);
- }
-
- public PlayerActionEvent(Object source, int id, String command, long when, int modifiers)
- {
- super(source, id, command, when, modifiers);
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/PlayerUI.java b/java/src/javazoom/jlgui/player/amp/PlayerUI.java
deleted file mode 100644
index dba11e0..0000000
--- a/java/src/javazoom/jlgui/player/amp/PlayerUI.java
+++ /dev/null
@@ -1,1827 +0,0 @@
-/*
- * PlayerUI.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp;
-
-import java.awt.dnd.DnDConstants;
-import java.awt.dnd.DropTarget;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.KeyEvent;
-import java.awt.event.MouseEvent;
-import java.io.File;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.text.MessageFormat;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-import java.util.StringTokenizer;
-import javax.sound.sampled.SourceDataLine;
-import javax.swing.JCheckBoxMenuItem;
-import javax.swing.JMenu;
-import javax.swing.JMenuItem;
-import javax.swing.JPanel;
-import javax.swing.JPopupMenu;
-import javax.swing.KeyStroke;
-import javax.swing.SwingUtilities;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import javazoom.jlgui.basicplayer.BasicController;
-import javazoom.jlgui.basicplayer.BasicPlayer;
-import javazoom.jlgui.basicplayer.BasicPlayerEvent;
-import javazoom.jlgui.basicplayer.BasicPlayerException;
-import javazoom.jlgui.basicplayer.BasicPlayerListener;
-import javazoom.jlgui.player.amp.equalizer.ui.EqualizerUI;
-import javazoom.jlgui.player.amp.playlist.Playlist;
-import javazoom.jlgui.player.amp.playlist.PlaylistFactory;
-import javazoom.jlgui.player.amp.playlist.PlaylistItem;
-import javazoom.jlgui.player.amp.playlist.ui.PlaylistUI;
-import javazoom.jlgui.player.amp.skin.AbsoluteLayout;
-import javazoom.jlgui.player.amp.skin.DropTargetAdapter;
-import javazoom.jlgui.player.amp.skin.ImageBorder;
-import javazoom.jlgui.player.amp.skin.PopupAdapter;
-import javazoom.jlgui.player.amp.skin.Skin;
-import javazoom.jlgui.player.amp.skin.UrlDialog;
-import javazoom.jlgui.player.amp.tag.ui.TagSearch;
-import javazoom.jlgui.player.amp.util.Config;
-import javazoom.jlgui.player.amp.util.FileSelector;
-import javazoom.jlgui.player.amp.util.ui.Preferences;
-import javazoom.jlgui.player.amp.visual.ui.SpectrumTimeAnalyzer;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public class PlayerUI extends JPanel implements ActionListener, ChangeListener, BasicPlayerListener
-{
- private static Log log = LogFactory.getLog(PlayerUI.class);
- public static final int INIT = 0;
- public static final int OPEN = 1;
- public static final int PLAY = 2;
- public static final int PAUSE = 3;
- public static final int STOP = 4;
- public static final int TEXT_LENGTH_MAX = 30;
- public static final long SCROLL_PERIOD = 250;
- private Skin ui = null;
- private Loader loader = null;
- private Config config = null;
- /*-- Pop up menus --*/
- private JPopupMenu mainpopup = null;
- private JPopupMenu ejectpopup = null;
- private JCheckBoxMenuItem miPlaylist = null;
- private JCheckBoxMenuItem miEqualizer = null;
- private JMenuItem miPlayFile = null;
- private JMenuItem miPlayLocation = null;
- private PopupAdapter popupAdapter = null;
- private PopupAdapter ejectpopupAdapter = null;
- /*-- Sound player --*/
- private BasicController theSoundPlayer = null;
- private Map audioInfo = null;
- private int playerState = INIT;
- /*-- Title text --*/
- private String titleText = Skin.TITLETEXT.toUpperCase();
- private String currentTitle = Skin.TITLETEXT.toUpperCase();
- private String[] titleScrollLabel = null;
- private int scrollIndex = 0;
- private long lastScrollTime = 0L;
- private boolean scrollRight = true;
- private long secondsAmount = 0;
- /*-- Playlist --*/
- private Playlist playlist = null;
- private PlaylistUI playlistUI = null;
- private String currentFileOrURL = null;
- private String currentSongName = null;
- private PlaylistItem currentPlaylistItem = null;
- private boolean currentIsFile;
- /*-- PosBar members --*/
- private boolean posValueJump = false;
- private boolean posDragging = false;
- private double posValue = 0.0;
- /*-- EqualizerUI --*/
- private EqualizerUI equalizerUI = null;
-
- public PlayerUI()
- {
- super();
- setDoubleBuffered(true);
- ui = new Skin();
- }
-
- public void setEqualizerUI(EqualizerUI eq)
- {
- equalizerUI = eq;
- }
-
- public EqualizerUI getEqualizerUI()
- {
- return equalizerUI;
- }
-
- public PlaylistUI getPlaylistUI()
- {
- return playlistUI;
- }
-
- public void setPlaylistUI(PlaylistUI playlistUI)
- {
- this.playlistUI = playlistUI;
- }
-
- public Playlist getPlaylist()
- {
- return playlist;
- }
-
- /**
- * Return config.
- * @return
- */
- public Config getConfig()
- {
- return config;
- }
-
- /**
- * Return skin.
- * @return
- */
- public Skin getSkin()
- {
- return ui;
- }
-
- /**
- * Return parent loader.
- * @return
- */
- public Loader getLoader()
- {
- return loader;
- }
-
- /**
- * A handle to the BasicPlayer, plugins may control the player through
- * the controller (play, stop, ...)
- * @param controller
- */
- public void setController(BasicController controller)
- {
- theSoundPlayer = controller;
- }
-
- /**
- * Return player controller.
- * @return
- */
- public BasicController getController()
- {
- return theSoundPlayer;
- }
-
- /**
- * Load main player.
- * @param loader
- */
- public void loadUI(Loader loader)
- {
- this.loader = loader;
- setLayout(new AbsoluteLayout());
- config = Config.getInstance();
- ui.setConfig(config);
- /*playlistUI = new PlaylistUI();
- playlistUI.setSkin(ui);
- playlistUI.setPlayer(this);
- equalizerUI = new EqualizerUI();
- equalizerUI.setSkin(ui);*/
- loadSkin();
- // DnD support.
- /*DropTargetAdapter dnd = new DropTargetAdapter()
- {
- public void processDrop(Object data)
- {
- processDnD(data);
- }
- };
- DropTarget dt = new DropTarget(this, DnDConstants.ACTION_COPY, dnd, true);*/
- }
-
- public void loadSkin()
- {
- log.info("Load PlayerUI (EDT=" + SwingUtilities.isEventDispatchThread() + ")");
- removeAll();
- // Load skin specified in args
- if (ui.getPath() != null)
- {
- log.info("Load default skin from " + ui.getPath());
- ui.loadSkin(ui.getPath());
- config.setDefaultSkin(ui.getPath());
- }
- // Load skin specified in jlgui.ini
- else if ((config.getDefaultSkin() != null) && (!config.getDefaultSkin().trim().equals("")))
- {
- log.info("Load default skin from " + config.getDefaultSkin());
- ui.loadSkin(config.getDefaultSkin());
- }
- // Default included skin
- else
- {
- ClassLoader cl = getClass().getClassLoader();
- InputStream sis = cl.getResourceAsStream("javazoom/jlgui/player/amp/metrix.wsz");
- log.info("Load default skin for JAR");
- ui.loadSkin(sis);
- }
- // Background
- ImageBorder border = new ImageBorder();
- border.setImage(ui.getMainImage());
- setBorder(border);
- // Buttons
- add(ui.getAcPrevious(), ui.getAcPrevious().getConstraints());
- ui.getAcPrevious().removeActionListener(this);
- ui.getAcPrevious().addActionListener(this);
- add(ui.getAcPlay(), ui.getAcPlay().getConstraints());
- ui.getAcPlay().removeActionListener(this);
- ui.getAcPlay().addActionListener(this);
- add(ui.getAcPause(), ui.getAcPause().getConstraints());
- ui.getAcPause().removeActionListener(this);
- ui.getAcPause().addActionListener(this);
- add(ui.getAcStop(), ui.getAcStop().getConstraints());
- ui.getAcStop().removeActionListener(this);
- ui.getAcStop().addActionListener(this);
- add(ui.getAcNext(), ui.getAcNext().getConstraints());
- ui.getAcNext().removeActionListener(this);
- ui.getAcNext().addActionListener(this);
- add(ui.getAcEject(), ui.getAcEject().getConstraints());
- ui.getAcEject().removeActionListener(this);
- ui.getAcEject().addActionListener(this);
- // EqualizerUI toggle
- add(ui.getAcEqualizer(), ui.getAcEqualizer().getConstraints());
- ui.getAcEqualizer().removeActionListener(this);
- ui.getAcEqualizer().addActionListener(this);
- // Playlist toggle
- /*add(ui.getAcPlaylist(), ui.getAcPlaylist().getConstraints());
- ui.getAcPlaylist().removeActionListener(this);
- ui.getAcPlaylist().addActionListener(this);*/
- // Shuffle toggle
- add(ui.getAcShuffle(), ui.getAcShuffle().getConstraints());
- ui.getAcShuffle().removeActionListener(this);
- ui.getAcShuffle().addActionListener(this);
- // Repeat toggle
- add(ui.getAcRepeat(), ui.getAcRepeat().getConstraints());
- ui.getAcRepeat().removeActionListener(this);
- ui.getAcRepeat().addActionListener(this);
- // Volume
- add(ui.getAcVolume(), ui.getAcVolume().getConstraints());
- ui.getAcVolume().removeChangeListener(this);
- ui.getAcVolume().addChangeListener(this);
- // Balance
- /*add(ui.getAcBalance(), ui.getAcBalance().getConstraints());
- ui.getAcBalance().removeChangeListener(this);
- ui.getAcBalance().addChangeListener(this);*/
- // Seek bar
- add(ui.getAcPosBar(), ui.getAcPosBar().getConstraints());
- ui.getAcPosBar().removeChangeListener(this);
- ui.getAcPosBar().addChangeListener(this);
- // Mono
- add(ui.getAcMonoIcon(), ui.getAcMonoIcon().getConstraints());
- // Stereo
- add(ui.getAcStereoIcon(), ui.getAcStereoIcon().getConstraints());
- // Title label
- add(ui.getAcTitleLabel(), ui.getAcTitleLabel().getConstraints());
- // Sample rate label
- add(ui.getAcSampleRateLabel(), ui.getAcSampleRateLabel().getConstraints());
- // Bit rate label
- add(ui.getAcBitRateLabel(), ui.getAcBitRateLabel().getConstraints());
- // Play icon
- add(ui.getAcPlayIcon(), ui.getAcPlayIcon().getConstraints());
- // Time icon
- add(ui.getAcTimeIcon(), ui.getAcTimeIcon().getConstraints());
- // MinuteH number
- add(ui.getAcMinuteH(), ui.getAcMinuteH().getConstraints());
- // MinuteL number
- add(ui.getAcMinuteL(), ui.getAcMinuteL().getConstraints());
- // SecondH number
- add(ui.getAcSecondH(), ui.getAcSecondH().getConstraints());
- // SecondL number
- add(ui.getAcSecondL(), ui.getAcSecondL().getConstraints());
- // TitleBar
- add(ui.getAcTitleBar(), ui.getAcTitleBar().getConstraints());
- add(ui.getAcMinimize(), ui.getAcMinimize().getConstraints());
- ui.getAcMinimize().removeActionListener(this);
- ui.getAcMinimize().addActionListener(this);
- add(ui.getAcExit(), ui.getAcExit().getConstraints());
- ui.getAcExit().removeActionListener(this);
- ui.getAcExit().addActionListener(this);
- // DSP
- /*if (ui.getAcAnalyzer() != null)
- {
- add(ui.getAcAnalyzer(), ui.getAcAnalyzer().getConstraints());
- }*/
- // Popup menu
- mainpopup = new JPopupMenu(ui.getResource("popup.title"));
- JMenuItem mi = new JMenuItem(Skin.TITLETEXT + "- JavaZOOM");
- //mi.removeActionListener(this);
- //mi.addActionListener(this);
- mainpopup.add(mi);
- mainpopup.addSeparator();
- JMenu playSubMenu = new JMenu(ui.getResource("popup.play"));
- miPlayFile = new JMenuItem(ui.getResource("popup.play.file"));
- miPlayFile.setActionCommand(PlayerActionEvent.MIPLAYFILE);
- miPlayFile.removeActionListener(this);
- miPlayFile.addActionListener(this);
- miPlayLocation = new JMenuItem(ui.getResource("popup.play.location"));
- miPlayLocation.setActionCommand(PlayerActionEvent.MIPLAYLOCATION);
- miPlayLocation.removeActionListener(this);
- miPlayLocation.addActionListener(this);
- playSubMenu.add(miPlayFile);
- playSubMenu.add(miPlayLocation);
- mainpopup.add(playSubMenu);
- mainpopup.addSeparator();
- miPlaylist = new JCheckBoxMenuItem(ui.getResource("popup.playlist"));
- miPlaylist.setActionCommand(PlayerActionEvent.MIPLAYLIST);
- if (config.isPlaylistEnabled()) miPlaylist.setState(true);
- miPlaylist.removeActionListener(this);
- miPlaylist.addActionListener(this);
- mainpopup.add(miPlaylist);
- miEqualizer = new JCheckBoxMenuItem(ui.getResource("popup.equalizer"));
- miEqualizer.setActionCommand(PlayerActionEvent.MIEQUALIZER);
- if (config.isEqualizerEnabled()) miEqualizer.setState(true);
- miEqualizer.removeActionListener(this);
- miEqualizer.addActionListener(this);
- mainpopup.add(miEqualizer);
- mainpopup.addSeparator();
- mi = new JMenuItem(ui.getResource("popup.preferences"));
- mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK, false));
- mi.setActionCommand(PlayerActionEvent.MIPREFERENCES);
- mi.removeActionListener(this);
- mi.addActionListener(this);
- mainpopup.add(mi);
- JMenu skinsSubMenu = new JMenu(ui.getResource("popup.skins"));
- mi = new JMenuItem(ui.getResource("popup.skins.browser"));
- mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.ALT_MASK, false));
- mi.setActionCommand(PlayerActionEvent.MISKINBROWSER);
- mi.removeActionListener(this);
- mi.addActionListener(this);
- skinsSubMenu.add(mi);
- mi = new JMenuItem(ui.getResource("popup.skins.load"));
- mi.setActionCommand(PlayerActionEvent.MILOADSKIN);
- mi.removeActionListener(this);
- mi.addActionListener(this);
- skinsSubMenu.add(mi);
- mainpopup.add(skinsSubMenu);
- JMenu playbackSubMenu = new JMenu(ui.getResource("popup.playback"));
- mi = new JMenuItem(ui.getResource("popup.playback.jump"));
- mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_J, 0, false));
- mi.setActionCommand(PlayerActionEvent.MIJUMPFILE);
- mi.removeActionListener(this);
- mi.addActionListener(this);
- playbackSubMenu.add(mi);
- mi = new JMenuItem(ui.getResource("popup.playback.stop"));
- mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, 0, false));
- mi.setActionCommand(PlayerActionEvent.MISTOP);
- mi.removeActionListener(this);
- mi.addActionListener(this);
- playbackSubMenu.add(mi);
- mainpopup.add(playbackSubMenu);
- mainpopup.addSeparator();
- mi = new JMenuItem(ui.getResource("popup.exit"));
- mi.setActionCommand(PlayerActionEvent.ACEXIT);
- mi.removeActionListener(this);
- mi.addActionListener(this);
- mainpopup.add(mi);
- // Popup menu on TitleBar
- ui.getAcTitleBar().removeMouseListener(popupAdapter);
- popupAdapter = new PopupAdapter(mainpopup);
- ui.getAcTitleBar().addMouseListener(popupAdapter);
- // Popup menu on Eject button
- ejectpopup = new JPopupMenu();
- mi = new JMenuItem(ui.getResource("popup.eject.openfile"));
- mi.setActionCommand(PlayerActionEvent.MIPLAYFILE);
- mi.removeActionListener(this);
- mi.addActionListener(this);
- ejectpopup.add(mi);
- mi = new JMenuItem(ui.getResource("popup.eject.openlocation"));
- mi.setActionCommand(PlayerActionEvent.MIPLAYLOCATION);
- mi.removeActionListener(this);
- mi.addActionListener(this);
- ejectpopup.add(mi);
- ui.getAcEject().removeMouseListener(ejectpopupAdapter);
- ejectpopupAdapter = new PopupAdapter(ejectpopup);
- ui.getAcEject().addMouseListener(ejectpopupAdapter);
- // EqualizerUI
- if (equalizerUI != null) equalizerUI.loadUI();
- if (playlistUI != null) playlistUI.loadUI();
- validate();
- loader.loaded();
- }
-
- /**
- * Load playlist.
- * @param playlistName
- * @return
- */
- public boolean loadPlaylist(String playlistName)
- {
- boolean loaded = false;
- PlaylistFactory plf = PlaylistFactory.getInstance();
- playlist = plf.getPlaylist();
- if (playlist == null)
- {
- config.setPlaylistClassName("javazoom.jlgui.player.amp.playlist.BasePlaylist");
- playlist = plf.getPlaylist();
- }
- playlistUI.setPlaylist(playlist);
- if ((playlistName != null) && (!playlistName.equals("")))
- {
- // M3U file or URL.
- if ((playlistName.toLowerCase().endsWith(ui.getResource("playlist.extension.m3u"))) || (playlistName.toLowerCase().endsWith(ui.getResource("playlist.extension.pls")))) loaded = playlist.load(playlistName);
- // Simple song.
- else
- {
- String name = playlistName;
- if (!Config.startWithProtocol(playlistName))
- {
- int indn = playlistName.lastIndexOf(java.io.File.separatorChar);
- if (indn != -1) name = playlistName.substring(indn + 1);
- PlaylistItem pli = new PlaylistItem(name, playlistName, -1, true);
- playlist.appendItem(pli);
- loaded = true;
- }
- else
- {
- PlaylistItem pli = new PlaylistItem(name, playlistName, -1, false);
- playlist.appendItem(pli);
- loaded = true;
- }
- }
- }
- return loaded;
- }
-
- /* (non-Javadoc)
- * @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent)
- */
- public void stateChanged(ChangeEvent e)
- {
- Object src = e.getSource();
- //log.debug("State (EDT=" + SwingUtilities.isEventDispatchThread() + ")");
- // Volume
- if (src == ui.getAcVolume())
- {
- Object[] args = { String.valueOf(ui.getAcVolume().getValue()) };
- String volumeText = MessageFormat.format(ui.getResource("slider.volume.text"), args);
- ui.getAcTitleLabel().setAcText(volumeText);
- try
- {
- int gainValue = ui.getAcVolume().getValue();
- int maxGain = ui.getAcVolume().getMaximum();
- if (gainValue == 0) theSoundPlayer.setGain(0);
- else theSoundPlayer.setGain(((double) gainValue / (double) maxGain));
- config.setVolume(gainValue);
- }
- catch (BasicPlayerException ex)
- {
- log.debug("Cannot set gain", ex);
- }
- }
- // Balance
- else if (src == ui.getAcBalance())
- {
- Object[] args = { String.valueOf(Math.abs(ui.getAcBalance().getValue() * 100 / Skin.BALANCEMAX)) };
- String balanceText = null;
- if (ui.getAcBalance().getValue() > 0)
- {
- balanceText = MessageFormat.format(ui.getResource("slider.balance.text.right"), args);
- }
- else if (ui.getAcBalance().getValue() < 0)
- {
- balanceText = MessageFormat.format(ui.getResource("slider.balance.text.left"), args);
- }
- else
- {
- balanceText = MessageFormat.format(ui.getResource("slider.balance.text.center"), args);
- }
- ui.getAcTitleLabel().setAcText(balanceText);
- try
- {
- float balanceValue = ui.getAcBalance().getValue() * 1.0f / Skin.BALANCEMAX;
- theSoundPlayer.setPan(balanceValue);
- }
- catch (BasicPlayerException ex)
- {
- log.debug("Cannot set pan", ex);
- }
- }
- else if (src == ui.getAcPosBar())
- {
- if (ui.getAcPosBar().getValueIsAdjusting() == false)
- {
- if (posDragging == true)
- {
- posDragging = false;
- posValue = ui.getAcPosBar().getValue() * 1.0 / Skin.POSBARMAX;
- processSeek(posValue);
- }
- }
- else
- {
- posDragging = true;
- posValueJump = true;
- }
- }
- }
-
- /* (non-Javadoc)
- * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
- */
- public void actionPerformed(ActionEvent e)
- {
- final ActionEvent evt = e;
- if (e.getActionCommand().equals(PlayerActionEvent.ACPAUSE))
- {
- processActionEvent(e);
- }
- else if ((e.getActionCommand().equals(PlayerActionEvent.ACPLAY)) && (playerState == PAUSE))
- {
- processActionEvent(e);
- }
- else
- {
- new Thread("PlayerUIActionEvent")
- {
- public void run()
- {
- processActionEvent(evt);
- }
- }.start();
- }
- }
-
- /**
- * Process action event.
- * @param e
- */
- public void processActionEvent(ActionEvent e)
- {
- String cmd = e.getActionCommand();
- log.debug("Action=" + cmd + " (EDT=" + SwingUtilities.isEventDispatchThread() + ")");
- // Preferences.
- if (cmd.equalsIgnoreCase(PlayerActionEvent.MIPREFERENCES))
- {
- processPreferences(e.getModifiers());
- }
- // Skin browser
- else if (cmd.equals(PlayerActionEvent.MISKINBROWSER))
- {
- processSkinBrowser(e.getModifiers());
- }
- // Jump to file
- else if (cmd.equals(PlayerActionEvent.MIJUMPFILE))
- {
- processJumpToFile(e.getModifiers());
- }
- // Stop
- else if (cmd.equals(PlayerActionEvent.MISTOP))
- {
- processStop(MouseEvent.BUTTON1_MASK);
- }
- // Load skin
- else if (e.getActionCommand().equals(PlayerActionEvent.MILOADSKIN))
- {
- File[] file = FileSelector.selectFile(loader, FileSelector.OPEN, false, ui.getResource("skin.extension"), ui.getResource("loadskin.dialog.filtername"), new File(config.getLastDir()));
- if (FileSelector.getInstance().getDirectory() != null) config.setLastDir(FileSelector.getInstance().getDirectory().getPath());
- if (file != null)
- {
- String fsFile = file[0].getName();
- ui.setPath(config.getLastDir() + fsFile);
- loadSkin();
- config.setDefaultSkin(ui.getPath());
- }
- }
- // Shuffle
- else if (cmd.equals(PlayerActionEvent.ACSHUFFLE))
- {
- if (ui.getAcShuffle().isSelected())
- {
- config.setShuffleEnabled(true);
- if (playlist != null)
- {
- playlist.shuffle();
- playlistUI.initPlayList();
- // Play from the top
- PlaylistItem pli = playlist.getCursor();
- setCurrentSong(pli);
- }
- }
- else
- {
- config.setShuffleEnabled(false);
- }
- }
- // Repeat
- else if (cmd.equals(PlayerActionEvent.ACREPEAT))
- {
- if (ui.getAcRepeat().isSelected())
- {
- config.setRepeatEnabled(true);
- }
- else
- {
- config.setRepeatEnabled(false);
- }
- }
- // Play file
- else if (cmd.equals(PlayerActionEvent.MIPLAYFILE))
- {
- processEject(MouseEvent.BUTTON1_MASK);
- }
- // Play URL
- else if (cmd.equals(PlayerActionEvent.MIPLAYLOCATION))
- {
- processEject(MouseEvent.BUTTON3_MASK);
- }
- // Playlist menu item
- else if (cmd.equals(PlayerActionEvent.MIPLAYLIST))
- {
- ui.getAcPlaylist().setSelected(miPlaylist.getState());
- togglePlaylist();
- }
- // Playlist toggle button
- else if (cmd.equals(PlayerActionEvent.ACPLAYLIST))
- {
- togglePlaylist();
- }
- // EqualizerUI menu item
- else if (cmd.equals(PlayerActionEvent.MIEQUALIZER))
- {
- ui.getAcEqualizer().setSelected(miEqualizer.getState());
- toggleEqualizer();
- }
- // EqualizerUI
- else if (cmd.equals(PlayerActionEvent.ACEQUALIZER))
- {
- toggleEqualizer();
- }
- // Exit player
- else if (cmd.equals(PlayerActionEvent.ACEXIT))
- {
- closePlayer();
- }
- // Minimize
- else if (cmd.equals(PlayerActionEvent.ACMINIMIZE))
- {
- loader.minimize();
- }
- // Eject
- else if (cmd.equals(PlayerActionEvent.ACEJECT))
- {
- processEject(e.getModifiers());
- }
- // Play
- else if (cmd.equals(PlayerActionEvent.ACPLAY))
- {
- processPlay(e.getModifiers());
- }
- // Pause
- else if (cmd.equals(PlayerActionEvent.ACPAUSE))
- {
- processPause(e.getModifiers());
- }
- // Stop
- else if (cmd.equals(PlayerActionEvent.ACSTOP))
- {
- processStop(e.getModifiers());
- }
- // Next
- else if (cmd.equals(PlayerActionEvent.ACNEXT))
- {
- processNext(e.getModifiers());
- }
- // Previous
- else if (cmd.equals(PlayerActionEvent.ACPREVIOUS))
- {
- processPrevious(e.getModifiers());
- }
- }
-
- /* (non-Javadoc)
- * @see javazoom.jlgui.basicplayer.BasicPlayerListener#opened(java.lang.Object, java.util.Map)
- */
- public void opened(Object stream, Map properties)
- {
- // Not in EDT.
- audioInfo = properties;
- log.debug(properties.toString());
- }
-
- /* (non-Javadoc)
- * @see javazoom.jlgui.basicplayer.BasicPlayerListener#stateUpdated(javazoom.jlgui.basicplayer.BasicPlayerEvent)
- */
- public void stateUpdated(final BasicPlayerEvent event)
- {
- // Not in EDT.
- processStateUpdated(event);
- }
-
- /* (non-Javadoc)
- * @see javazoom.jlgui.basicplayer.BasicPlayerListener#progress(int, long, byte[], java.util.Map)
- */
- public void progress(int bytesread, long microseconds, byte[] pcmdata, Map properties)
- {
- // Not in EDT.
- processProgress(bytesread, microseconds, pcmdata, properties);
- }
-
- /**
- * Process PREFERENCES event.
- * @param modifiers
- */
- protected void processPreferences(int modifiers)
- {
- Preferences preferences = Preferences.getInstance(this);
- preferences.setLocation(loader.getLocation().x, loader.getLocation().y);
- preferences.setSize(512, 350);
- preferences.setVisible(true);
- }
-
- /**
- * Process SKINS BROWSER event.
- * @param modifiers
- */
- protected void processSkinBrowser(int modifiers)
- {
- Preferences preferences = Preferences.getInstance(this);
- preferences.selectSkinBrowserPane();
- preferences.setLocation(loader.getLocation().x, loader.getLocation().y);
- preferences.setSize(512, 350);
- preferences.setVisible(true);
- }
-
- /**
- * Process JUMP FILE event.
- * @param modifiers
- */
- protected void processJumpToFile(int modifiers)
- {
- TagSearch ts = new TagSearch(this);
- ts.setIconImage(config.getIconParent().getImage());
- ts.setSize(400, 300);
- ts.setLocation(loader.getLocation());
- ts.display();
- }
-
- /**
- * Process EJECT event.
- * @param modifiers
- */
- protected void processEject(int modifiers)
- {
- if ((playerState == PLAY) || (playerState == PAUSE))
- {
- try
- {
- if (theSoundPlayer != null)
- {
- theSoundPlayer.stop();
- }
- }
- catch (BasicPlayerException e)
- {
- log.info("Cannot stop", e);
- }
- playerState = STOP;
- }
- if ((playerState == INIT) || (playerState == STOP) || (playerState == OPEN))
- {
- PlaylistItem pli = null;
- // Local File.
- if (modifiers == MouseEvent.BUTTON1_MASK)
- {
- File[] file = FileSelector.selectFile(loader, FileSelector.OPEN, false, config.getExtensions(), ui.getResource("button.eject.filedialog.filtername"), new File(config.getLastDir()));
- if (FileSelector.getInstance().getDirectory() != null) config.setLastDir(FileSelector.getInstance().getDirectory().getPath());
- if (file != null)
- {
- String fsFile = file[0].getName();
- if (fsFile != null)
- {
- // Loads a new playlist.
- if ((fsFile.toLowerCase().endsWith(ui.getResource("playlist.extension.m3u"))) || (fsFile.toLowerCase().endsWith(ui.getResource("playlist.extension.pls"))))
- {
- if (loadPlaylist(config.getLastDir() + fsFile))
- {
- config.setPlaylistFilename(config.getLastDir() + fsFile);
- playlist.begin();
- playlistUI.initPlayList();
- setCurrentSong(playlist.getCursor());
- playlistUI.repaint();
- }
- }
- else if (fsFile.toLowerCase().endsWith(ui.getResource("skin.extension")))
- {
- ui.setPath(config.getLastDir() + fsFile);
- loadSkin();
- config.setDefaultSkin(ui.getPath());
- }
- else pli = new PlaylistItem(fsFile, config.getLastDir() + fsFile, -1, true);
- }
- }
- }
- // Remote File.
- else if (modifiers == MouseEvent.BUTTON3_MASK)
- {
- UrlDialog UD = new UrlDialog(config.getTopParent(), ui.getResource("button.eject.urldialog.title"), loader.getLocation().x, loader.getLocation().y + 10, config.getLastURL());
- UD.show();
- if (UD.getFile() != null)
- {
- showTitle(ui.getResource("title.loading"));
- // Remote playlist ?
- if ((UD.getURL().toLowerCase().endsWith(ui.getResource("playlist.extension.m3u"))) || (UD.getURL().toLowerCase().endsWith(ui.getResource("playlist.extension.pls"))))
- {
- if (loadPlaylist(UD.getURL()))
- {
- config.setPlaylistFilename(UD.getURL());
- playlist.begin();
- playlistUI.initPlayList();
- setCurrentSong(playlist.getCursor());
- playlistUI.repaint();
- }
- }
- // Remote file or stream.
- else
- {
- pli = new PlaylistItem(UD.getFile(), UD.getURL(), -1, false);
- }
- config.setLastURL(UD.getURL());
- }
- }
- if ((pli != null) && (playlist != null))
- {
- playlist.removeAllItems();
- playlist.appendItem(pli);
- playlist.nextCursor();
- playlistUI.initPlayList();
- setCurrentSong(pli);
- playlistUI.repaint();
- }
- }
- // Display play/time icons.
- ui.getAcPlayIcon().setIcon(2);
- ui.getAcTimeIcon().setIcon(1);
- }
-
- /**
- * Process PLAY event.
- * @param modifiers
- */
- protected void processPlay(int modifiers)
- {
- if (playlist.isModified()) // playlist has been modified since we were last there, must update our cursor pos etc.
- {
- PlaylistItem pli = playlist.getCursor();
- if (pli == null)
- {
- playlist.begin();
- pli = playlist.getCursor();
- }
- setCurrentSong(pli);
- playlist.setModified(false);
- playlistUI.repaint();
- }
- // Resume is paused.
- if (playerState == PAUSE)
- {
- try
- {
- theSoundPlayer.resume();
- }
- catch (BasicPlayerException e)
- {
- log.error("Cannot resume", e);
- }
- playerState = PLAY;
- ui.getAcPlayIcon().setIcon(0);
- ui.getAcTimeIcon().setIcon(0);
- }
- // Stop if playing.
- else if (playerState == PLAY)
- {
- try
- {
- theSoundPlayer.stop();
- }
- catch (BasicPlayerException e)
- {
- log.error("Cannot stop", e);
- }
- playerState = PLAY;
- secondsAmount = 0;
- ui.getAcMinuteH().setAcText("0");
- ui.getAcMinuteL().setAcText("0");
- ui.getAcSecondH().setAcText("0");
- ui.getAcSecondL().setAcText("0");
- if (currentFileOrURL != null)
- {
- try
- {
- if (currentIsFile == true) theSoundPlayer.open(openFile(currentFileOrURL));
- else
- {
- theSoundPlayer.open(new URL(currentFileOrURL));
- }
- theSoundPlayer.play();
- }
- catch (Exception ex)
- {
- log.error("Cannot read file : " + currentFileOrURL, ex);
- showMessage(ui.getResource("title.invalidfile"));
- }
- }
- }
- else if ((playerState == STOP) || (playerState == OPEN))
- {
- try
- {
- theSoundPlayer.stop();
- }
- catch (BasicPlayerException e)
- {
- log.error("Stop failed", e);
- }
- if (currentFileOrURL != null)
- {
- try
- {
- if (currentIsFile == true) theSoundPlayer.open(openFile(currentFileOrURL));
- else theSoundPlayer.open(new URL(currentFileOrURL));
- theSoundPlayer.play();
- titleText = currentSongName.toUpperCase();
- // Get bitrate, samplingrate, channels, time in the following order :
- // PlaylistItem, BasicPlayer (JavaSound SPI), Manual computation.
- int bitRate = -1;
- if (currentPlaylistItem != null) bitRate = currentPlaylistItem.getBitrate();
- if ((bitRate <= 0) && (audioInfo.containsKey("bitrate"))) bitRate = ((Integer) audioInfo.get("bitrate")).intValue();
- if ((bitRate <= 0) && (audioInfo.containsKey("audio.framerate.fps")) && (audioInfo.containsKey("audio.framesize.bytes")))
- {
- float FR = ((Float) audioInfo.get("audio.framerate.fps")).floatValue();
- int FS = ((Integer) audioInfo.get("audio.framesize.bytes")).intValue();
- bitRate = Math.round(FS * FR * 8);
- }
- int channels = -1;
- if (currentPlaylistItem != null) channels = currentPlaylistItem.getChannels();
- if ((channels <= 0) && (audioInfo.containsKey("audio.channels"))) channels = ((Integer) audioInfo.get("audio.channels")).intValue();
- float sampleRate = -1.0f;
- if (currentPlaylistItem != null) sampleRate = currentPlaylistItem.getSamplerate();
- if ((sampleRate <= 0) && (audioInfo.containsKey("audio.samplerate.hz"))) sampleRate = ((Float) audioInfo.get("audio.samplerate.hz")).floatValue();
- long lenghtInSecond = -1L;
- if (currentPlaylistItem != null) lenghtInSecond = currentPlaylistItem.getLength();
- if ((lenghtInSecond <= 0) && (audioInfo.containsKey("duration"))) lenghtInSecond = ((Long) audioInfo.get("duration")).longValue() / 1000000;
- if ((lenghtInSecond <= 0) && (audioInfo.containsKey("audio.length.bytes")))
- {
- // Try to compute time length.
- lenghtInSecond = (long) Math.round(getTimeLengthEstimation(audioInfo) / 1000);
- if (lenghtInSecond > 0)
- {
- int minutes = (int) Math.floor(lenghtInSecond / 60);
- int hours = (int) Math.floor(minutes / 60);
- minutes = minutes - hours * 60;
- int seconds = (int) (lenghtInSecond - minutes * 60 - hours * 3600);
- if (seconds >= 10) titleText = "(" + minutes + ":" + seconds + ") " + titleText;
- else titleText = "(" + minutes + ":0" + seconds + ") " + titleText;
- }
- }
- bitRate = Math.round((bitRate / 1000));
- ui.getAcSampleRateLabel().setAcText(String.valueOf(Math.round((sampleRate / 1000))));
- if (bitRate > 999)
- {
- bitRate = (int) (bitRate / 100);
- ui.getAcBitRateLabel().setAcText(bitRate + "H");
- }
- else
- {
- ui.getAcBitRateLabel().setAcText(String.valueOf(bitRate));
- }
- if (channels == 2)
- {
- ui.getAcStereoIcon().setIcon(1);
- ui.getAcMonoIcon().setIcon(0);
- }
- else if (channels == 1)
- {
- ui.getAcStereoIcon().setIcon(0);
- ui.getAcMonoIcon().setIcon(1);
- }
- showTitle(titleText);
- ui.getAcMinuteH().setAcText("0");
- ui.getAcMinuteL().setAcText("0");
- ui.getAcSecondH().setAcText("0");
- ui.getAcSecondL().setAcText("0");
- ui.getAcPlayIcon().setIcon(0);
- ui.getAcTimeIcon().setIcon(0);
- }
- catch (BasicPlayerException bpe)
- {
- log.info("Stream error :" + currentFileOrURL, bpe);
- showMessage(ui.getResource("title.invalidfile"));
- }
- catch (MalformedURLException mue)
- {
- log.info("Stream error :" + currentFileOrURL, mue);
- showMessage(ui.getResource("title.invalidfile"));
- }
- // Set pan/gain.
- try
- {
- theSoundPlayer.setGain(((double) ui.getAcVolume().getValue() / (double) ui.getAcVolume().getMaximum()));
- theSoundPlayer.setPan((float) ui.getAcBalance().getValue() / 10.0f);
- }
- catch (BasicPlayerException e)
- {
- log.info("Cannot set control", e);
- }
- playerState = PLAY;
- log.info(titleText);
- }
- }
- }
-
- /**
- * Process PAUSE event.
- * @param modifiers
- */
- public void processPause(int modifiers)
- {
- if (playerState == PLAY)
- {
- try
- {
- theSoundPlayer.pause();
- }
- catch (BasicPlayerException e)
- {
- log.error("Cannot pause", e);
- }
- playerState = PAUSE;
- ui.getAcPlayIcon().setIcon(1);
- ui.getAcTimeIcon().setIcon(1);
- }
- else if (playerState == PAUSE)
- {
- try
- {
- theSoundPlayer.resume();
- }
- catch (BasicPlayerException e)
- {
- log.info("Cannot resume", e);
- }
- playerState = PLAY;
- ui.getAcPlayIcon().setIcon(0);
- ui.getAcTimeIcon().setIcon(0);
- }
- }
-
- /**
- * Process STOP event.
- * @param modifiers
- */
- public void processStop(int modifiers)
- {
- if ((playerState == PAUSE) || (playerState == PLAY))
- {
- try
- {
- theSoundPlayer.stop();
- }
- catch (BasicPlayerException e)
- {
- log.info("Cannot stop", e);
- }
- playerState = STOP;
- secondsAmount = 0;
- ui.getAcPosBar().setValue(0);
- ui.getAcPlayIcon().setIcon(2);
- ui.getAcTimeIcon().setIcon(1);
- }
- }
-
- /**
- * Process NEXT event.
- * @param modifiers
- */
- public void processNext(int modifiers)
- {
- // Try to get next song from the playlist
- playlist.nextCursor();
- playlistUI.nextCursor();
- PlaylistItem pli = playlist.getCursor();
- setCurrentSong(pli);
- }
-
- /**
- * Process PREVIOUS event.
- * @param modifiers
- */
- public void processPrevious(int modifiers)
- {
- // Try to get previous song from the playlist
- playlist.previousCursor();
- playlistUI.nextCursor();
- PlaylistItem pli = playlist.getCursor();
- setCurrentSong(pli);
- }
-
- /**
- * Process STATEUPDATED event.
- * @param event
- */
- public void processStateUpdated(BasicPlayerEvent event)
- {
- log.debug("Player:" + event + " (EDT=" + SwingUtilities.isEventDispatchThread() + ")");
- /*-- End Of Media reached --*/
- int state = event.getCode();
- Object obj = event.getDescription();
- if (state == BasicPlayerEvent.EOM)
- {
- if ((playerState == PAUSE) || (playerState == PLAY))
- {
- playlist.nextCursor();
- playlistUI.nextCursor();
- PlaylistItem pli = playlist.getCursor();
- setCurrentSong(pli);
- }
- }
- else if (state == BasicPlayerEvent.PLAYING)
- {
- lastScrollTime = System.currentTimeMillis();
- posValueJump = false;
- /*if (audioInfo.containsKey("basicplayer.sourcedataline"))
- {
- if (ui.getAcAnalyzer() != null)
- {
- ui.getAcAnalyzer().setupDSP((SourceDataLine) audioInfo.get("basicplayer.sourcedataline"));
- ui.getAcAnalyzer().startDSP((SourceDataLine) audioInfo.get("basicplayer.sourcedataline"));
- }
- }*/
- }
- else if (state == BasicPlayerEvent.SEEKING)
- {
- posValueJump = true;
- }
- else if (state == BasicPlayerEvent.SEEKED)
- {
- try
- {
- theSoundPlayer.setGain(((double) ui.getAcVolume().getValue() / (double) ui.getAcVolume().getMaximum()));
- theSoundPlayer.setPan((float) ui.getAcBalance().getValue() / 10.0f);
- }
- catch (BasicPlayerException e)
- {
- log.debug(e);
- }
- }
- else if (state == BasicPlayerEvent.OPENING)
- {
- if ((obj instanceof URL) || (obj instanceof InputStream))
- {
- showTitle(ui.getResource("title.buffering"));
- }
- }
- else if (state == BasicPlayerEvent.STOPPED)
- {
- /*if (ui.getAcAnalyzer() != null)
- {
- ui.getAcAnalyzer().stopDSP();
- ui.getAcAnalyzer().repaint();
- }*/
- }
- }
-
- /**
- * Process PROGRESS event.
- * @param bytesread
- * @param microseconds
- * @param pcmdata
- * @param properties
- */
- public void processProgress(int bytesread, long microseconds, byte[] pcmdata, Map properties)
- {
- //log.debug("Player: Progress (EDT="+SwingUtilities.isEventDispatchThread()+")");
- int byteslength = -1;
- long total = -1;
- // Try to get time from playlist item.
- if (currentPlaylistItem != null) total = currentPlaylistItem.getLength();
- // If it fails then try again with JavaSound SPI.
- if (total <= 0) total = (long) Math.round(getTimeLengthEstimation(audioInfo) / 1000);
- // If it fails again then it might be stream => Total = -1
- if (total <= 0) total = -1;
- if (audioInfo.containsKey("basicplayer.sourcedataline"))
- {
- // Spectrum/time analyzer
- //if (ui.getAcAnalyzer() != null) ui.getAcAnalyzer().writeDSP(pcmdata);
- }
- if (audioInfo.containsKey("audio.length.bytes"))
- {
- byteslength = ((Integer) audioInfo.get("audio.length.bytes")).intValue();
- }
- float progress = -1.0f;
- if ((bytesread > 0) && ((byteslength > 0))) progress = bytesread * 1.0f / byteslength * 1.0f;
- if (audioInfo.containsKey("audio.type"))
- {
- String audioformat = (String) audioInfo.get("audio.type");
- if (audioformat.equalsIgnoreCase("mp3"))
- {
- //if (properties.containsKey("mp3.position.microseconds")) secondsAmount = (long) Math.round(((Long) properties.get("mp3.position.microseconds")).longValue()/1000000);
- // Shoutcast stream title.
- if (properties.containsKey("mp3.shoutcast.metadata.StreamTitle"))
- {
- String shoutTitle = ((String) properties.get("mp3.shoutcast.metadata.StreamTitle")).trim();
- if (shoutTitle.length() > 0)
- {
- if (currentPlaylistItem != null)
- {
- String sTitle = " (" + currentPlaylistItem.getFormattedDisplayName() + ")";
- if (!currentPlaylistItem.getFormattedName().equals(shoutTitle + sTitle))
- {
- currentPlaylistItem.setFormattedDisplayName(shoutTitle + sTitle);
- showTitle((shoutTitle + sTitle).toUpperCase());
- playlistUI.paintList();
- }
- }
- }
- }
- // EqualizerUI
- if (properties.containsKey("mp3.equalizer")) equalizerUI.setBands((float[]) properties.get("mp3.equalizer"));
- if (total > 0) secondsAmount = (long) (total * progress);
- else secondsAmount = -1;
- }
- else if (audioformat.equalsIgnoreCase("wave"))
- {
- secondsAmount = (long) (total * progress);
- }
- else
- {
- secondsAmount = (long) Math.round(microseconds / 1000000);
- equalizerUI.setBands(null);
- }
- }
- else
- {
- secondsAmount = (long) Math.round(microseconds / 1000000);
- equalizerUI.setBands(null);
- }
- if (secondsAmount < 0) secondsAmount = (long) Math.round(microseconds / 1000000);
- /*-- Display elapsed time --*/
- int secondD = 0, second = 0, minuteD = 0, minute = 0;
- int seconds = (int) secondsAmount;
- int minutes = (int) Math.floor(seconds / 60);
- int hours = (int) Math.floor(minutes / 60);
- minutes = minutes - hours * 60;
- seconds = seconds - minutes * 60 - hours * 3600;
- if (seconds < 10)
- {
- secondD = 0;
- second = seconds;
- }
- else
- {
- secondD = ((int) seconds / 10);
- second = ((int) (seconds - (((int) seconds / 10)) * 10));
- }
- if (minutes < 10)
- {
- minuteD = 0;
- minute = minutes;
- }
- else
- {
- minuteD = ((int) minutes / 10);
- minute = ((int) (minutes - (((int) minutes / 10)) * 10));
- }
- ui.getAcMinuteH().setAcText(String.valueOf(minuteD));
- ui.getAcMinuteL().setAcText(String.valueOf(minute));
- ui.getAcSecondH().setAcText(String.valueOf(secondD));
- ui.getAcSecondL().setAcText(String.valueOf(second));
- // Update PosBar location.
- if (total != 0)
- {
- if (posValueJump == false)
- {
- int posValue = ((int) Math.round(secondsAmount * Skin.POSBARMAX / total));
- ui.getAcPosBar().setValue(posValue);
- }
- }
- else ui.getAcPosBar().setValue(0);
- long ctime = System.currentTimeMillis();
- long lctime = lastScrollTime;
- // Scroll title ?
- if ((titleScrollLabel != null) && (titleScrollLabel.length > 0))
- {
- if (ctime - lctime > SCROLL_PERIOD)
- {
- lastScrollTime = ctime;
- if (scrollRight == true)
- {
- scrollIndex++;
- if (scrollIndex >= titleScrollLabel.length)
- {
- scrollIndex--;
- scrollRight = false;
- }
- }
- else
- {
- scrollIndex--;
- if (scrollIndex <= 0)
- {
- scrollRight = true;
- }
- }
- // TODO : Improve
- ui.getAcTitleLabel().setAcText(titleScrollLabel[scrollIndex]);
- }
- }
- }
-
- /**
- * Process seek feature.
- * @param rate
- */
- protected void processSeek(double rate)
- {
- try
- {
- if ((audioInfo != null) && (audioInfo.containsKey("audio.type")))
- {
- String type = (String) audioInfo.get("audio.type");
- // Seek support for MP3.
- if ((type.equalsIgnoreCase("mp3")) && (audioInfo.containsKey("audio.length.bytes")))
- {
- long skipBytes = (long) Math.round(((Integer) audioInfo.get("audio.length.bytes")).intValue() * rate);
- log.debug("Seek value (MP3) : " + skipBytes);
- theSoundPlayer.seek(skipBytes);
- }
- // Seek support for WAV.
- else if ((type.equalsIgnoreCase("wave")) && (audioInfo.containsKey("audio.length.bytes")))
- {
- long skipBytes = (long) Math.round(((Integer) audioInfo.get("audio.length.bytes")).intValue() * rate);
- log.debug("Seek value (WAVE) : " + skipBytes);
- theSoundPlayer.seek(skipBytes);
- }
- else posValueJump = false;
- }
- else posValueJump = false;
- }
- catch (BasicPlayerException ioe)
- {
- log.error("Cannot skip", ioe);
- posValueJump = false;
- }
- }
-
- /**
- * Process Drag&Drop
- * @param data
- */
- public void processDnD(Object data)
- {
- log.debug("Player DnD");
- // Looking for files to drop.
- if (data instanceof List)
- {
- List al = (List) data;
- if ((al != null) && (al.size() > 0))
- {
- ArrayList fileList = new ArrayList();
- ArrayList folderList = new ArrayList();
- ListIterator li = al.listIterator();
- while (li.hasNext())
- {
- File f = (File) li.next();
- if ((f.exists()) && (f.canRead()))
- {
- if (f.isFile()) fileList.add(f);
- else if (f.isDirectory()) folderList.add(f);
- }
- }
- playFiles(fileList);
- // TODO : Add dir support
- }
- }
- else if (data instanceof String)
- {
- String files = (String) data;
- if ((files.length() > 0))
- {
- ArrayList fileList = new ArrayList();
- ArrayList folderList = new ArrayList();
- StringTokenizer st = new StringTokenizer(files, System.getProperty("line.separator"));
- // Transfer files dropped.
- while (st.hasMoreTokens())
- {
- String path = st.nextToken();
- if (path.startsWith("file://"))
- {
- path = path.substring(7, path.length());
- if (path.endsWith("\r")) path = path.substring(0, (path.length() - 1));
- }
- File f = new File(path);
- if ((f.exists()) && (f.canRead()))
- {
- if (f.isFile()) fileList.add(f);
- else if (f.isDirectory()) folderList.add(f);
- }
- }
- playFiles(fileList);
- // TODO : Add dir support
- }
- }
- else
- {
- log.info("Unknown dropped objects");
- }
- }
-
- /**
- * Play files from a list.
- * @param files
- */
- protected void playFiles(List files)
- {
- if (files.size() > 0)
- {
- // Clean the playlist.
- playlist.removeAllItems();
- // Add all dropped files to playlist.
- ListIterator li = files.listIterator();
- while (li.hasNext())
- {
- File file = (File) li.next();
- PlaylistItem pli = null;
- if (file != null)
- {
- pli = new PlaylistItem(file.getName(), file.getAbsolutePath(), -1, true);
- if (pli != null) playlist.appendItem(pli);
- }
- }
- // Start the playlist from the top.
- playlist.nextCursor();
- playlistUI.initPlayList();
- setCurrentSong(playlist.getCursor());
- }
- }
-
- /**
- * Sets the current song to play and start playing if needed.
- * @param pli
- */
- public void setCurrentSong(PlaylistItem pli)
- {
- int playerStateMem = playerState;
- if ((playerState == PAUSE) || (playerState == PLAY))
- {
- try
- {
- theSoundPlayer.stop();
- }
- catch (BasicPlayerException e)
- {
- log.error("Cannot stop", e);
- }
- playerState = STOP;
- secondsAmount = 0;
- // Display play/time icons.
- ui.getAcPlayIcon().setIcon(2);
- ui.getAcTimeIcon().setIcon(0);
- }
- playerState = OPEN;
- if (pli != null)
- {
- // Read tag info.
- pli.getTagInfo();
- currentSongName = pli.getFormattedName();
- currentFileOrURL = pli.getLocation();
- currentIsFile = pli.isFile();
- currentPlaylistItem = pli;
- }
- // Playlist ended.
- else
- {
- // Try to repeat ?
- if (config.isRepeatEnabled())
- {
- if (playlist != null)
- {
- // PlaylistItems available ?
- if (playlist.getPlaylistSize() > 0)
- {
- playlist.begin();
- PlaylistItem rpli = playlist.getCursor();
- if (rpli != null)
- {
- // OK, Repeat the playlist.
- rpli.getTagInfo();
- currentSongName = rpli.getFormattedName();
- currentFileOrURL = rpli.getLocation();
- currentIsFile = rpli.isFile();
- currentPlaylistItem = rpli;
- }
- }
- // No, so display Title.
- else
- {
- currentSongName = Skin.TITLETEXT;
- currentFileOrURL = null;
- currentIsFile = false;
- currentPlaylistItem = null;
- }
- }
- }
- // No, so display Title.
- else
- {
- currentSongName = Skin.TITLETEXT;
- currentFileOrURL = null;
- currentIsFile = false;
- currentPlaylistItem = null;
- }
- }
- if (currentIsFile == true)
- {
- ui.getAcPosBar().setEnabled(true);
- ui.getAcPosBar().setHideThumb(false);
- }
- else
- {
- config.setLastURL(currentFileOrURL);
- ui.getAcPosBar().setEnabled(false);
- ui.getAcPosBar().setHideThumb(true);
- }
- titleText = currentSongName.toUpperCase();
- showMessage(titleText);
- // Start playing if needed.
- if ((playerStateMem == PLAY) || (playerStateMem == PAUSE))
- {
- processPlay(MouseEvent.BUTTON1_MASK);
- }
- }
-
- /**
- * Display text in title area.
- * @param str
- */
- public void showTitle(String str)
- {
- if (str != null)
- {
- currentTitle = str;
- titleScrollLabel = null;
- scrollIndex = 0;
- scrollRight = true;
- if (str.length() > TEXT_LENGTH_MAX)
- {
- int a = ((str.length()) - (TEXT_LENGTH_MAX)) + 1;
- titleScrollLabel = new String[a];
- for (int k = 0; k < a; k++)
- {
- String sText = str.substring(k, TEXT_LENGTH_MAX + k);
- titleScrollLabel[k] = sText;
- }
- str = str.substring(0, TEXT_LENGTH_MAX);
- }
- ui.getAcTitleLabel().setAcText(str);
- }
- }
-
- /**
- * Shows message in title an updates bitRate,sampleRate, Mono/Stereo,time features.
- * @param txt
- */
- public void showMessage(String txt)
- {
- showTitle(txt);
- ui.getAcSampleRateLabel().setAcText(" ");
- ui.getAcBitRateLabel().setAcText(" ");
- ui.getAcStereoIcon().setIcon(0);
- ui.getAcMonoIcon().setIcon(0);
- ui.getAcMinuteH().setAcText("0");
- ui.getAcMinuteL().setAcText("0");
- ui.getAcSecondH().setAcText("0");
- ui.getAcSecondL().setAcText("0");
- }
-
- /**
- * Toggle playlistUI.
- */
- protected void togglePlaylist()
- {
- if (ui.getAcPlaylist().isSelected())
- {
- miPlaylist.setState(true);
- config.setPlaylistEnabled(true);
- loader.togglePlaylist(true);
- }
- else
- {
- miPlaylist.setState(false);
- config.setPlaylistEnabled(false);
- loader.togglePlaylist(false);
- }
- }
-
- /**
- * Toggle equalizerUI.
- */
- protected void toggleEqualizer()
- {
- if (ui.getAcEqualizer().isSelected())
- {
- miEqualizer.setState(true);
- config.setEqualizerEnabled(true);
- loader.toggleEqualizer(true);
- }
- else
- {
- miEqualizer.setState(false);
- config.setEqualizerEnabled(false);
- loader.toggleEqualizer(false);
- }
- }
-
- /**
- * Returns a File from a filename.
- * @param file
- * @return
- */
- protected File openFile(String file)
- {
- return new File(file);
- }
-
- /**
- * Free resources and close the player.
- */
- protected void closePlayer()
- {
- if ((playerState == PAUSE) || (playerState == PLAY))
- {
- try
- {
- if (theSoundPlayer != null)
- {
- theSoundPlayer.stop();
- }
- }
- catch (BasicPlayerException e)
- {
- log.error("Cannot stop", e);
- }
- }
- if (theSoundPlayer != null)
- {
- config.setAudioDevice(((BasicPlayer) theSoundPlayer).getMixerName());
- }
- /*if (ui.getAcAnalyzer() != null)
- {
- if (ui.getAcAnalyzer().getDisplayMode() == SpectrumTimeAnalyzer.DISPLAY_MODE_OFF) config.setVisualMode("off");
- else if (ui.getAcAnalyzer().getDisplayMode() == SpectrumTimeAnalyzer.DISPLAY_MODE_SCOPE) config.setVisualMode("oscillo");
- else config.setVisualMode("spectrum");
- }*/
- if (playlist != null)
- {
- playlist.save("default.m3u");
- config.setPlaylistFilename("default.m3u");
- }
- loader.close();
- }
-
- /**
- * Return current title in player.
- * @return
- */
- public String getCurrentTitle()
- {
- return currentTitle;
- }
-
- /**
- * Try to compute time length in milliseconds.
- * @param properties
- * @return
- */
- public long getTimeLengthEstimation(Map properties)
- {
- long milliseconds = -1;
- int byteslength = -1;
- if (properties != null)
- {
- if (properties.containsKey("audio.length.bytes"))
- {
- byteslength = ((Integer) properties.get("audio.length.bytes")).intValue();
- }
- if (properties.containsKey("duration"))
- {
- milliseconds = (int) (((Long) properties.get("duration")).longValue()) / 1000;
- }
- else
- {
- // Try to compute duration
- int bitspersample = -1;
- int channels = -1;
- float samplerate = -1.0f;
- int framesize = -1;
- if (properties.containsKey("audio.samplesize.bits"))
- {
- bitspersample = ((Integer) properties.get("audio.samplesize.bits")).intValue();
- }
- if (properties.containsKey("audio.channels"))
- {
- channels = ((Integer) properties.get("audio.channels")).intValue();
- }
- if (properties.containsKey("audio.samplerate.hz"))
- {
- samplerate = ((Float) properties.get("audio.samplerate.hz")).floatValue();
- }
- if (properties.containsKey("audio.framesize.bytes"))
- {
- framesize = ((Integer) properties.get("audio.framesize.bytes")).intValue();
- }
- if (bitspersample > 0)
- {
- milliseconds = (int) (1000.0f * byteslength / (samplerate * channels * (bitspersample / 8)));
- }
- else
- {
- milliseconds = (int) (1000.0f * byteslength / (samplerate * framesize));
- }
- }
- }
- return milliseconds;
- }
-
- /**
- * Simulates "Play" selection.
- */
- public void pressStart()
- {
- ui.getAcPlay().doClick();
- }
-
- /**
- * Simulates "Pause" selection.
- */
- public void pressPause()
- {
- ui.getAcPause().doClick();
- }
-
- /**
- * Simulates "Stop" selection.
- */
- public void pressStop()
- {
- ui.getAcStop().doClick();
- }
-
- /**
- * Simulates "Next" selection.
- */
- public void pressNext()
- {
- ui.getAcNext().doClick();
- }
-
- /**
- * Simulates "Previous" selection.
- */
- public void pressPrevious()
- {
- ui.getAcPrevious().doClick();
- }
-
- /**
- * Simulates "Eject" selection.
- */
- public void pressEject()
- {
- ui.getAcEject().doClick();
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/StandalonePlayer.java b/java/src/javazoom/jlgui/player/amp/StandalonePlayer.java
deleted file mode 100644
index 9eab1f9..0000000
--- a/java/src/javazoom/jlgui/player/amp/StandalonePlayer.java
+++ /dev/null
@@ -1,500 +0,0 @@
-/*
- * StandalonePlayer.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp;
-
-import java.awt.Dimension;
-import java.awt.Point;
-import java.awt.event.ActionEvent;
-import java.awt.event.KeyEvent;
-import java.awt.event.MouseEvent;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.net.URL;
-import java.util.Iterator;
-import java.util.List;
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.ImageIcon;
-import javax.swing.JComponent;
-import javax.swing.JFrame;
-import javax.swing.JWindow;
-import javax.swing.KeyStroke;
-import javax.swing.SwingUtilities;
-import javax.swing.UIManager;
-import javazoom.jlgui.basicplayer.BasicPlayer;
-import javazoom.jlgui.player.amp.skin.DragAdapter;
-import javazoom.jlgui.player.amp.skin.Skin;
-import javazoom.jlgui.player.amp.util.Config;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public class StandalonePlayer extends JFrame implements Loader
-{
- private static Log log = LogFactory.getLog(StandalonePlayer.class);
- /*-- Run parameters --*/
- private String initConfig = "jlgui.ini";
- private String initSong = null;
- private String showPlaylist = null;
- private String showEqualizer = null;
- private String showDsp = null;
- private String skinPath = null;
- private String skinVersion = "1"; // 1, 2, for different Volume.bmp
- private boolean autoRun = false;
- /*-- Front-end --*/
- private PlayerUI mp = null;
- private JWindow eqWin = null;
- private JWindow plWin = null;
- private int eqFactor = 2;
- private Config config = null;
- private boolean playlistfound = false;
-
- public StandalonePlayer()
- {
- super();
- }
-
- /**
- * @param args
- */
- public static void main(String[] args)
- {
- final StandalonePlayer player = new StandalonePlayer();
- player.parseParameters(args);
- SwingUtilities.invokeLater(new Runnable()
- {
- public void run()
- {
- player.loadUI();
- player.loadJS();
- player.loadPlaylist();
- player.boot();
- }
- });
- }
-
- /**
- * Initialize the player front-end.
- * @param args
- */
- private void parseParameters(String[] args)
- {
- String currentArg = null;
- String currentValue = null;
- for (int i = 0; i < args.length; i++)
- {
- currentArg = args[i];
- if (currentArg.startsWith("-"))
- {
- if (currentArg.toLowerCase().equals("-init"))
- {
- i++;
- if (i >= args.length) usage("init value missing");
- currentValue = args[i];
- if (Config.startWithProtocol(currentValue)) initConfig = currentValue;
- else initConfig = currentValue.replace('\\', '/').replace('/', java.io.File.separatorChar);
- }
- else if (currentArg.toLowerCase().equals("-song"))
- {
- i++;
- if (i >= args.length) usage("song value missing");
- currentValue = args[i];
- if (Config.startWithProtocol(currentValue)) initSong = currentValue;
- else initSong = currentValue.replace('\\', '/').replace('/', java.io.File.separatorChar);
- }
- else if (currentArg.toLowerCase().equals("-start"))
- {
- autoRun = true;
- }
- else if (currentArg.toLowerCase().equals("-showplaylist"))
- {
- showPlaylist = "true";
- }
- else if (currentArg.toLowerCase().equals("-showequalizer"))
- {
- showEqualizer = "true";
- }
- else if (currentArg.toLowerCase().equals("-disabledsp"))
- {
- showDsp = "false";
- }
- else if (currentArg.toLowerCase().equals("-skin"))
- {
- i++;
- if (i >= args.length) usage("skin value missing");
- currentValue = args[i];
- if (Config.startWithProtocol(currentValue)) skinPath = currentValue;
- else skinPath = currentValue.replace('\\', '/').replace('/', java.io.File.separatorChar);
- }
- else if (currentArg.toLowerCase().equals("-v"))
- {
- i++;
- if (i >= args.length) usage("skin version value missing");
- skinVersion = args[i];
- }
- else usage("Unknown parameter : " + currentArg);
- }
- else
- {
- usage("Invalid parameter :" + currentArg);
- }
- }
- }
-
- private void boot()
- {
- // Go to playlist begining if needed.
- /*if ((playlist != null) && (playlistfound == true))
- {
- if (playlist.getPlaylistSize() > 0) mp.pressNext();
- } */
- // Start playing if needed.
- if (autoRun == true)
- {
- mp.pressStart();
- }
- }
-
- /**
- * Instantiate low-level player.
- */
- public void loadJS()
- {
- BasicPlayer bplayer = new BasicPlayer();
- List mixers = bplayer.getMixers();
- if (mixers != null)
- {
- Iterator it = mixers.iterator();
- String mixer = config.getAudioDevice();
- boolean mixerFound = false;
- if ((mixer != null) && (mixer.length() > 0))
- {
- // Check if mixer is valid.
- while (it.hasNext())
- {
- if (((String) it.next()).equals(mixer))
- {
- bplayer.setMixerName(mixer);
- mixerFound = true;
- break;
- }
- }
- }
- if (mixerFound == false)
- {
- // Use first mixer available.
- it = mixers.iterator();
- if (it.hasNext())
- {
- mixer = (String) it.next();
- bplayer.setMixerName(mixer);
- }
- }
- }
- // Register the front-end to low-level player events.
- bplayer.addBasicPlayerListener(mp);
- // Adds controls for front-end to low-level player.
- mp.setController(bplayer);
- }
-
- /**
- * Load playlist.
- */
- public void loadPlaylist()
- {
- if ((initSong != null) && (!initSong.equals(""))) playlistfound = mp.loadPlaylist(initSong);
- else playlistfound = mp.loadPlaylist(config.getPlaylistFilename());
- }
-
- /**
- * Load player front-end.
- */
- public void loadUI()
- {
- try
- {
- UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
- }
- catch (Exception ex)
- {
- log.debug(ex);
- }
- config = Config.getInstance();
- config.load(initConfig);
- //config.setTopParent(this);
- if (showPlaylist != null)
- {
- if (showPlaylist.equalsIgnoreCase("true"))
- {
- config.setPlaylistEnabled(true);
- }
- else
- {
- config.setPlaylistEnabled(false);
- }
- }
- if (showEqualizer != null)
- {
- if (showEqualizer.equalsIgnoreCase("true"))
- {
- config.setEqualizerEnabled(true);
- }
- else
- {
- config.setEqualizerEnabled(false);
- }
- }
- if (config.isPlaylistEnabled()) eqFactor = 2;
- else eqFactor = 1;
- setTitle(Skin.TITLETEXT);
- ClassLoader cl = this.getClass().getClassLoader();
- URL iconURL = cl.getResource("javazoom/jlgui/player/amp/jlguiicon.gif");
- if (iconURL != null)
- {
- ImageIcon jlguiIcon = new ImageIcon(iconURL);
- setIconImage(jlguiIcon.getImage());
- config.setIconParent(jlguiIcon);
- }
- setUndecorated(true);
- mp = new PlayerUI();
- if ((showDsp != null) && (showDsp.equalsIgnoreCase("false")))
- {
- mp.getSkin().setDspEnabled(false);
- }
- if (skinPath != null)
- {
- mp.getSkin().setPath(skinPath);
- }
- mp.getSkin().setSkinVersion(skinVersion);
- mp.loadUI(this);
- setContentPane(mp);
- setSize(new Dimension(mp.getSkin().getMainWidth(), mp.getSkin().getMainHeight()));
- /*eqWin = new JWindow(this);
- eqWin.setContentPane(mp.getEqualizerUI());
- eqWin.setSize(new Dimension(mp.getSkin().getMainWidth(), mp.getSkin().getMainHeight()));
- eqWin.setVisible(false);
- plWin = new JWindow(this);
- plWin.setContentPane(mp.getPlaylistUI());
- plWin.setSize(new Dimension(mp.getSkin().getMainWidth(), mp.getSkin().getMainHeight()));
- plWin.setVisible(false);*/
- // Window listener
- addWindowListener(new WindowAdapter()
- {
- public void windowClosing(WindowEvent e)
- {
- // Closing window (Alt+F4 under Win32)
- close();
- }
- });
- // Keyboard shortcut
- //setKeyBoardShortcut();
- // Display front-end
- setLocation(config.getXLocation(), config.getYLocation());
- setVisible(true);
- //if (config.isPlaylistEnabled()) plWin.setVisible(true);
- //if (config.isEqualizerEnabled()) eqWin.setVisible(true);
- }
-
- /**
- * Install keyboard shortcuts.
- */
- /*public void setKeyBoardShortcut()
- {
- KeyStroke jKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_J, 0, false);
- KeyStroke ctrlPKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_P, KeyEvent.CTRL_MASK, false);
- KeyStroke altSKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.ALT_MASK, false);
- KeyStroke vKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_V, 0, false);
- String searchID = "TAGSEARCH";
- String preferenceID = "PREFERENCES";
- String skinbrowserID = "SKINBROWSER";
- String stopplayerID = "STOPPLAYER";
- Action searchAction = new AbstractAction()
- {
- public void actionPerformed(ActionEvent e)
- {
- if (mp != null) mp.processJumpToFile(e.getModifiers());
- }
- };
- Action preferencesAction = new AbstractAction()
- {
- public void actionPerformed(ActionEvent e)
- {
- if (mp != null) mp.processPreferences(e.getModifiers());
- }
- };
- Action skinbrowserAction = new AbstractAction()
- {
- public void actionPerformed(ActionEvent e)
- {
- if (mp != null) mp.processSkinBrowser(e.getModifiers());
- }
- };
- Action stopplayerAction = new AbstractAction()
- {
- public void actionPerformed(ActionEvent e)
- {
- if (mp != null) mp.processStop(MouseEvent.BUTTON1_MASK);
- }
- };
- setKeyboardAction(searchID, jKeyStroke, searchAction);
- setKeyboardAction(preferenceID, ctrlPKeyStroke, preferencesAction);
- setKeyboardAction(skinbrowserID, altSKeyStroke, skinbrowserAction);
- setKeyboardAction(stopplayerID, vKeyStroke, stopplayerAction);
- }*/
-
- /**
- * Set keyboard key shortcut for the whole player.
- * @param id
- * @param key
- * @param action
- */
- /*public void setKeyboardAction(String id, KeyStroke key, Action action)
- {
- mp.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(key, id);
- mp.getActionMap().put(id, action);
- mp.getPlaylistUI().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(key, id);
- mp.getPlaylistUI().getActionMap().put(id, action);
- mp.getEqualizerUI().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(key, id);
- mp.getEqualizerUI().getActionMap().put(id, action);
- }*/
-
- public void loaded()
- {
- /*DragAdapter dragAdapter = new DragAdapter(this);
- mp.getSkin().getAcTitleBar().addMouseListener(dragAdapter);
- mp.getSkin().getAcTitleBar().addMouseMotionListener(dragAdapter);*/
- }
-
- public void close()
- {
- log.info("Close player");
- config.setLocation(getLocation().x, getLocation().y);
- config.save();
- dispose();
- exit(0);
- }
-
- /* (non-Javadoc)
- * @see javazoom.jlgui.player.amp.skin.Loader#togglePlaylist(boolean)
- */
- /*public void togglePlaylist(boolean enabled)
- {
- if (plWin != null)
- {
- if (enabled)
- {
- if (config.isEqualizerEnabled())
- {
- eqFactor = 2;
- eqWin.setLocation(getLocation().x, getLocation().y + mp.getSkin().getMainHeight() * eqFactor);
- }
- plWin.setVisible(true);
- }
- else
- {
- plWin.setVisible(false);
- if (config.isEqualizerEnabled())
- {
- eqFactor = 1;
- eqWin.setLocation(getLocation().x, getLocation().y + mp.getSkin().getMainHeight() * eqFactor);
- }
- }
- }
- }*/
-
- public void toggleEqualizer(boolean enabled)
- {
- if (eqWin != null)
- {
- if (enabled)
- {
- if (config.isPlaylistEnabled()) eqFactor = 2;
- else eqFactor = 1;
- eqWin.setLocation(getLocation().x, getLocation().y + mp.getSkin().getMainHeight() * eqFactor);
- eqWin.setVisible(true);
- }
- else
- {
- eqWin.setVisible(false);
- }
- }
- }
-
- public void minimize()
- {
- setState(JFrame.ICONIFIED);
- }
-
- public void setLocation(int x, int y)
- {
- super.setLocation(x, y);
- if (plWin != null)
- {
- plWin.setLocation(getLocation().x, getLocation().y + getHeight());
- }
- if (eqWin != null)
- {
- eqWin.setLocation(getLocation().x, getLocation().y + eqFactor * getHeight());
- }
- }
-
- public Point getLocation()
- {
- return super.getLocation();
- }
-
- /**
- * Kills the player.
- * @param status
- */
- public void exit(int status)
- {
- System.exit(status);
- }
-
- /**
- * Displays usage.
- * @param msg
- */
- protected static void usage(String msg)
- {
- System.out.println(Skin.TITLETEXT + " : " + msg);
- System.out.println("");
- System.out.println(Skin.TITLETEXT + " : Usage");
- System.out.println(" java javazoom.jlgui.player.amp.Player [-skin skinFilename] [-song audioFilename] [-start] [-showplaylist] [-showequalizer] [-disabledsp] [-init configFilename] [-v skinversion]");
- System.out.println("");
- System.out.println(" skinFilename : Filename or URL to a Winamp Skin2.x");
- System.out.println(" audioFilename : Filename or URL to initial song or playlist");
- System.out.println(" start : Starts playing song (from the playlist)");
- System.out.println(" showplaylist : Show playlist");
- System.out.println(" showequalizer : Show equalizer");
- System.out.println(" disabledsp : Disable spectrum/time visual");
- System.out.println("");
- System.out.println(" Advanced parameters :");
- System.out.println(" skinversion : 1 or 2 (default 1)");
- System.out.println(" configFilename : Filename or URL to jlGui initial configuration (playlist,skin,parameters ...)");
- System.out.println(" Initial configuration won't be overriden by -skin and -song arguments");
- System.out.println("");
- System.out.println("Homepage : http://www.javazoom.net");
- System.exit(0);
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/equalizer/ui/ControlCurve.java b/java/src/javazoom/jlgui/player/amp/equalizer/ui/ControlCurve.java
deleted file mode 100644
index 951d879..0000000
--- a/java/src/javazoom/jlgui/player/amp/equalizer/ui/ControlCurve.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * ControlCurve.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.equalizer.ui;
-
-import java.awt.Polygon;
-
-public abstract class ControlCurve
-{
- static final int EPSILON = 36; /* square of distance for picking */
- protected Polygon pts;
- protected int selection = -1;
- int maxHeight = -1;
- int minHeight = -1;
-
- public ControlCurve()
- {
- pts = new Polygon();
- }
-
- public int boundY(int y)
- {
- int ny = y;
- if ((minHeight >= 0) && (y < minHeight))
- {
- ny = 0;
- }
- if ((maxHeight >= 0) && (y >= maxHeight))
- {
- ny = maxHeight - 1;
- }
- return ny;
- }
-
- public void setMaxHeight(int h)
- {
- maxHeight = h;
- }
-
- public void setMinHeight(int h)
- {
- minHeight = h;
- }
-
- /**
- * Return index of control point near to (x,y) or -1 if nothing near.
- * @param x
- * @param y
- * @return
- */
- public int selectPoint(int x, int y)
- {
- int mind = Integer.MAX_VALUE;
- selection = -1;
- for (int i = 0; i < pts.npoints; i++)
- {
- int d = sqr(pts.xpoints[i] - x) + sqr(pts.ypoints[i] - y);
- if (d < mind && d < EPSILON)
- {
- mind = d;
- selection = i;
- }
- }
- return selection;
- }
-
- /**
- * Square of an int.
- * @param x
- * @return
- */
- static int sqr(int x)
- {
- return x * x;
- }
-
- /**
- * Add a control point, return index of new control point.
- * @param x
- * @param y
- * @return
- */
- public int addPoint(int x, int y)
- {
- pts.addPoint(x, y);
- return selection = pts.npoints - 1;
- }
-
- /**
- * Set selected control point.
- * @param x
- * @param y
- */
- public void setPoint(int x, int y)
- {
- if (selection >= 0)
- {
- pts.xpoints[selection] = x;
- pts.ypoints[selection] = y;
- }
- }
-
- /**
- * Remove selected control point.
- */
- public void removePoint()
- {
- if (selection >= 0)
- {
- pts.npoints--;
- for (int i = selection; i < pts.npoints; i++)
- {
- pts.xpoints[i] = pts.xpoints[i + 1];
- pts.ypoints[i] = pts.ypoints[i + 1];
- }
- }
- }
-
- public abstract Polygon getPolyline();
-}
diff --git a/java/src/javazoom/jlgui/player/amp/equalizer/ui/Cubic.java b/java/src/javazoom/jlgui/player/amp/equalizer/ui/Cubic.java
deleted file mode 100644
index f2471e4..0000000
--- a/java/src/javazoom/jlgui/player/amp/equalizer/ui/Cubic.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Cubic.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.equalizer.ui;
-
-public class Cubic
-{
- float a, b, c, d; /* a + b*u + c*u^2 +d*u^3 */
-
- public Cubic(float a, float b, float c, float d)
- {
- this.a = a;
- this.b = b;
- this.c = c;
- this.d = d;
- }
-
- /**
- * Evaluate cubic.
- * @param u
- * @return
- */
- public float eval(float u)
- {
- return (((d * u) + c) * u + b) * u + a;
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/equalizer/ui/EqualizerUI.java b/java/src/javazoom/jlgui/player/amp/equalizer/ui/EqualizerUI.java
deleted file mode 100644
index 7410296..0000000
--- a/java/src/javazoom/jlgui/player/amp/equalizer/ui/EqualizerUI.java
+++ /dev/null
@@ -1,441 +0,0 @@
-/*
- * EqualizerUI.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.equalizer.ui;
-
-import java.awt.dnd.DnDConstants;
-import java.awt.dnd.DropTarget;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseEvent;
-import javax.swing.JMenuItem;
-import javax.swing.JPanel;
-import javax.swing.JPopupMenu;
-import javax.swing.SwingUtilities;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import javazoom.jlgui.player.amp.PlayerActionEvent;
-import javazoom.jlgui.player.amp.PlayerUI;
-import javazoom.jlgui.player.amp.skin.AbsoluteLayout;
-import javazoom.jlgui.player.amp.skin.DropTargetAdapter;
-import javazoom.jlgui.player.amp.skin.ImageBorder;
-import javazoom.jlgui.player.amp.skin.Skin;
-import javazoom.jlgui.player.amp.util.Config;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * This class implements an equalizer UI.
- *
- * The equalizer consists of 32 band-pass filters.
- * Each band of the equalizer can take on a fractional value between
- * -1.0 and +1.0.
- * At -1.0, the input signal is attenuated by 6dB, at +1.0 the signal is
- * amplified by 6dB.
- */
-public class EqualizerUI extends JPanel implements ActionListener, ChangeListener
-{
- private static Log log = LogFactory.getLog(EqualizerUI.class);
- private int minGain = 0;
- private int maxGain = 100;
- private int[] gainValue = { 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50 };
- private int[] PRESET_NORMAL = { 50, 50, 50, 50, 50, 50, 50, 50, 50, 50 };
- private int[] PRESET_CLASSICAL = { 50, 50, 50, 50, 50, 50, 70, 70, 70, 76 };
- private int[] PRESET_CLUB = { 50, 50, 42, 34, 34, 34, 42, 50, 50, 50 };
- private int[] PRESET_DANCE = { 26, 34, 46, 50, 50, 66, 70, 70, 50, 50 };
- private int[] PRESET_FULLBASS = { 26, 26, 26, 36, 46, 62, 76, 78, 78, 78 };
- private int[] PRESET_FULLBASSTREBLE = { 34, 34, 50, 68, 62, 46, 28, 22, 18, 18 };
- private int[] PRESET_FULLTREBLE = { 78, 78, 78, 62, 42, 24, 8, 8, 8, 8 };
- private int[] PRESET_LAPTOP = { 38, 22, 36, 60, 58, 46, 38, 24, 16, 14 };
- private int[] PRESET_LIVE = { 66, 50, 40, 36, 34, 34, 40, 42, 42, 42 };
- private int[] PRESET_PARTY = { 32, 32, 50, 50, 50, 50, 50, 50, 32, 32 };
- private int[] PRESET_POP = { 56, 38, 32, 30, 38, 54, 56, 56, 54, 54 };
- private int[] PRESET_REGGAE = { 48, 48, 50, 66, 48, 34, 34, 48, 48, 48 };
- private int[] PRESET_ROCK = { 32, 38, 64, 72, 56, 40, 28, 24, 24, 24 };
- private int[] PRESET_TECHNO = { 30, 34, 48, 66, 64, 48, 30, 24, 24, 28 };
- private Config config = null;
- private PlayerUI player = null;
- private Skin ui = null;
- private JPopupMenu mainpopup = null;
- public static final int LINEARDIST = 1;
- public static final int OVERDIST = 2;
- private float[] bands = null;
- private int[] eqgains = null;
- private int eqdist = OVERDIST;
-
- public EqualizerUI()
- {
- super();
- setDoubleBuffered(true);
- config = Config.getInstance();
- eqgains = new int[10];
- setLayout(new AbsoluteLayout());
- int[] vals = config.getLastEqualizer();
- if (vals != null)
- {
- for (int h = 0; h < vals.length; h++)
- {
- gainValue[h] = vals[h];
- }
- }
- // DnD support disabled.
- DropTargetAdapter dnd = new DropTargetAdapter()
- {
- public void processDrop(Object data)
- {
- return;
- }
- };
- DropTarget dt = new DropTarget(this, DnDConstants.ACTION_COPY, dnd, false);
- }
-
- /**
- * Return skin.
- * @return
- */
- public Skin getSkin()
- {
- return ui;
- }
-
- /**
- * Set skin.
- * @param ui
- */
- public void setSkin(Skin ui)
- {
- this.ui = ui;
- }
-
- /**
- * Set parent player.
- * @param mp
- */
- public void setPlayer(PlayerUI mp)
- {
- player = mp;
- }
-
- public void loadUI()
- {
- log.info("Load EqualizerUI (EDT=" + SwingUtilities.isEventDispatchThread() + ")");
- removeAll();
- // Background
- ImageBorder border = new ImageBorder();
- border.setImage(ui.getEqualizerImage());
- setBorder(border);
- // On/Off
- add(ui.getAcEqOnOff(), ui.getAcEqOnOff().getConstraints());
- ui.getAcEqOnOff().removeActionListener(this);
- ui.getAcEqOnOff().addActionListener(this);
- // Auto
- add(ui.getAcEqAuto(), ui.getAcEqAuto().getConstraints());
- ui.getAcEqAuto().removeActionListener(this);
- ui.getAcEqAuto().addActionListener(this);
- // Sliders
- add(ui.getAcEqPresets(), ui.getAcEqPresets().getConstraints());
- for (int i = 0; i < ui.getAcEqSliders().length; i++)
- {
- add(ui.getAcEqSliders()[i], ui.getAcEqSliders()[i].getConstraints());
- ui.getAcEqSliders()[i].setValue(maxGain - gainValue[i]);
- ui.getAcEqSliders()[i].removeChangeListener(this);
- ui.getAcEqSliders()[i].addChangeListener(this);
- }
- if (ui.getSpline() != null)
- {
- ui.getSpline().setValues(gainValue);
- add(ui.getSpline(), ui.getSpline().getConstraints());
- }
- // Popup menu on TitleBar
- mainpopup = new JPopupMenu();
- String[] presets = { "Normal", "Classical", "Club", "Dance", "Full Bass", "Full Bass & Treble", "Full Treble", "Laptop", "Live", "Party", "Pop", "Reggae", "Rock", "Techno" };
- JMenuItem mi;
- for (int p = 0; p < presets.length; p++)
- {
- mi = new JMenuItem(presets[p]);
- mi.removeActionListener(this);
- mi.addActionListener(this);
- mainpopup.add(mi);
- }
- ui.getAcEqPresets().removeActionListener(this);
- ui.getAcEqPresets().addActionListener(this);
- validate();
- }
-
- /* (non-Javadoc)
- * @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent)
- */
- public void stateChanged(ChangeEvent e)
- {
- for (int i = 0; i < ui.getAcEqSliders().length; i++)
- {
- gainValue[i] = maxGain - ui.getAcEqSliders()[i].getValue();
- }
- if (ui.getSpline() != null) ui.getSpline().repaint();
- // Apply equalizer values.
- synchronizeEqualizer();
- }
-
- /**
- * Set bands array for equalizer.
- *
- * @param bands
- */
- public void setBands(float[] bands)
- {
- this.bands = bands;
- }
-
- /**
- * Apply equalizer function.
- *
- * @param gains
- * @param min
- * @param max
- */
- public void updateBands(int[] gains, int min, int max)
- {
- if ((gains != null) && (bands != null))
- {
- int j = 0;
- float gvalj = (gains[j] * 2.0f / (max - min) * 1.0f) - 1.0f;
- float gvalj1 = (gains[j + 1] * 2.0f / (max - min) * 1.0f) - 1.0f;
- // Linear distribution : 10 values => 32 values.
- if (eqdist == LINEARDIST)
- {
- float a = (gvalj1 - gvalj) * 1.0f;
- float b = gvalj * 1.0f - (gvalj1 - gvalj) * j;
- // x=s*x'
- float s = (gains.length - 1) * 1.0f / (bands.length - 1) * 1.0f;
- for (int i = 0; i < bands.length; i++)
- {
- float ind = s * i;
- if (ind > (j + 1))
- {
- j++;
- gvalj = (gains[j] * 2.0f / (max - min) * 1.0f) - 1.0f;
- gvalj1 = (gains[j + 1] * 2.0f / (max - min) * 1.0f) - 1.0f;
- a = (gvalj1 - gvalj) * 1.0f;
- b = gvalj * 1.0f - (gvalj1 - gvalj) * j;
- }
- // a*x+b
- bands[i] = a * i * 1.0f * s + b;
- }
- }
- // Over distribution : 10 values => 10 first value of 32 values.
- else if (eqdist == OVERDIST)
- {
- for (int i = 0; i < gains.length; i++)
- {
- bands[i] = (gains[i] * 2.0f / (max - min) * 1.0f) - 1.0f;
- }
- }
- }
- }
-
- /* (non-Javadoc)
- * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
- */
- public void actionPerformed(ActionEvent e)
- {
- String cmd = e.getActionCommand();
- log.debug("Action=" + cmd + " (EDT=" + SwingUtilities.isEventDispatchThread() + ")");
- // On/Off
- if (cmd.equals(PlayerActionEvent.ACEQONOFF))
- {
- if (ui.getAcEqOnOff().isSelected())
- {
- config.setEqualizerOn(true);
- }
- else
- {
- config.setEqualizerOn(false);
- }
- synchronizeEqualizer();
- }
- // Auto
- else if (cmd.equals(PlayerActionEvent.ACEQAUTO))
- {
- if (ui.getAcEqAuto().isSelected())
- {
- config.setEqualizerAuto(true);
- }
- else
- {
- config.setEqualizerAuto(false);
- }
- }
- // Presets
- else if (cmd.equals(PlayerActionEvent.ACEQPRESETS))
- {
- if (e.getModifiers() == MouseEvent.BUTTON1_MASK)
- {
- mainpopup.show(this, ui.getAcEqPresets().getLocation().x, ui.getAcEqPresets().getLocation().y);
- }
- }
- else if (cmd.equals("Normal"))
- {
- updateSliders(PRESET_NORMAL);
- synchronizeEqualizer();
- }
- else if (cmd.equals("Classical"))
- {
- updateSliders(PRESET_CLASSICAL);
- synchronizeEqualizer();
- }
- else if (cmd.equals("Club"))
- {
- updateSliders(PRESET_CLUB);
- synchronizeEqualizer();
- }
- else if (cmd.equals("Dance"))
- {
- updateSliders(PRESET_DANCE);
- synchronizeEqualizer();
- }
- else if (cmd.equals("Full Bass"))
- {
- updateSliders(PRESET_FULLBASS);
- synchronizeEqualizer();
- }
- else if (cmd.equals("Full Bass & Treble"))
- {
- updateSliders(PRESET_FULLBASSTREBLE);
- synchronizeEqualizer();
- }
- else if (cmd.equals("Full Treble"))
- {
- updateSliders(PRESET_FULLTREBLE);
- synchronizeEqualizer();
- }
- else if (cmd.equals("Laptop"))
- {
- updateSliders(PRESET_LAPTOP);
- synchronizeEqualizer();
- }
- else if (cmd.equals("Live"))
- {
- updateSliders(PRESET_LIVE);
- synchronizeEqualizer();
- }
- else if (cmd.equals("Party"))
- {
- updateSliders(PRESET_PARTY);
- synchronizeEqualizer();
- }
- else if (cmd.equals("Pop"))
- {
- updateSliders(PRESET_POP);
- synchronizeEqualizer();
- }
- else if (cmd.equals("Reggae"))
- {
- updateSliders(PRESET_REGGAE);
- synchronizeEqualizer();
- }
- else if (cmd.equals("Rock"))
- {
- updateSliders(PRESET_ROCK);
- synchronizeEqualizer();
- }
- else if (cmd.equals("Techno"))
- {
- updateSliders(PRESET_TECHNO);
- synchronizeEqualizer();
- }
- }
-
- /**
- * Update sliders from gains array.
- *
- * @param gains
- */
- public void updateSliders(int[] gains)
- {
- if (gains != null)
- {
- for (int i = 0; i < gains.length; i++)
- {
- gainValue[i + 1] = gains[i];
- ui.getAcEqSliders()[i + 1].setValue(maxGain - gainValue[i + 1]);
- }
- }
- }
-
- /**
- * Apply equalizer values.
- */
- public void synchronizeEqualizer()
- {
- config.setLastEqualizer(gainValue);
- if (config.isEqualizerOn())
- {
- for (int j = 0; j < eqgains.length; j++)
- {
- eqgains[j] = -gainValue[j + 1] + maxGain;
- }
- updateBands(eqgains, minGain, maxGain);
- }
- else
- {
- for (int j = 0; j < eqgains.length; j++)
- {
- eqgains[j] = (maxGain - minGain) / 2;
- }
- updateBands(eqgains, minGain, maxGain);
- }
- }
-
- /**
- * Return equalizer bands distribution.
- * @return
- */
- public int getEqdist()
- {
- return eqdist;
- }
-
- /**
- * Set equalizer bands distribution.
- * @param i
- */
- public void setEqdist(int i)
- {
- eqdist = i;
- }
-
- /**
- * Simulates "On/Off" selection.
- */
- public void pressOnOff()
- {
- ui.getAcEqOnOff().doClick();
- }
-
- /**
- * Simulates "Auto" selection.
- */
- public void pressAuto()
- {
- ui.getAcEqAuto().doClick();
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/equalizer/ui/NaturalSpline.java b/java/src/javazoom/jlgui/player/amp/equalizer/ui/NaturalSpline.java
deleted file mode 100644
index 6e0ba31..0000000
--- a/java/src/javazoom/jlgui/player/amp/equalizer/ui/NaturalSpline.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * NaturalSpline.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.equalizer.ui;
-
-import java.awt.Polygon;
-
-public class NaturalSpline extends ControlCurve
-{
- public final int STEPS = 12;
-
- public NaturalSpline()
- {
- super();
- }
-
- /*
- * calculates the natural cubic spline that interpolates y[0], y[1], ...
- * y[n] The first segment is returned as C[0].a + C[0].b*u + C[0].c*u^2 +
- * C[0].d*u^3 0<=u <1 the other segments are in C[1], C[2], ... C[n-1]
- */
- Cubic[] calcNaturalCubic(int n, int[] x)
- {
- float[] gamma = new float[n + 1];
- float[] delta = new float[n + 1];
- float[] D = new float[n + 1];
- int i;
- /*
- * We solve the equation [2 1 ] [D[0]] [3(x[1] - x[0]) ] |1 4 1 | |D[1]|
- * |3(x[2] - x[0]) | | 1 4 1 | | . | = | . | | ..... | | . | | . | | 1 4
- * 1| | . | |3(x[n] - x[n-2])| [ 1 2] [D[n]] [3(x[n] - x[n-1])]
- *
- * by using row operations to convert the matrix to upper triangular and
- * then back sustitution. The D[i] are the derivatives at the knots.
- */
- gamma[0] = 1.0f / 2.0f;
- for (i = 1; i < n; i++)
- {
- gamma[i] = 1 / (4 - gamma[i - 1]);
- }
- gamma[n] = 1 / (2 - gamma[n - 1]);
- delta[0] = 3 * (x[1] - x[0]) * gamma[0];
- for (i = 1; i < n; i++)
- {
- delta[i] = (3 * (x[i + 1] - x[i - 1]) - delta[i - 1]) * gamma[i];
- }
- delta[n] = (3 * (x[n] - x[n - 1]) - delta[n - 1]) * gamma[n];
- D[n] = delta[n];
- for (i = n - 1; i >= 0; i--)
- {
- D[i] = delta[i] - gamma[i] * D[i + 1];
- }
- /* now compute the coefficients of the cubics */
- Cubic[] C = new Cubic[n];
- for (i = 0; i < n; i++)
- {
- C[i] = new Cubic((float) x[i], D[i], 3 * (x[i + 1] - x[i]) - 2 * D[i] - D[i + 1], 2 * (x[i] - x[i + 1]) + D[i] + D[i + 1]);
- }
- return C;
- }
-
- /**
- * Return a cubic spline.
- */
- public Polygon getPolyline()
- {
- Polygon p = new Polygon();
- if (pts.npoints >= 2)
- {
- Cubic[] X = calcNaturalCubic(pts.npoints - 1, pts.xpoints);
- Cubic[] Y = calcNaturalCubic(pts.npoints - 1, pts.ypoints);
- // very crude technique - just break each segment up into steps lines
- int x = (int) Math.round(X[0].eval(0));
- int y = (int) Math.round(Y[0].eval(0));
- p.addPoint(x, boundY(y));
- for (int i = 0; i < X.length; i++)
- {
- for (int j = 1; j <= STEPS; j++)
- {
- float u = j / (float) STEPS;
- x = Math.round(X[i].eval(u));
- y = Math.round(Y[i].eval(u));
- p.addPoint(x, boundY(y));
- }
- }
- }
- return p;
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/equalizer/ui/SplinePanel.java b/java/src/javazoom/jlgui/player/amp/equalizer/ui/SplinePanel.java
deleted file mode 100644
index df2a091..0000000
--- a/java/src/javazoom/jlgui/player/amp/equalizer/ui/SplinePanel.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * SplinePanel.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.equalizer.ui;
-
-import java.awt.Color;
-import java.awt.Graphics;
-import java.awt.Image;
-import java.awt.Polygon;
-import javax.swing.JPanel;
-import javazoom.jlgui.player.amp.skin.AbsoluteConstraints;
-
-public class SplinePanel extends JPanel
-{
- private AbsoluteConstraints constraints = null;
- private Image backgroundImage = null;
- private Image barImage = null;
- private int[] values = null;
- private Color[] gradient = null;
-
- public SplinePanel()
- {
- super();
- setDoubleBuffered(true);
- setLayout(null);
- }
-
- public Color[] getGradient()
- {
- return gradient;
- }
-
- public void setGradient(Color[] gradient)
- {
- this.gradient = gradient;
- }
-
- public void setConstraints(AbsoluteConstraints cnts)
- {
- constraints = cnts;
- }
-
- public AbsoluteConstraints getConstraints()
- {
- return constraints;
- }
-
- public Image getBarImage()
- {
- return barImage;
- }
-
- public void setBarImage(Image barImage)
- {
- this.barImage = barImage;
- }
-
- public Image getBackgroundImage()
- {
- return backgroundImage;
- }
-
- public void setBackgroundImage(Image backgroundImage)
- {
- this.backgroundImage = backgroundImage;
- }
-
- public int[] getValues()
- {
- return values;
- }
-
- public void setValues(int[] values)
- {
- this.values = values;
- }
-
- /* (non-Javadoc)
- * @see javax.swing.JComponent#paintComponent(java.awt.Graphics)
- */
- public void paintComponent(Graphics g)
- {
- if (backgroundImage != null) g.drawImage(backgroundImage, 0, 0, null);
- if (barImage != null) g.drawImage(barImage, 0, getHeight()/2, null);
- if ((values != null) && (values.length > 0))
- {
- NaturalSpline curve = new NaturalSpline();
- float dx = 1.0f * getWidth() / (values.length - 2);
- int h = getHeight();
- curve.setMaxHeight(h);
- curve.setMinHeight(0);
- for (int i = 1; i < values.length; i++)
- {
- int x1 = (int) Math.round(dx * (i - 1));
- int y1 = ((int) Math.round((h * values[i] / 100)));
- y1 = curve.boundY(y1);
- curve.addPoint(x1, y1);
- }
- Polygon spline = curve.getPolyline();
- if (gradient != null)
- {
- for (int i=0;i<(spline.npoints-1);i++)
- {
- g.setColor(gradient[spline.ypoints[i]]);
- g.drawLine(spline.xpoints[i], spline.ypoints[i],spline.xpoints[i+1], spline.ypoints[i+1]);
- }
- }
- else
- {
- g.drawPolyline(spline.xpoints, spline.ypoints, spline.npoints);
- }
- }
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/jlguiicon.gif b/java/src/javazoom/jlgui/player/amp/jlguiicon.gif
deleted file mode 100644
index d44ea31..0000000
Binary files a/java/src/javazoom/jlgui/player/amp/jlguiicon.gif and /dev/null differ
diff --git a/java/src/javazoom/jlgui/player/amp/metrix.wsz b/java/src/javazoom/jlgui/player/amp/metrix.wsz
deleted file mode 100644
index 58fd9ad..0000000
Binary files a/java/src/javazoom/jlgui/player/amp/metrix.wsz and /dev/null differ
diff --git a/java/src/javazoom/jlgui/player/amp/playlist/BasePlaylist.java b/java/src/javazoom/jlgui/player/amp/playlist/BasePlaylist.java
deleted file mode 100644
index ee21df1..0000000
--- a/java/src/javazoom/jlgui/player/amp/playlist/BasePlaylist.java
+++ /dev/null
@@ -1,586 +0,0 @@
-/*
- * BasePlaylist.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.playlist;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.URL;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.StringTokenizer;
-import java.util.Vector;
-import javazoom.jlgui.player.amp.util.Config;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * BasePlaylist implementation.
- * This class implements Playlist interface using a Vector.
- * It support .m3u and .pls playlist format.
- */
-public class BasePlaylist implements Playlist
-{
- protected Vector _playlist = null;
- protected int _cursorPos = -1;
- protected boolean isModified;
- protected String M3UHome = null;
- protected String PLSHome = null;
- private static Log log = LogFactory.getLog(BasePlaylist.class);
-
- /**
- * Constructor.
- */
- public BasePlaylist()
- {
- _playlist = new Vector();
- }
-
- public boolean isModified()
- {
- return isModified;
- }
-
- /**
- * Loads playlist as M3U format.
- */
- public boolean load(String filename)
- {
- setModified(true);
- boolean loaded = false;
- if ((filename != null) && (filename.toLowerCase().endsWith(".m3u")))
- {
- loaded = loadM3U(filename);
- }
- else if ((filename != null) && (filename.toLowerCase().endsWith(".pls")))
- {
- loaded = loadPLS(filename);
- }
- return loaded;
- }
-
- /**
- * Load playlist from M3U format.
- *
- * @param filename
- * @return
- */
- protected boolean loadM3U(String filename)
- {
- Config config = Config.getInstance();
- _playlist = new Vector();
- boolean loaded = false;
- BufferedReader br = null;
- try
- {
- // Playlist from URL ? (http:, ftp:, file: ....)
- if (Config.startWithProtocol(filename))
- {
- br = new BufferedReader(new InputStreamReader((new URL(filename)).openStream()));
- }
- else
- {
- br = new BufferedReader(new FileReader(filename));
- }
- String line = null;
- String songName = null;
- String songFile = null;
- String songLength = null;
- while ((line = br.readLine()) != null)
- {
- if (line.trim().length() == 0) continue;
- if (line.startsWith("#"))
- {
- if (line.toUpperCase().startsWith("#EXTINF"))
- {
- int indA = line.indexOf(",", 0);
- if (indA != -1)
- {
- songName = line.substring(indA + 1, line.length());
- }
- int indB = line.indexOf(":", 0);
- if (indB != -1)
- {
- if (indB < indA) songLength = (line.substring(indB + 1, indA)).trim();
- }
- }
- }
- else
- {
- songFile = line;
- if (songName == null) songName = songFile;
- if (songLength == null) songLength = "-1";
- PlaylistItem pli = null;
- if (Config.startWithProtocol(songFile))
- {
- // URL.
- pli = new PlaylistItem(songName, songFile, Long.parseLong(songLength), false);
- }
- else
- {
- // File.
- File f = new File(songFile);
- if (f.exists())
- {
- pli = new PlaylistItem(songName, songFile, Long.parseLong(songLength), true);
- }
- else
- {
- // Try relative path.
- f = new File(config.getLastDir() + songFile);
- if (f.exists())
- {
- pli = new PlaylistItem(songName, config.getLastDir() + songFile, Long.parseLong(songLength), true);
- }
- else
- {
- // Try optional M3U home.
- if (M3UHome != null)
- {
- if (Config.startWithProtocol(M3UHome))
- {
- pli = new PlaylistItem(songName, M3UHome + songFile, Long.parseLong(songLength), false);
- }
- else
- {
- pli = new PlaylistItem(songName, M3UHome + songFile, Long.parseLong(songLength), true);
- }
- }
- }
- }
- }
- if (pli != null) this.appendItem(pli);
- songFile = null;
- songName = null;
- songLength = null;
- }
- }
- loaded = true;
- }
- catch (Exception e)
- {
- log.debug("Can't load .m3u playlist", e);
- }
- finally
- {
- try
- {
- if (br != null)
- {
- br.close();
- }
- }
- catch (Exception ioe)
- {
- log.info("Can't close .m3u playlist", ioe);
- }
- }
- return loaded;
- }
-
- /**
- * Load playlist in PLS format.
- *
- * @param filename
- * @return
- */
- protected boolean loadPLS(String filename)
- {
- Config config = Config.getInstance();
- _playlist = new Vector();
- boolean loaded = false;
- BufferedReader br = null;
- try
- {
- // Playlist from URL ? (http:, ftp:, file: ....)
- if (Config.startWithProtocol(filename))
- {
- br = new BufferedReader(new InputStreamReader((new URL(filename)).openStream()));
- }
- else
- {
- br = new BufferedReader(new FileReader(filename));
- }
- String line = null;
- String songName = null;
- String songFile = null;
- String songLength = null;
- while ((line = br.readLine()) != null)
- {
- if (line.trim().length() == 0) continue;
- if ((line.toLowerCase().startsWith("file")))
- {
- StringTokenizer st = new StringTokenizer(line, "=");
- st.nextToken();
- songFile = st.nextToken().trim();
- }
- else if ((line.toLowerCase().startsWith("title")))
- {
- StringTokenizer st = new StringTokenizer(line, "=");
- st.nextToken();
- songName = st.nextToken().trim();
- }
- else if ((line.toLowerCase().startsWith("length")))
- {
- StringTokenizer st = new StringTokenizer(line, "=");
- st.nextToken();
- songLength = st.nextToken().trim();
- }
- // New entry ?
- if (songFile != null)
- {
- PlaylistItem pli = null;
- if (songName == null) songName = songFile;
- if (songLength == null) songLength = "-1";
- if (Config.startWithProtocol(songFile))
- {
- // URL.
- pli = new PlaylistItem(songName, songFile, Long.parseLong(songLength), false);
- }
- else
- {
- // File.
- File f = new File(songFile);
- if (f.exists())
- {
- pli = new PlaylistItem(songName, songFile, Long.parseLong(songLength), true);
- }
- else
- {
- // Try relative path.
- f = new File(config.getLastDir() + songFile);
- if (f.exists())
- {
- pli = new PlaylistItem(songName, config.getLastDir() + songFile, Long.parseLong(songLength), true);
- }
- else
- {
- // Try optional PLS home.
- if (PLSHome != null)
- {
- if (Config.startWithProtocol(PLSHome))
- {
- pli = new PlaylistItem(songName, PLSHome + songFile, Long.parseLong(songLength), false);
- }
- else
- {
- pli = new PlaylistItem(songName, PLSHome + songFile, Long.parseLong(songLength), true);
- }
- }
- }
- }
- }
- if (pli != null) this.appendItem(pli);
- songName = null;
- songFile = null;
- songLength = null;
- }
- }
- loaded = true;
- }
- catch (Exception e)
- {
- log.debug("Can't load .pls playlist", e);
- }
- finally
- {
- try
- {
- if (br != null)
- {
- br.close();
- }
- }
- catch (Exception ioe)
- {
- log.info("Can't close .pls playlist", ioe);
- }
- }
- return loaded;
- }
-
- /**
- * Saves playlist in M3U format.
- */
- public boolean save(String filename)
- {
- // Implemented by C.K
- if (_playlist != null)
- {
- BufferedWriter bw = null;
- try
- {
- bw = new BufferedWriter(new FileWriter(filename));
- bw.write("#EXTM3U");
- bw.newLine();
- Iterator it = _playlist.iterator();
- while (it.hasNext())
- {
- PlaylistItem pli = (PlaylistItem) it.next();
- bw.write("#EXTINF:" + pli.getM3UExtInf());
- bw.newLine();
- bw.write(pli.getLocation());
- bw.newLine();
- }
- return true;
- }
- catch (IOException e)
- {
- log.info("Can't save playlist", e);
- }
- finally
- {
- try
- {
- if (bw != null)
- {
- bw.close();
- }
- }
- catch (IOException ioe)
- {
- log.info("Can't close playlist", ioe);
- }
- }
- }
- return false;
- }
-
- /**
- * Adds item at a given position in the playlist.
- */
- public void addItemAt(PlaylistItem pli, int pos)
- {
- _playlist.insertElementAt(pli, pos);
- setModified(true);
- }
-
- /**
- * Searchs and removes item from the playlist.
- */
- public void removeItem(PlaylistItem pli)
- {
- _playlist.remove(pli);
- setModified(true);
- }
-
- /**
- * Removes item at a given position from the playlist.
- */
- public void removeItemAt(int pos)
- {
- _playlist.removeElementAt(pos);
- setModified(true);
- }
-
- /**
- * Removes all items from the playlist.
- */
- public void removeAllItems()
- {
- _playlist.removeAllElements();
- _cursorPos = -1;
- setModified(true);
- }
-
- /**
- * Append item at the end of the playlist.
- */
- public void appendItem(PlaylistItem pli)
- {
- _playlist.addElement(pli);
- setModified(true);
- }
-
- /**
- * Sorts items of the playlist.
- */
- public void sortItems(int sortmode)
- {
- // TODO
- }
-
- /**
- * Shuffles items in the playlist randomly
- */
- public void shuffle()
- {
- int size = _playlist.size();
- if (size < 2) { return; }
- Vector v = _playlist;
- _playlist = new Vector(size);
- while ((size = v.size()) > 0)
- {
- _playlist.addElement(v.remove((int) (Math.random() * size)));
- }
- begin();
- }
-
- /**
- * Moves the cursor at the top of the playlist.
- */
- public void begin()
- {
- _cursorPos = -1;
- if (getPlaylistSize() > 0)
- {
- _cursorPos = 0;
- }
- setModified(true);
- }
-
- /**
- * Returns item at a given position from the playlist.
- */
- public PlaylistItem getItemAt(int pos)
- {
- PlaylistItem pli = null;
- pli = (PlaylistItem) _playlist.elementAt(pos);
- return pli;
- }
-
- /**
- * Returns a collection of playlist items.
- */
- public Collection getAllItems()
- {
- // TODO
- return null;
- }
-
- /**
- * Returns then number of items in the playlist.
- */
- public int getPlaylistSize()
- {
- return _playlist.size();
- }
-
- // Next methods will be used by the Player
- /**
- * Returns item matching to the cursor.
- */
- public PlaylistItem getCursor()
- {
- if ((_cursorPos < 0) || (_cursorPos >= _playlist.size())) { return null; }
- return getItemAt(_cursorPos);
- }
-
- /**
- * Computes cursor position (next).
- */
- public void nextCursor()
- {
- _cursorPos++;
- }
-
- /**
- * Computes cursor position (previous).
- */
- public void previousCursor()
- {
- _cursorPos--;
- if (_cursorPos < 0)
- {
- _cursorPos = 0;
- }
- }
-
- public boolean setModified(boolean set)
- {
- isModified = set;
- return isModified;
- }
-
- public void setCursor(int index)
- {
- _cursorPos = index;
- }
-
- /**
- * Returns selected index.
- */
- public int getSelectedIndex()
- {
- return _cursorPos;
- }
-
- /**
- * Returns index of playlist item.
- */
- public int getIndex(PlaylistItem pli)
- {
- int pos = -1;
- for (int i = 0; i < _playlist.size(); i++)
- {
- pos = i;
- PlaylistItem p = (PlaylistItem) _playlist.elementAt(i);
- if (p.equals(pli)) break;
- }
- return pos;
- }
-
- /**
- * Get M3U home for relative playlist.
- *
- * @return
- */
- public String getM3UHome()
- {
- return M3UHome;
- }
-
- /**
- * Set optional M3U home for relative playlist.
- *
- * @param string
- */
- public void setM3UHome(String string)
- {
- M3UHome = string;
- }
-
- /**
- * Get PLS home for relative playlist.
- *
- * @return
- */
- public String getPLSHome()
- {
- return PLSHome;
- }
-
- /**
- * Set optional PLS home for relative playlist.
- *
- * @param string
- */
- public void setPLSHome(String string)
- {
- PLSHome = string;
- }
-}
\ No newline at end of file
diff --git a/java/src/javazoom/jlgui/player/amp/playlist/Playlist.java b/java/src/javazoom/jlgui/player/amp/playlist/Playlist.java
deleted file mode 100644
index ade6beb..0000000
--- a/java/src/javazoom/jlgui/player/amp/playlist/Playlist.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Playlist.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.playlist;
-
-import java.util.Collection;
-
-/**
- * Playlist.
- * This interface defines method that a playlist should implement.
- * A playlist provides a collection of item to play and a cursor to know
- * which item is playing.
- */
-public interface Playlist
-{
- // Next methods will be called by the Playlist UI.
- /**
- * Loads playlist.
- */
- public boolean load(String filename);
-
- /**
- * Saves playlist.
- */
- public boolean save(String filename);
-
- /**
- * Adds item at a given position in the playlist.
- */
- public void addItemAt(PlaylistItem pli, int pos);
-
- /**
- * Searchs and removes item from the playlist.
- */
- public void removeItem(PlaylistItem pli);
-
- /**
- * Removes item at a given position from the playlist.
- */
- public void removeItemAt(int pos);
-
- /**
- * Removes all items in the playlist.
- */
- public void removeAllItems();
-
- /**
- * Append item at the end of the playlist.
- */
- public void appendItem(PlaylistItem pli);
-
- /**
- * Sorts items of the playlist.
- */
- public void sortItems(int sortmode);
-
- /**
- * Returns item at a given position from the playlist.
- */
- public PlaylistItem getItemAt(int pos);
-
- /**
- * Returns a collection of playlist items.
- */
- public Collection getAllItems();
-
- /**
- * Returns then number of items in the playlist.
- */
- public int getPlaylistSize();
-
- // Next methods will be used by the Player
- /**
- * Randomly re-arranges the playlist.
- */
- public void shuffle();
-
- /**
- * Returns item matching to the cursor.
- */
- public PlaylistItem getCursor();
-
- /**
- * Moves the cursor at the begining of the Playlist.
- */
- public void begin();
-
- /**
- * Returns item matching to the cursor.
- */
- public int getSelectedIndex();
-
- /**
- * Returns index of playlist item.
- */
- public int getIndex(PlaylistItem pli);
-
- /**
- * Computes cursor position (next).
- */
- public void nextCursor();
-
- /**
- * Computes cursor position (previous).
- */
- public void previousCursor();
-
- /**
- * Set the modification flag for the playlist
- */
- boolean setModified(boolean set);
-
- /**
- * Checks the modification flag
- */
- public boolean isModified();
-
- void setCursor(int index);
-}
diff --git a/java/src/javazoom/jlgui/player/amp/playlist/PlaylistFactory.java b/java/src/javazoom/jlgui/player/amp/playlist/PlaylistFactory.java
deleted file mode 100644
index c9c38d1..0000000
--- a/java/src/javazoom/jlgui/player/amp/playlist/PlaylistFactory.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * PlaylistFactory.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.playlist;
-
-import java.lang.reflect.Constructor;
-import javazoom.jlgui.player.amp.util.Config;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * PlaylistFactory.
- */
-public class PlaylistFactory
-{
- private static PlaylistFactory _instance = null;
- private Playlist _playlistInstance = null;
- private Config _config = null;
- private static Log log = LogFactory.getLog(PlaylistFactory.class);
-
- /**
- * Constructor.
- */
- private PlaylistFactory()
- {
- _config = Config.getInstance();
- }
-
- /**
- * Returns instance of PlaylistFactory.
- */
- public synchronized static PlaylistFactory getInstance()
- {
- if (_instance == null)
- {
- _instance = new PlaylistFactory();
- }
- return _instance;
- }
-
- /**
- * Returns Playlist instantied from full qualified class name.
- */
- public Playlist getPlaylist()
- {
- if (_playlistInstance == null)
- {
- String classname = _config.getPlaylistClassName();
- boolean interfaceFound = false;
- try
- {
- Class aClass = Class.forName(classname);
- Class superClass = aClass;
- // Looking for Playlist interface implementation.
- while (superClass != null)
- {
- Class[] interfaces = superClass.getInterfaces();
- for (int i = 0; i < interfaces.length; i++)
- {
- if ((interfaces[i].getName()).equals("javazoom.jlgui.player.amp.playlist.Playlist"))
- {
- interfaceFound = true;
- break;
- }
- }
- if (interfaceFound == true) break;
- superClass = superClass.getSuperclass();
- }
- if (interfaceFound == false)
- {
- log.error("Error : Playlist implementation not found in " + classname + " hierarchy");
- }
- else
- {
- Class[] argsClass = new Class[] {};
- Constructor c = aClass.getConstructor(argsClass);
- _playlistInstance = (Playlist) (c.newInstance(null));
- log.info(classname + " loaded");
- }
- }
- catch (Exception e)
- {
- log.error("Error : " + classname + " : " + e.getMessage());
- }
- }
- return _playlistInstance;
- }
-}
\ No newline at end of file
diff --git a/java/src/javazoom/jlgui/player/amp/playlist/PlaylistItem.java b/java/src/javazoom/jlgui/player/amp/playlist/PlaylistItem.java
deleted file mode 100644
index df2440c..0000000
--- a/java/src/javazoom/jlgui/player/amp/playlist/PlaylistItem.java
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
- * PlaylistItem.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- *
- */
-package javazoom.jlgui.player.amp.playlist;
-
-import javazoom.jlgui.player.amp.tag.TagInfo;
-import javazoom.jlgui.player.amp.tag.TagInfoFactory;
-import javazoom.jlgui.player.amp.util.Config;
-import javazoom.jlgui.player.amp.util.FileUtil;
-
-/**
- * This class implements item for playlist.
- */
-public class PlaylistItem
-{
- protected String _name = null;
- protected String _displayName = null;
- protected String _location = null;
- protected boolean _isFile = true;
- protected long _seconds = -1;
- protected boolean _isSelected = false; // add by JOHN YANG
- protected TagInfo _taginfo = null;
-
- protected PlaylistItem()
- {
- }
-
- /**
- * Contructor for playlist item.
- *
- * @param name Song name to be displayed
- * @param location File or URL
- * @param seconds Time length
- * @param isFile true for File instance
- */
- public PlaylistItem(String name, String location, long seconds, boolean isFile)
- {
- _name = name;
- _seconds = seconds;
- _isFile = isFile;
- Config config = Config.getInstance();
- if (config.getTaginfoPolicy().equals(Config.TAGINFO_POLICY_ALL))
- {
- // Read tag info for any File or URL. It could take time.
- setLocation(location, true);
- }
- else if (config.getTaginfoPolicy().equals(Config.TAGINFO_POLICY_FILE))
- {
- // Read tag info for any File only not for URL.
- if (_isFile) setLocation(location, true);
- else setLocation(location, false);
- }
- else
- {
- // Do not read tag info.
- setLocation(location, false);
- }
- }
-
- /**
- * Returns item name such as (hh:mm:ss) Title - Artist if available.
- *
- * @return
- */
- public String getFormattedName()
- {
- if (_displayName == null)
- {
- if (_seconds > 0)
- {
- String length = getFormattedLength();
- return "(" + length + ") " + _name;
- }
- else return _name;
- }
- // Name extracted from TagInfo or stream title.
- else return _displayName;
- }
-
- public String getName()
- {
- return _name;
- }
-
- public String getLocation()
- {
- return _location;
- }
-
- /**
- * Returns true if item to play is coming for a file.
- *
- * @return
- */
- public boolean isFile()
- {
- return _isFile;
- }
-
- /**
- * Set File flag for playslit item.
- *
- * @param b
- */
- public void setFile(boolean b)
- {
- _isFile = b;
- }
-
- /**
- * Returns playtime in seconds. If tag info is available then its playtime will be returned.
- *
- * @return playtime
- */
- public long getLength()
- {
- if ((_taginfo != null) && (_taginfo.getPlayTime() > 0)) return _taginfo.getPlayTime();
- else return _seconds;
- }
-
- public int getBitrate()
- {
- if (_taginfo != null) return _taginfo.getBitRate();
- else return -1;
- }
-
- public int getSamplerate()
- {
- if (_taginfo != null) return _taginfo.getSamplingRate();
- else return -1;
- }
-
- public int getChannels()
- {
- if (_taginfo != null) return _taginfo.getChannels();
- else return -1;
- }
-
- public void setSelected(boolean mode)
- {
- _isSelected = mode;
- }
-
- public boolean isSelected()
- {
- return _isSelected;
- }
-
- /**
- * Reads file comments/tags.
- *
- * @param l
- */
- public void setLocation(String l)
- {
- setLocation(l, false);
- }
-
- /**
- * Reads (or not) file comments/tags.
- *
- * @param l input location
- * @param readInfo
- */
- public void setLocation(String l, boolean readInfo)
- {
- _location = l;
- if (readInfo == true)
- {
- // Read Audio Format and read tags/comments.
- if ((_location != null) && (!_location.equals("")))
- {
- TagInfoFactory factory = TagInfoFactory.getInstance();
- _taginfo = factory.getTagInfo(l);
- }
- }
- _displayName = getFormattedDisplayName();
- }
-
- /**
- * Returns item lenght such as hh:mm:ss
- *
- * @return formatted String.
- */
- public String getFormattedLength()
- {
- long time = getLength();
- String length = "";
- if (time > -1)
- {
- int minutes = (int) Math.floor(time / 60);
- int hours = (int) Math.floor(minutes / 60);
- minutes = minutes - hours * 60;
- int seconds = (int) (time - minutes * 60 - hours * 3600);
- // Hours.
- if (hours > 0)
- {
- length = length + FileUtil.rightPadString(hours + "", '0', 2) + ":";
- }
- length = length + FileUtil.rightPadString(minutes + "", '0', 2) + ":" + FileUtil.rightPadString(seconds + "", '0', 2);
- }
- else length = "" + time;
- return length;
- }
-
- /**
- * Returns item name such as (hh:mm:ss) Title - Artist
- *
- * @return formatted String.
- */
- public String getFormattedDisplayName()
- {
- if (_taginfo == null) return null;
- else
- {
- String length = getFormattedLength();
- if ((_taginfo.getTitle() != null) && (!_taginfo.getTitle().equals("")) && (_taginfo.getArtist() != null) && (!_taginfo.getArtist().equals("")))
- {
- if (getLength() > 0) return ("(" + length + ") " + _taginfo.getTitle() + " - " + _taginfo.getArtist());
- else return (_taginfo.getTitle() + " - " + _taginfo.getArtist());
- }
- else if ((_taginfo.getTitle() != null) && (!_taginfo.getTitle().equals("")))
- {
- if (getLength() > 0) return ("(" + length + ") " + _taginfo.getTitle());
- else return (_taginfo.getTitle());
- }
- else
- {
- if (getLength() > 0) return ("(" + length + ") " + _name);
- else return (_name);
- }
- }
- }
-
- public void setFormattedDisplayName(String fname)
- {
- _displayName = fname;
- }
-
- /**
- * Return item name such as hh:mm:ss,Title,Artist
- *
- * @return formatted String.
- */
- public String getM3UExtInf()
- {
- if (_taginfo == null)
- {
- return (_seconds + "," + _name);
- }
- else
- {
- if ((_taginfo.getTitle() != null) && (_taginfo.getArtist() != null))
- {
- return (getLength() + "," + _taginfo.getTitle() + " - " + _taginfo.getArtist());
- }
- else if (_taginfo.getTitle() != null)
- {
- return (getLength() + "," + _taginfo.getTitle());
- }
- else
- {
- return (_seconds + "," + _name);
- }
- }
- }
-
- /**
- * Return TagInfo.
- *
- * @return
- */
- public TagInfo getTagInfo()
- {
- if (_taginfo == null)
- {
- // Inspect location
- setLocation(_location, true);
- }
- return _taginfo;
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/playlist/ui/PlaylistUI.java b/java/src/javazoom/jlgui/player/amp/playlist/ui/PlaylistUI.java
deleted file mode 100644
index b7d0222..0000000
--- a/java/src/javazoom/jlgui/player/amp/playlist/ui/PlaylistUI.java
+++ /dev/null
@@ -1,882 +0,0 @@
-/*
- * PlaylistUI.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.playlist.ui;
-
-import java.awt.Graphics;
-import java.awt.dnd.DnDConstants;
-import java.awt.dnd.DropTarget;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.StringTokenizer;
-import java.util.Vector;
-import javax.swing.JMenuItem;
-import javax.swing.JPanel;
-import javax.swing.JPopupMenu;
-import javax.swing.SwingUtilities;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import javazoom.jlgui.player.amp.PlayerActionEvent;
-import javazoom.jlgui.player.amp.PlayerUI;
-import javazoom.jlgui.player.amp.playlist.Playlist;
-import javazoom.jlgui.player.amp.playlist.PlaylistItem;
-import javazoom.jlgui.player.amp.skin.AbsoluteLayout;
-import javazoom.jlgui.player.amp.skin.ActiveJButton;
-import javazoom.jlgui.player.amp.skin.DropTargetAdapter;
-import javazoom.jlgui.player.amp.skin.Skin;
-import javazoom.jlgui.player.amp.skin.UrlDialog;
-import javazoom.jlgui.player.amp.tag.TagInfo;
-import javazoom.jlgui.player.amp.tag.TagInfoFactory;
-import javazoom.jlgui.player.amp.tag.ui.TagInfoDialog;
-import javazoom.jlgui.player.amp.util.Config;
-import javazoom.jlgui.player.amp.util.FileSelector;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public class PlaylistUI extends JPanel implements ActionListener, ChangeListener
-{
- private static Log log = LogFactory.getLog(PlaylistUI.class);
- public static int MAXDEPTH = 4;
- private Config config = null;
- private Skin ui = null;
- private Playlist playlist = null;
- private PlayerUI player = null;
- private int topIndex = 0;
- private int currentSelection = -1;
- private Vector exts = null;
- private boolean isSearching = false;
- private JPopupMenu fipopup = null;
-
- public PlaylistUI()
- {
- super();
- setDoubleBuffered(true);
- setLayout(new AbsoluteLayout());
- config = Config.getInstance();
- addMouseListener(new MouseAdapter()
- {
- public void mousePressed(MouseEvent e)
- {
- handleMouseClick(e);
- }
- });
- // DnD support.
- DropTargetAdapter dnd = new DropTargetAdapter()
- {
- public void processDrop(Object data)
- {
- processDnD(data);
- }
- };
- DropTarget dt = new DropTarget(this, DnDConstants.ACTION_COPY, dnd, true);
- }
-
- public void setPlayer(PlayerUI mp)
- {
- player = mp;
- }
-
- public void setSkin(Skin skin)
- {
- ui = skin;
- }
-
- public Skin getSkin()
- {
- return ui;
- }
-
- public Playlist getPlaylist()
- {
- return playlist;
- }
-
- public void setPlaylist(Playlist playlist)
- {
- this.playlist = playlist;
- }
-
- public int getTopIndex()
- {
- return topIndex;
- }
-
- public void loadUI()
- {
- removeAll();
- ui.getPlaylistPanel().setParent(this);
- add(ui.getAcPlSlider(), ui.getAcPlSlider().getConstraints());
- ui.getAcPlSlider().setValue(100);
- ui.getAcPlSlider().removeChangeListener(this);
- ui.getAcPlSlider().addChangeListener(this);
- add(ui.getAcPlUp(), ui.getAcPlUp().getConstraints());
- ui.getAcPlUp().removeActionListener(this);
- ui.getAcPlUp().addActionListener(this);
- add(ui.getAcPlDown(), ui.getAcPlDown().getConstraints());
- ui.getAcPlDown().removeActionListener(this);
- ui.getAcPlDown().addActionListener(this);
- // Add menu
- add(ui.getAcPlAdd(), ui.getAcPlAdd().getConstraints());
- ui.getAcPlAdd().removeActionListener(this);
- ui.getAcPlAdd().addActionListener(this);
- add(ui.getAcPlAddPopup(), ui.getAcPlAddPopup().getConstraints());
- ui.getAcPlAddPopup().setVisible(false);
- ActiveJButton[] items = ui.getAcPlAddPopup().getItems();
- for (int i = 0; i < items.length; i++)
- {
- items[i].addActionListener(this);
- }
- // Remove menu
- add(ui.getAcPlRemove(), ui.getAcPlRemove().getConstraints());
- ui.getAcPlRemove().removeActionListener(this);
- ui.getAcPlRemove().addActionListener(this);
- add(ui.getAcPlRemovePopup(), ui.getAcPlRemovePopup().getConstraints());
- ui.getAcPlRemovePopup().setVisible(false);
- items = ui.getAcPlRemovePopup().getItems();
- for (int i = 0; i < items.length; i++)
- {
- items[i].removeActionListener(this);
- items[i].addActionListener(this);
- }
- // Select menu
- add(ui.getAcPlSelect(), ui.getAcPlSelect().getConstraints());
- ui.getAcPlSelect().removeActionListener(this);
- ui.getAcPlSelect().addActionListener(this);
- add(ui.getAcPlSelectPopup(), ui.getAcPlSelectPopup().getConstraints());
- ui.getAcPlSelectPopup().setVisible(false);
- items = ui.getAcPlSelectPopup().getItems();
- for (int i = 0; i < items.length; i++)
- {
- items[i].removeActionListener(this);
- items[i].addActionListener(this);
- }
- // Misc menu
- add(ui.getAcPlMisc(), ui.getAcPlMisc().getConstraints());
- ui.getAcPlMisc().removeActionListener(this);
- ui.getAcPlMisc().addActionListener(this);
- add(ui.getAcPlMiscPopup(), ui.getAcPlMiscPopup().getConstraints());
- ui.getAcPlMiscPopup().setVisible(false);
- items = ui.getAcPlMiscPopup().getItems();
- for (int i = 0; i < items.length; i++)
- {
- items[i].removeActionListener(this);
- items[i].addActionListener(this);
- }
- // List menu
- add(ui.getAcPlList(), ui.getAcPlList().getConstraints());
- ui.getAcPlList().removeActionListener(this);
- ui.getAcPlList().addActionListener(this);
- add(ui.getAcPlListPopup(), ui.getAcPlListPopup().getConstraints());
- ui.getAcPlListPopup().setVisible(false);
- items = ui.getAcPlListPopup().getItems();
- for (int i = 0; i < items.length; i++)
- {
- items[i].removeActionListener(this);
- items[i].addActionListener(this);
- }
- // Popup menu
- fipopup = new JPopupMenu();
- JMenuItem mi = new JMenuItem(ui.getResource("playlist.popup.info"));
- mi.setActionCommand(PlayerActionEvent.ACPLINFO);
- mi.removeActionListener(this);
- mi.addActionListener(this);
- fipopup.add(mi);
- fipopup.addSeparator();
- mi = new JMenuItem(ui.getResource("playlist.popup.play"));
- mi.setActionCommand(PlayerActionEvent.ACPLPLAY);
- mi.removeActionListener(this);
- mi.addActionListener(this);
- fipopup.add(mi);
- fipopup.addSeparator();
- mi = new JMenuItem(ui.getResource("playlist.popup.remove"));
- mi.setActionCommand(PlayerActionEvent.ACPLREMOVE);
- mi.removeActionListener(this);
- mi.addActionListener(this);
- fipopup.add(mi);
- validate();
- repaint();
- }
-
- /**
- * Initialize playlist.
- */
- public void initPlayList()
- {
- topIndex = 0;
- nextCursor();
- }
-
- /**
- * Repaint the file list area and scroll it if necessary
- */
- public void nextCursor()
- {
- currentSelection = playlist.getSelectedIndex();
- int n = playlist.getPlaylistSize();
- int nlines = ui.getPlaylistPanel().getLines();
- while (currentSelection - topIndex > nlines - 1)
- topIndex += 2;
- if (topIndex >= n) topIndex = n - 1;
- while (currentSelection < topIndex)
- topIndex -= 2;
- if (topIndex < 0) topIndex = 0;
- resetScrollBar();
- repaint();
- }
-
- /**
- * Get the item index according to the mouse y position
- * @param y
- * @return
- */
- protected int getIndex(int y)
- {
- int n0 = playlist.getPlaylistSize();
- if (n0 == 0) return -1;
- for (int n = 0; n < 100; n++)
- {
- if (ui.getPlaylistPanel().isIndexArea(y, n))
- {
- if (topIndex + n > n0 - 1) return -1;
- return topIndex + n;
- }
- }
- return -1;
- }
-
- /* (non-Javadoc)
- * @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent)
- */
- public void stateChanged(ChangeEvent e)
- {
- Object src = e.getSource();
- //log.debug("State (EDT=" + SwingUtilities.isEventDispatchThread() + ")");
- if (src == ui.getAcPlSlider())
- {
- int n = playlist.getPlaylistSize();
- float dx = (100 - ui.getAcPlSlider().getValue()) / 100.0f;
- int index = (int) (dx * (n - 1));
- if (index != topIndex)
- {
- topIndex = index;
- paintList();
- }
- }
- }
-
- /* (non-Javadoc)
- * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
- */
- public void actionPerformed(ActionEvent e)
- {
- final ActionEvent evt = e;
- new Thread("PlaylistUIActionEvent")
- {
- public void run()
- {
- processActionEvent(evt);
- }
- }.start();
- }
-
- /**
- * Process action event.
- * @param e
- */
- public void processActionEvent(ActionEvent e)
- {
- String cmd = e.getActionCommand();
- log.debug("Action=" + cmd + " (EDT=" + SwingUtilities.isEventDispatchThread() + ")");
- int n = playlist.getPlaylistSize();
- if (cmd.equals(PlayerActionEvent.ACPLUP))
- {
- topIndex--;
- if (topIndex < 0) topIndex = 0;
- resetScrollBar();
- paintList();
- }
- else if (cmd.equals(PlayerActionEvent.ACPLDOWN))
- {
- topIndex++;
- if (topIndex > n - 1) topIndex = n - 1;
- resetScrollBar();
- paintList();
- }
- else if (cmd.equals(PlayerActionEvent.ACPLADDPOPUP))
- {
- ui.getAcPlAdd().setVisible(false);
- ui.getAcPlAddPopup().setVisible(true);
- }
- else if (cmd.equals(PlayerActionEvent.ACPLREMOVEPOPUP))
- {
- ui.getAcPlRemove().setVisible(false);
- ui.getAcPlRemovePopup().setVisible(true);
- }
- else if (cmd.equals(PlayerActionEvent.ACPLSELPOPUP))
- {
- ui.getAcPlSelect().setVisible(false);
- ui.getAcPlSelectPopup().setVisible(true);
- }
- else if (cmd.equals(PlayerActionEvent.ACPLMISCPOPUP))
- {
- ui.getAcPlMisc().setVisible(false);
- ui.getAcPlMiscPopup().setVisible(true);
- }
- else if (cmd.equals(PlayerActionEvent.ACPLLISTPOPUP))
- {
- ui.getAcPlList().setVisible(false);
- ui.getAcPlListPopup().setVisible(true);
- }
- else if (cmd.equals(PlayerActionEvent.ACPLINFO))
- {
- popupFileInfo();
- }
- else if (cmd.equals(PlayerActionEvent.ACPLPLAY))
- {
- int n0 = playlist.getPlaylistSize();
- PlaylistItem pli = null;
- for (int i = n0 - 1; i >= 0; i--)
- {
- pli = playlist.getItemAt(i);
- if (pli.isSelected()) break;
- }
- // Play.
- if ((pli != null) && (pli.getTagInfo() != null))
- {
- player.pressStop();
- player.setCurrentSong(pli);
- playlist.setCursor(playlist.getIndex(pli));
- player.pressStart();
- }
- }
- else if (cmd.equals(PlayerActionEvent.ACPLREMOVE))
- {
- delSelectedItems();
- }
- else if (cmd.equals(PlayerActionEvent.ACPLADDFILE))
- {
- ui.getAcPlAddPopup().setVisible(false);
- ui.getAcPlAdd().setVisible(true);
- File[] file = FileSelector.selectFile(player.getLoader(), FileSelector.OPEN, true, config.getExtensions(), ui.getResource("playlist.popup.add.file"), new File(config.getLastDir()));
- if (FileSelector.getInstance().getDirectory() != null) config.setLastDir(FileSelector.getInstance().getDirectory().getPath());
- addFiles(file);
- }
- else if (cmd.equals(PlayerActionEvent.ACPLADDURL))
- {
- ui.getAcPlAddPopup().setVisible(false);
- ui.getAcPlAdd().setVisible(true);
- UrlDialog UD = new UrlDialog(config.getTopParent(), ui.getResource("playlist.popup.add.url"), player.getLoader().getLocation().x, player.getLoader().getLocation().y + player.getHeight(), null);
- UD.show();
- if (UD.getFile() != null)
- {
- PlaylistItem pli = new PlaylistItem(UD.getFile(), UD.getURL(), -1, false);
- playlist.appendItem(pli);
- resetScrollBar();
- repaint();
- }
- }
- else if (cmd.equals(PlayerActionEvent.ACPLADDDIR))
- {
- ui.getAcPlAddPopup().setVisible(false);
- ui.getAcPlAdd().setVisible(true);
- File[] file = FileSelector.selectFile(player.getLoader(), FileSelector.DIRECTORY, false, "", ui.getResource("playlist.popup.add.dir"), new File(config.getLastDir()));
- if (FileSelector.getInstance().getDirectory() != null) config.setLastDir(FileSelector.getInstance().getDirectory().getPath());
- if (file == null || !file[0].isDirectory()) return;
- // TODO - add message box for wrong filename
- addDir(file[0]);
- }
- else if (cmd.equals(PlayerActionEvent.ACPLREMOVEALL))
- {
- ui.getAcPlRemovePopup().setVisible(false);
- ui.getAcPlRemove().setVisible(true);
- delAllItems();
- }
- else if (cmd.equals(PlayerActionEvent.ACPLREMOVESEL))
- {
- ui.getAcPlRemovePopup().setVisible(false);
- ui.getAcPlRemove().setVisible(true);
- delSelectedItems();
- }
- else if (cmd.equals(PlayerActionEvent.ACPLREMOVEMISC))
- {
- ui.getAcPlRemovePopup().setVisible(false);
- ui.getAcPlRemove().setVisible(true);
- // TODO
- }
- else if (cmd.equals(PlayerActionEvent.ACPLREMOVECROP))
- {
- ui.getAcPlRemovePopup().setVisible(false);
- ui.getAcPlRemove().setVisible(true);
- // TODO
- }
- else if (cmd.equals(PlayerActionEvent.ACPLSELALL))
- {
- ui.getAcPlSelectPopup().setVisible(false);
- ui.getAcPlSelect().setVisible(true);
- selFunctions(1);
- }
- else if (cmd.equals(PlayerActionEvent.ACPLSELINV))
- {
- ui.getAcPlSelectPopup().setVisible(false);
- ui.getAcPlSelect().setVisible(true);
- selFunctions(-1);
- }
- else if (cmd.equals(PlayerActionEvent.ACPLSELZERO))
- {
- ui.getAcPlSelectPopup().setVisible(false);
- ui.getAcPlSelect().setVisible(true);
- selFunctions(0);
- }
- else if (cmd.equals(PlayerActionEvent.ACPLMISCOPTS))
- {
- ui.getAcPlMiscPopup().setVisible(false);
- ui.getAcPlMisc().setVisible(true);
- // TODO
- }
- else if (cmd.equals(PlayerActionEvent.ACPLMISCFILE))
- {
- ui.getAcPlMiscPopup().setVisible(false);
- ui.getAcPlMisc().setVisible(true);
- popupFileInfo();
- }
- else if (cmd.equals(PlayerActionEvent.ACPLMISCSORT))
- {
- ui.getAcPlMiscPopup().setVisible(false);
- ui.getAcPlMisc().setVisible(true);
- // TODO
- }
- else if (cmd.equals(PlayerActionEvent.ACPLLISTLOAD))
- {
- ui.getAcPlListPopup().setVisible(false);
- ui.getAcPlList().setVisible(true);
- File[] file = FileSelector.selectFile(player.getLoader(), FileSelector.OPEN, true, config.getExtensions(), ui.getResource("playlist.popup.list.load"), new File(config.getLastDir()));
- if (FileSelector.getInstance().getDirectory() != null) config.setLastDir(FileSelector.getInstance().getDirectory().getPath());
- if ((file != null) && (file[0] != null))
- {
- String fsFile = file[0].getName();
- if ((fsFile.toLowerCase().endsWith(ui.getResource("playlist.extension.m3u"))) || (fsFile.toLowerCase().endsWith(ui.getResource("playlist.extension.pls"))))
- {
- if (player.loadPlaylist(config.getLastDir() + fsFile))
- {
- config.setPlaylistFilename(config.getLastDir() + fsFile);
- playlist.begin();
- playlist.setCursor(-1);
- // TODO
- topIndex = 0;
- }
- resetScrollBar();
- repaint();
- }
- }
- }
- else if (cmd.equals(PlayerActionEvent.ACPLLISTSAVE))
- {
- ui.getAcPlListPopup().setVisible(false);
- ui.getAcPlList().setVisible(true);
- // TODO
- }
- else if (cmd.equals(PlayerActionEvent.ACPLLISTNEW))
- {
- ui.getAcPlListPopup().setVisible(false);
- ui.getAcPlList().setVisible(true);
- // TODO
- }
- }
-
- /**
- * Display file info.
- */
- public void popupFileInfo()
- {
- int n0 = playlist.getPlaylistSize();
- PlaylistItem pli = null;
- for (int i = n0 - 1; i >= 0; i--)
- {
- pli = playlist.getItemAt(i);
- if (pli.isSelected()) break;
- }
- // Display Tag Info.
- if (pli != null)
- {
- TagInfo taginfo = pli.getTagInfo();
- TagInfoFactory factory = TagInfoFactory.getInstance();
- TagInfoDialog dialog = factory.getTagInfoDialog(taginfo);
- dialog.setLocation(player.getLoader().getLocation().x, player.getLoader().getLocation().y + player.getHeight());
- dialog.show();
- }
- }
-
- /**
- * Selection operation in pledit window
- * @param mode -1 : inverse selected items, 0 : select none, 1 : select all
- */
- private void selFunctions(int mode)
- {
- int n0 = playlist.getPlaylistSize();
- if (n0 == 0) return;
- for (int i = 0; i < n0; i++)
- {
- PlaylistItem pli = playlist.getItemAt(i);
- if (pli == null) break;
- if (mode == -1)
- { // inverse selection
- pli.setSelected(!pli.isSelected());
- }
- else if (mode == 0)
- { // select none
- pli.setSelected(false);
- }
- else if (mode == 1)
- { // select all
- pli.setSelected(true);
- }
- }
- repaint();
- }
-
- /**
- * Remove all items in playlist.
- */
- private void delAllItems()
- {
- int n0 = playlist.getPlaylistSize();
- if (n0 == 0) return;
- playlist.removeAllItems();
- topIndex = 0;
- ui.getAcPlSlider().setValue(100);
- repaint();
- }
-
- /**
- * Remove selected items in playlist.
- */
- private void delSelectedItems()
- {
- int n0 = playlist.getPlaylistSize();
- boolean brepaint = false;
- for (int i = n0 - 1; i >= 0; i--)
- {
- if (playlist.getItemAt(i).isSelected())
- {
- playlist.removeItemAt(i);
- brepaint = true;
- }
- }
- if (brepaint)
- {
- int n = playlist.getPlaylistSize();
- if (topIndex >= n) topIndex = n - 1;
- if (topIndex < 0) topIndex = 0;
- resetScrollBar();
- repaint();
- }
- }
-
- /**
- * Add file(s) to playlist.
- * @param file
- */
- public void addFiles(File[] file)
- {
- if (file != null)
- {
- for (int i = 0; i < file.length; i++)
- {
- String fsFile = file[i].getName();
- if ((!fsFile.toLowerCase().endsWith(ui.getResource("skin.extension"))) && (!fsFile.toLowerCase().endsWith(ui.getResource("playlist.extension.m3u"))) && (!fsFile.toLowerCase().endsWith(ui.getResource("playlist.extension.pls"))))
- {
- PlaylistItem pli = new PlaylistItem(fsFile, file[i].getAbsolutePath(), -1, true);
- playlist.appendItem(pli);
- resetScrollBar();
- repaint();
- }
- }
- }
- }
-
- /**
- * Handle mouse clicks on playlist.
- * @param evt
- */
- protected void handleMouseClick(MouseEvent evt)
- {
- int x = evt.getX();
- int y = evt.getY();
- ui.getAcPlAddPopup().setVisible(false);
- ui.getAcPlAdd().setVisible(true);
- ui.getAcPlRemovePopup().setVisible(false);
- ui.getAcPlRemove().setVisible(true);
- ui.getAcPlSelectPopup().setVisible(false);
- ui.getAcPlSelect().setVisible(true);
- ui.getAcPlMiscPopup().setVisible(false);
- ui.getAcPlMisc().setVisible(true);
- ui.getAcPlListPopup().setVisible(false);
- ui.getAcPlList().setVisible(true);
- // Check select action
- if (ui.getPlaylistPanel().isInSelectArea(x, y))
- {
- int index = getIndex(y);
- if (index != -1)
- {
- // PopUp
- if (javax.swing.SwingUtilities.isRightMouseButton(evt))
- {
- if (fipopup != null) fipopup.show(this, x, y);
- }
- else
- {
- PlaylistItem pli = playlist.getItemAt(index);
- if (pli != null)
- {
- pli.setSelected(!pli.isSelected());
- if ((evt.getClickCount() == 2) && (evt.getModifiers() == MouseEvent.BUTTON1_MASK))
- {
- player.pressStop();
- player.setCurrentSong(pli);
- playlist.setCursor(index);
- player.pressStart();
- }
- }
- }
- repaint();
- }
- }
- }
-
- /**
- * Process Drag&Drop
- * @param data
- */
- public void processDnD(Object data)
- {
- log.debug("Playlist DnD");
- // Looking for files to drop.
- if (data instanceof List)
- {
- List al = (List) data;
- if ((al != null) && (al.size() > 0))
- {
- ArrayList fileList = new ArrayList();
- ArrayList folderList = new ArrayList();
- ListIterator li = al.listIterator();
- while (li.hasNext())
- {
- File f = (File) li.next();
- if ((f.exists()) && (f.canRead()))
- {
- if (f.isFile()) fileList.add(f);
- else if (f.isDirectory()) folderList.add(f);
- }
- }
- addFiles(fileList);
- addDirs(folderList);
- }
- }
- else if (data instanceof String)
- {
- String files = (String) data;
- if ((files.length() > 0))
- {
- ArrayList fileList = new ArrayList();
- ArrayList folderList = new ArrayList();
- StringTokenizer st = new StringTokenizer(files, System.getProperty("line.separator"));
- // Transfer files dropped.
- while (st.hasMoreTokens())
- {
- String path = st.nextToken();
- if (path.startsWith("file://"))
- {
- path = path.substring(7, path.length());
- if (path.endsWith("\r")) path = path.substring(0, (path.length() - 1));
- }
- File f = new File(path);
- if ((f.exists()) && (f.canRead()))
- {
- if (f.isFile()) fileList.add(f);
- else if (f.isDirectory()) folderList.add(f);
- }
- }
- addFiles(fileList);
- addDirs(folderList);
- }
- }
- else
- {
- log.info("Unknown dropped objects");
- }
- }
-
- /**
- * Add files to playlistUI.
- * @param fileList
- */
- public void addFiles(List fileList)
- {
- if (fileList.size() > 0)
- {
- File[] file = (File[]) fileList.toArray(new File[fileList.size()]);
- addFiles(file);
- }
- }
-
- /**
- * Add directories to playlistUI.
- * @param folderList
- */
- public void addDirs(List folderList)
- {
- if (folderList.size() > 0)
- {
- ListIterator it = folderList.listIterator();
- while (it.hasNext())
- {
- addDir((File) it.next());
- }
- }
- }
-
- /**
- * Compute slider value.
- */
- private void resetScrollBar()
- {
- int n = playlist.getPlaylistSize();
- float dx = (n < 1) ? 0 : ((float) topIndex / (n - 1)) * (100);
- ui.getAcPlSlider().setValue(100 - (int) dx);
- }
-
- public void paintList()
- {
- if (!isVisible()) return;
- else repaint();
- }
-
- /* (non-Javadoc)
- * @see javax.swing.JComponent#paintComponent(java.awt.Graphics)
- */
- public void paintComponent(Graphics g)
- {
- ui.getPlaylistPanel().paintBackground(g);
- ui.getPlaylistPanel().paintList(g);
- }
-
- /**
- * Add all files under this directory to play list.
- * @param fsFile
- */
- private void addDir(File fsFile)
- {
- // Put all music file extension in a Vector
- String ext = config.getExtensions();
- StringTokenizer st = new StringTokenizer(ext, ", ");
- if (exts == null)
- {
- exts = new Vector();
- while (st.hasMoreTokens())
- {
- exts.add("." + st.nextElement());
- }
- }
- // recursive
- Thread addThread = new AddThread(fsFile);
- addThread.start();
- // Refresh thread
- Thread refresh = new Thread("Refresh")
- {
- public void run()
- {
- while (isSearching)
- {
- resetScrollBar();
- repaint();
- try
- {
- Thread.sleep(4000);
- }
- catch (Exception ex)
- {
- }
- }
- }
- };
- refresh.start();
- }
- class AddThread extends Thread
- {
- private File fsFile;
-
- public AddThread(File fsFile)
- {
- super("Add");
- this.fsFile = fsFile;
- }
-
- public void run()
- {
- isSearching = true;
- addMusicRecursive(fsFile, 0);
- isSearching = false;
- resetScrollBar();
- repaint();
- }
- }
-
- private void addMusicRecursive(File rootDir, int depth)
- {
- // We do not want waste time
- if (rootDir == null || depth > MAXDEPTH) return;
- String[] list = rootDir.list();
- if (list == null) return;
- for (int i = 0; i < list.length; i++)
- {
- File ff = new File(rootDir, list[i]);
- if (ff.isDirectory()) addMusicRecursive(ff, depth + 1);
- else
- {
- if (isMusicFile(list[i]))
- {
- PlaylistItem pli = new PlaylistItem(list[i], rootDir + File.separator + list[i], -1, true);
- playlist.appendItem(pli);
- }
- }
- }
- }
-
- private boolean isMusicFile(String ff)
- {
- int sz = exts.size();
- for (int i = 0; i < sz; i++)
- {
- String ext = exts.elementAt(i).toString().toLowerCase();
- // TODO : Improve
- if (ext.equalsIgnoreCase(".wsz") || ext.equalsIgnoreCase(".m3u") || ext.equalsIgnoreCase(".pls")) continue;
- if (ff.toLowerCase().endsWith(exts.elementAt(i).toString().toLowerCase())) return true;
- }
- return false;
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/skin/AbsoluteConstraints.java b/java/src/javazoom/jlgui/player/amp/skin/AbsoluteConstraints.java
deleted file mode 100644
index d0961ed..0000000
--- a/java/src/javazoom/jlgui/player/amp/skin/AbsoluteConstraints.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * AbsoluteConstraints.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.skin;
-
-import java.awt.Dimension;
-import java.awt.Point;
-
-/**
- * An object that encapsulates position and (optionally) size for
- * Absolute positioning of components.
- */
-public class AbsoluteConstraints implements java.io.Serializable
-{
- /**
- * generated Serialized Version UID
- */
- static final long serialVersionUID = 5261460716622152494L;
- /**
- * The X position of the component
- */
- public int x;
- /**
- * The Y position of the component
- */
- public int y;
- /**
- * The width of the component or -1 if the component's preferred width should be used
- */
- public int width = -1;
- /**
- * The height of the component or -1 if the component's preferred height should be used
- */
- public int height = -1;
-
- /**
- * Creates a new AbsoluteConstraints for specified position.
- *
- * @param pos The position to be represented by this AbsoluteConstraints
- */
- public AbsoluteConstraints(Point pos)
- {
- this(pos.x, pos.y);
- }
-
- /**
- * Creates a new AbsoluteConstraints for specified position.
- *
- * @param x The X position to be represented by this AbsoluteConstraints
- * @param y The Y position to be represented by this AbsoluteConstraints
- */
- public AbsoluteConstraints(int x, int y)
- {
- this.x = x;
- this.y = y;
- }
-
- /**
- * Creates a new AbsoluteConstraints for specified position and size.
- *
- * @param pos The position to be represented by this AbsoluteConstraints
- * @param size The size to be represented by this AbsoluteConstraints or null
- * if the component's preferred size should be used
- */
- public AbsoluteConstraints(Point pos, Dimension size)
- {
- this.x = pos.x;
- this.y = pos.y;
- if (size != null)
- {
- this.width = size.width;
- this.height = size.height;
- }
- }
-
- /**
- * Creates a new AbsoluteConstraints for specified position and size.
- *
- * @param x The X position to be represented by this AbsoluteConstraints
- * @param y The Y position to be represented by this AbsoluteConstraints
- * @param width The width to be represented by this AbsoluteConstraints or -1 if the
- * component's preferred width should be used
- * @param height The height to be represented by this AbsoluteConstraints or -1 if the
- * component's preferred height should be used
- */
- public AbsoluteConstraints(int x, int y, int width, int height)
- {
- this.x = x;
- this.y = y;
- this.width = width;
- this.height = height;
- }
-
- /**
- * @return The X position represented by this AbsoluteConstraints
- */
- public int getX()
- {
- return x;
- }
-
- /**
- * @return The Y position represented by this AbsoluteConstraints
- */
- public int getY()
- {
- return y;
- }
-
- /**
- * @return The width represented by this AbsoluteConstraints or -1 if the
- * component's preferred width should be used
- */
- public int getWidth()
- {
- return width;
- }
-
- /**
- * @return The height represented by this AbsoluteConstraints or -1 if the
- * component's preferred height should be used
- */
- public int getHeight()
- {
- return height;
- }
-
- public String toString()
- {
- return super.toString() + " [x=" + x + ", y=" + y + ", width=" + width + ", height=" + height + "]";
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/skin/AbsoluteLayout.java b/java/src/javazoom/jlgui/player/amp/skin/AbsoluteLayout.java
deleted file mode 100644
index 4f9ead0..0000000
--- a/java/src/javazoom/jlgui/player/amp/skin/AbsoluteLayout.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * AbsoluteLayout.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.skin;
-
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.LayoutManager;
-import java.awt.LayoutManager2;
-
-/**
- * AbsoluteLayout is a LayoutManager that works as a replacement for "null" layout to
- * allow placement of components in absolute positions.
- */
-public class AbsoluteLayout implements LayoutManager2, java.io.Serializable
-{
- /**
- * generated Serialized Version UID
- */
- static final long serialVersionUID = -1919857869177070440L;
-
- /**
- * Adds the specified component with the specified name to
- * the layout.
- *
- * @param name the component name
- * @param comp the component to be added
- */
- public void addLayoutComponent(String name, Component comp)
- {
- throw new IllegalArgumentException();
- }
-
- /**
- * Removes the specified component from the layout.
- *
- * @param comp the component to be removed
- */
- public void removeLayoutComponent(Component comp)
- {
- constraints.remove(comp);
- }
-
- /**
- * Calculates the preferred dimension for the specified
- * panel given the components in the specified parent container.
- *
- * @param parent the component to be laid out
- * @see #minimumLayoutSize
- */
- public Dimension preferredLayoutSize(Container parent)
- {
- int maxWidth = 0;
- int maxHeight = 0;
- for (java.util.Enumeration e = constraints.keys(); e.hasMoreElements();)
- {
- Component comp = (Component) e.nextElement();
- AbsoluteConstraints ac = (AbsoluteConstraints) constraints.get(comp);
- Dimension size = comp.getPreferredSize();
- int width = ac.getWidth();
- if (width == -1) width = size.width;
- int height = ac.getHeight();
- if (height == -1) height = size.height;
- if (ac.x + width > maxWidth) maxWidth = ac.x + width;
- if (ac.y + height > maxHeight) maxHeight = ac.y + height;
- }
- return new Dimension(maxWidth, maxHeight);
- }
-
- /**
- * Calculates the minimum dimension for the specified
- * panel given the components in the specified parent container.
- *
- * @param parent the component to be laid out
- * @see #preferredLayoutSize
- */
- public Dimension minimumLayoutSize(Container parent)
- {
- int maxWidth = 0;
- int maxHeight = 0;
- for (java.util.Enumeration e = constraints.keys(); e.hasMoreElements();)
- {
- Component comp = (Component) e.nextElement();
- AbsoluteConstraints ac = (AbsoluteConstraints) constraints.get(comp);
- Dimension size = comp.getMinimumSize();
- int width = ac.getWidth();
- if (width == -1) width = size.width;
- int height = ac.getHeight();
- if (height == -1) height = size.height;
- if (ac.x + width > maxWidth) maxWidth = ac.x + width;
- if (ac.y + height > maxHeight) maxHeight = ac.y + height;
- }
- return new Dimension(maxWidth, maxHeight);
- }
-
- /**
- * Lays out the container in the specified panel.
- *
- * @param parent the component which needs to be laid out
- */
- public void layoutContainer(Container parent)
- {
- for (java.util.Enumeration e = constraints.keys(); e.hasMoreElements();)
- {
- Component comp = (Component) e.nextElement();
- AbsoluteConstraints ac = (AbsoluteConstraints) constraints.get(comp);
- Dimension size = comp.getPreferredSize();
- int width = ac.getWidth();
- if (width == -1) width = size.width;
- int height = ac.getHeight();
- if (height == -1) height = size.height;
- comp.setBounds(ac.x, ac.y, width, height);
- }
- }
-
- /**
- * Adds the specified component to the layout, using the specified
- * constraint object.
- *
- * @param comp the component to be added
- * @param constr where/how the component is added to the layout.
- */
- public void addLayoutComponent(Component comp, Object constr)
- {
- if (!(constr instanceof AbsoluteConstraints)) throw new IllegalArgumentException();
- constraints.put(comp, constr);
- }
-
- /**
- * Returns the maximum size of this component.
- *
- * @see java.awt.Component#getMinimumSize()
- * @see java.awt.Component#getPreferredSize()
- * @see LayoutManager
- */
- public Dimension maximumLayoutSize(Container target)
- {
- return new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
- }
-
- /**
- * Returns the alignment along the x axis. This specifies how
- * the component would like to be aligned relative to other
- * components. The value should be a number between 0 and 1
- * where 0 represents alignment along the origin, 1 is aligned
- * the furthest away from the origin, 0.5 is centered, etc.
- */
- public float getLayoutAlignmentX(Container target)
- {
- return 0;
- }
-
- /**
- * Returns the alignment along the y axis. This specifies how
- * the component would like to be aligned relative to other
- * components. The value should be a number between 0 and 1
- * where 0 represents alignment along the origin, 1 is aligned
- * the furthest away from the origin, 0.5 is centered, etc.
- */
- public float getLayoutAlignmentY(Container target)
- {
- return 0;
- }
-
- /**
- * Invalidates the layout, indicating that if the layout manager
- * has cached information it should be discarded.
- */
- public void invalidateLayout(Container target)
- {
- }
- /**
- * A mapping
- */
- protected java.util.Hashtable constraints = new java.util.Hashtable();
-}
diff --git a/java/src/javazoom/jlgui/player/amp/skin/ActiveFont.java b/java/src/javazoom/jlgui/player/amp/skin/ActiveFont.java
deleted file mode 100644
index a0eba43..0000000
--- a/java/src/javazoom/jlgui/player/amp/skin/ActiveFont.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * ActiveFont.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.skin;
-
-import java.awt.Image;
-
-public class ActiveFont
-{
- private Image image = null;
- private String index = null;
- private int width = -1;
- private int height = -1;
-
- public ActiveFont()
- {
- super();
- }
-
- public ActiveFont(Image image, String index, int width, int height)
- {
- super();
- this.image=image;
- this.index=index;
- this.width=width;
- this.height=height;
- }
-
- public int getHeight()
- {
- return height;
- }
-
- public void setHeight(int height)
- {
- this.height = height;
- }
-
- public Image getImage()
- {
- return image;
- }
-
- public void setImage(Image image)
- {
- this.image = image;
- }
-
- public String getIndex()
- {
- return index;
- }
-
- public void setIndex(String index)
- {
- this.index = index;
- }
-
- public int getWidth()
- {
- return width;
- }
-
- public void setWidth(int width)
- {
- this.width = width;
- }
-
-}
diff --git a/java/src/javazoom/jlgui/player/amp/skin/ActiveJBar.java b/java/src/javazoom/jlgui/player/amp/skin/ActiveJBar.java
deleted file mode 100644
index d45c40d..0000000
--- a/java/src/javazoom/jlgui/player/amp/skin/ActiveJBar.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * ActiveJBar.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.skin;
-
-import javax.swing.JPanel;
-
-public class ActiveJBar extends JPanel
-{
- private AbsoluteConstraints constraints = null;
-
- public ActiveJBar()
- {
- super();
- }
-
- public void setConstraints(AbsoluteConstraints cnts)
- {
- constraints = cnts;
- }
-
- public AbsoluteConstraints getConstraints()
- {
- return constraints;
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/skin/ActiveJButton.java b/java/src/javazoom/jlgui/player/amp/skin/ActiveJButton.java
deleted file mode 100644
index f6cde82..0000000
--- a/java/src/javazoom/jlgui/player/amp/skin/ActiveJButton.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * ActiveJButton.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.skin;
-
-import javax.swing.JButton;
-
-public class ActiveJButton extends JButton
-{
- private AbsoluteConstraints constraints = null;
-
- public ActiveJButton()
- {
- super();
- setBorder(null);
- setDoubleBuffered(true);
- setFocusPainted(false);
- }
-
- public void setConstraints(AbsoluteConstraints cnts)
- {
- constraints = cnts;
- }
-
- public AbsoluteConstraints getConstraints()
- {
- return constraints;
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/skin/ActiveJIcon.java b/java/src/javazoom/jlgui/player/amp/skin/ActiveJIcon.java
deleted file mode 100644
index c6d4bc1..0000000
--- a/java/src/javazoom/jlgui/player/amp/skin/ActiveJIcon.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * ActiveJIcon.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.skin;
-
-import javax.swing.ImageIcon;
-import javax.swing.JLabel;
-
-public class ActiveJIcon extends JLabel
-{
- private AbsoluteConstraints constraints = null;
- private ImageIcon[] icons = null;
-
- public ActiveJIcon()
- {
- super();
- this.setBorder(null);
- this.setDoubleBuffered(true);
- }
-
- public void setIcons(ImageIcon[] icons)
- {
- this.icons = icons;
- }
-
- public void setIcon(int id)
- {
- if ((id >= 0) && (id < icons.length))
- {
- setIcon(icons[id]);
- }
- }
-
- public void setConstraints(AbsoluteConstraints cnts)
- {
- constraints = cnts;
- }
-
- public AbsoluteConstraints getConstraints()
- {
- return constraints;
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/skin/ActiveJLabel.java b/java/src/javazoom/jlgui/player/amp/skin/ActiveJLabel.java
deleted file mode 100644
index 6e1aa71..0000000
--- a/java/src/javazoom/jlgui/player/amp/skin/ActiveJLabel.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * ActiveJLabel.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.skin;
-
-import java.awt.Rectangle;
-import javax.swing.ImageIcon;
-import javax.swing.JLabel;
-
-public class ActiveJLabel extends JLabel
-{
- private AbsoluteConstraints constraints = null;
- private ActiveFont acFont = null;
- private Rectangle cropRectangle = null;
- private String acText = null;
-
- public ActiveJLabel()
- {
- super();
- setBorder(null);
- setDoubleBuffered(true);
- }
-
- public void setConstraints(AbsoluteConstraints cnts)
- {
- constraints = cnts;
- }
-
- public AbsoluteConstraints getConstraints()
- {
- return constraints;
- }
-
- public ActiveFont getAcFont()
- {
- return acFont;
- }
-
- public void setAcFont(ActiveFont acFont)
- {
- this.acFont = acFont;
- }
-
- public Rectangle getCropRectangle()
- {
- return cropRectangle;
- }
-
- public void setCropRectangle(Rectangle cropRectangle)
- {
- this.cropRectangle = cropRectangle;
- }
-
- public String getAcText()
- {
- return acText;
- }
-
- public void setAcText(String txt)
- {
- acText = txt;
-
- acText = acText.replace('È','E');
- acText = acText.replace('É','E');
- acText = acText.replace('Ê','E');
- acText = acText.replace('À','A');
- acText = acText.replace('Ä','A');
- acText = acText.replace('Ç','C');
- acText = acText.replace('Ù','U');
- acText = acText.replace('Ü','U');
- acText = acText.replace('Ï','I');
- if (acFont != null)
- {
- Taftb parser = new Taftb(acFont.getIndex(), acFont.getImage(), acFont.getWidth(), acFont.getHeight(), 0, acText);
- if (cropRectangle != null)
- {
- setIcon(new ImageIcon(parser.getBanner(cropRectangle.x, cropRectangle.y, cropRectangle.width, cropRectangle.height)));
- }
- else
- {
- setIcon(new ImageIcon(parser.getBanner()));
- }
- }
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/skin/ActiveJNumberLabel.java b/java/src/javazoom/jlgui/player/amp/skin/ActiveJNumberLabel.java
deleted file mode 100644
index 0505543..0000000
--- a/java/src/javazoom/jlgui/player/amp/skin/ActiveJNumberLabel.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * ActiveJNumberLabel.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.skin;
-
-import javax.swing.ImageIcon;
-
-public class ActiveJNumberLabel extends ActiveJLabel
-{
- private ImageIcon[] numbers = null;
-
- public ActiveJNumberLabel()
- {
- super();
- }
-
- public ImageIcon[] getNumbers()
- {
- return numbers;
- }
-
- public void setNumbers(ImageIcon[] numbers)
- {
- this.numbers = numbers;
- }
-
- public void setAcText(String numberStr)
- {
- int number = 10;
- try
- {
- number = Integer.parseInt(numberStr);
- }
- catch (NumberFormatException e)
- {
- }
- if ((number >= 0) && (number < numbers.length))
- {
- setIcon(numbers[number]);
- }
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/skin/ActiveJPopup.java b/java/src/javazoom/jlgui/player/amp/skin/ActiveJPopup.java
deleted file mode 100644
index 191aa84..0000000
--- a/java/src/javazoom/jlgui/player/amp/skin/ActiveJPopup.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * ActiveJPopup.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.skin;
-
-import java.awt.GridLayout;
-import javax.swing.JPanel;
-
-public class ActiveJPopup extends JPanel
-{
- private AbsoluteConstraints constraints = null;
- private ActiveJButton[] items = null;
-
- public ActiveJPopup()
- {
- super();
- setBorder(null);
- setDoubleBuffered(true);
- }
-
- public void setConstraints(AbsoluteConstraints cnts)
- {
- constraints = cnts;
- }
-
- public AbsoluteConstraints getConstraints()
- {
- return constraints;
- }
-
- public ActiveJButton[] getItems()
- {
- return items;
- }
-
- public void setItems(ActiveJButton[] items)
- {
- this.items = items;
- if (items != null)
- {
- setLayout(new GridLayout(items.length, 1, 0, 0));
- for (int i=0;i= 0)
- {
- if (parentSlider.getOrientation() == JSlider.HORIZONTAL)
- {
- g.drawImage(img, thumbRect.x + thumbXOffset, thumbYOffset, img.getWidth(null), newThumbHeight, null);
- }
- else
- {
- g.drawImage(img, thumbXOffset, thumbRect.y + thumbYOffset, img.getWidth(null), newThumbHeight, null);
- }
- }
- else
- {
- if (parentSlider.getOrientation() == JSlider.HORIZONTAL)
- {
- g.drawImage(img, thumbRect.x + thumbXOffset, thumbYOffset, img.getWidth(null), img.getHeight(null), null);
- }
- else
- {
- g.drawImage(img, thumbXOffset, thumbRect.y + thumbYOffset, img.getWidth(null), img.getHeight(null), null);
- }
- }
- }
- }
-
- public void paintTrack(Graphics g)
- {
- if (backgroundImages != null)
- {
- int id = (int) Math.round(((double) Math.abs(parentSlider.getValue()) / (double) parentSlider.getMaximum()) * (backgroundImages.length - 1));
- g.drawImage(backgroundImages[id], 0, 0, backgroundImages[id].getWidth(null), backgroundImages[id].getHeight(null), null);
- }
- }
-
- public void setThumbLocation(int x, int y)
- {
- super.setThumbLocation(x, y);
- parentSlider.repaint();
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/skin/DragAdapter.java b/java/src/javazoom/jlgui/player/amp/skin/DragAdapter.java
deleted file mode 100644
index 75a10bc..0000000
--- a/java/src/javazoom/jlgui/player/amp/skin/DragAdapter.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * DragAdapter.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.skin;
-
-import java.awt.Component;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseMotionListener;
-
-public class DragAdapter extends MouseAdapter implements MouseMotionListener
-{
- private int mousePrevX = 0;
- private int mousePrevY = 0;
- private Component component = null;
-
- public DragAdapter(Component component)
- {
- super();
- this.component = component;
- }
-
- public void mousePressed(MouseEvent me)
- {
- super.mousePressed(me);
- mousePrevX = me.getX();
- mousePrevY = me.getY();
- }
-
- public void mouseDragged(MouseEvent me)
- {
- int mX = me.getX();
- int mY = me.getY();
- int cX = component.getX();
- int cY = component.getY();
- int moveX = mX - mousePrevX; // Negative if move left
- int moveY = mY - mousePrevY; // Negative if move down
- if (moveX == 0 && moveY == 0) return;
- mousePrevX = mX - moveX;
- mousePrevY = mY - moveY;
- int newX = cX + moveX;
- int newY = cY + moveY;
- component.setLocation(newX, newY);
- }
-
- public void mouseMoved(MouseEvent e)
- {
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/skin/DropTargetAdapter.java b/java/src/javazoom/jlgui/player/amp/skin/DropTargetAdapter.java
deleted file mode 100644
index 46b6a98..0000000
--- a/java/src/javazoom/jlgui/player/amp/skin/DropTargetAdapter.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * DropTargetAdapter.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.skin;
-
-import java.awt.datatransfer.DataFlavor;
-import java.awt.datatransfer.Transferable;
-import java.awt.datatransfer.UnsupportedFlavorException;
-import java.awt.dnd.DnDConstants;
-import java.awt.dnd.DropTargetDragEvent;
-import java.awt.dnd.DropTargetDropEvent;
-import java.awt.dnd.DropTargetEvent;
-import java.awt.dnd.DropTargetListener;
-import java.io.IOException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public class DropTargetAdapter implements DropTargetListener
-{
- private static Log log = LogFactory.getLog(DropTargetAdapter.class);
-
- public DropTargetAdapter()
- {
- super();
- }
-
- public void dragEnter(DropTargetDragEvent e)
- {
- if (isDragOk(e) == false)
- {
- e.rejectDrag();
- }
- }
-
- public void dragOver(DropTargetDragEvent e)
- {
- if (isDragOk(e) == false)
- {
- e.rejectDrag();
- }
- }
-
- public void dropActionChanged(DropTargetDragEvent e)
- {
- if (isDragOk(e) == false)
- {
- e.rejectDrag();
- }
- }
-
- public void dragExit(DropTargetEvent dte)
- {
- }
-
- protected boolean isDragOk(DropTargetDragEvent e)
- {
- // Check DataFlavor
- DataFlavor[] dfs = e.getCurrentDataFlavors();
- DataFlavor tdf = null;
- for (int i = 0; i < dfs.length; i++)
- {
- if (DataFlavor.javaFileListFlavor.equals(dfs[i]))
- {
- tdf = dfs[i];
- break;
- }
- else if (DataFlavor.stringFlavor.equals(dfs[i]))
- {
- tdf = dfs[i];
- break;
- }
- }
- // Only file list allowed.
- if (tdf != null)
- {
- // Only DnD COPY allowed.
- if ((e.getSourceActions() & DnDConstants.ACTION_COPY) != 0)
- {
- return true;
- }
- else return false;
- }
- else return false;
- }
-
- public void drop(DropTargetDropEvent e)
- {
- // Check DataFlavor
- DataFlavor[] dfs = e.getCurrentDataFlavors();
- DataFlavor tdf = null;
- for (int i = 0; i < dfs.length; i++)
- {
- if (DataFlavor.javaFileListFlavor.equals(dfs[i]))
- {
- tdf = dfs[i];
- break;
- }
- else if (DataFlavor.stringFlavor.equals(dfs[i]))
- {
- tdf = dfs[i];
- break;
- }
- }
- // Data Flavor available ?
- if (tdf != null)
- {
- // Accept COPY DnD only.
- if ((e.getSourceActions() & DnDConstants.ACTION_COPY) != 0)
- {
- e.acceptDrop(DnDConstants.ACTION_COPY);
- }
- else return;
- try
- {
- Transferable t = e.getTransferable();
- Object data = t.getTransferData(tdf);
- processDrop(data);
- }
- catch (IOException ioe)
- {
- log.info("Drop error", ioe);
- e.dropComplete(false);
- return;
- }
- catch (UnsupportedFlavorException ufe)
- {
- log.info("Drop error", ufe);
- e.dropComplete(false);
- return;
- }
- catch (Exception ex)
- {
- log.info("Drop error", ex);
- e.dropComplete(false);
- return;
- }
- e.dropComplete(true);
- }
- }
-
- public void processDrop(Object data)
- {
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/skin/ImageBorder.java b/java/src/javazoom/jlgui/player/amp/skin/ImageBorder.java
deleted file mode 100644
index 50fa8a1..0000000
--- a/java/src/javazoom/jlgui/player/amp/skin/ImageBorder.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * ImageBorder.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.skin;
-
-import java.awt.Component;
-import java.awt.Graphics;
-import java.awt.Image;
-import java.awt.Insets;
-import javax.swing.border.Border;
-
-public class ImageBorder implements Border
-{
- private Insets insets = new Insets(0, 0, 0, 0);
- private Image image = null;
-
- public ImageBorder()
- {
- super();
- }
-
- public void setImage(Image image)
- {
- this.image = image;
- }
-
- public boolean isBorderOpaque()
- {
- return true;
- }
-
- public void paintBorder(Component c, Graphics g, int x, int y, int width, int height)
- {
- if (image != null)
- {
- int x0 = x + (width - image.getWidth(null)) / 2;
- int y0 = y + (height - image.getHeight(null)) / 2;
- g.drawImage(image, x0, y0, null);
- }
- }
-
- public Insets getBorderInsets(Component c)
- {
- return insets;
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/skin/PlaylistUIDelegate.java b/java/src/javazoom/jlgui/player/amp/skin/PlaylistUIDelegate.java
deleted file mode 100644
index 1671688..0000000
--- a/java/src/javazoom/jlgui/player/amp/skin/PlaylistUIDelegate.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * PlaylistUIDelegate.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.skin;
-
-import java.awt.Color;
-import java.awt.Font;
-import java.awt.Graphics;
-import java.awt.Image;
-import javazoom.jlgui.player.amp.playlist.PlaylistItem;
-import javazoom.jlgui.player.amp.playlist.ui.PlaylistUI;
-
-public class PlaylistUIDelegate
-{
- private AbsoluteConstraints constraints = null;
- private Image titleLeftImage = null;
- private Image titleRightImage = null;
- private Image titleCenterImage = null;
- private Image titleStretchImage = null;
- private Image leftImage = null;
- private Image rightImage = null;
- private Image bottomLeftImage = null;
- private Image bottomRightImage = null;
- private Image bottomStretchImage = null;
- private Color backgroundColor = null;
- private Color selectedBackgroundColor = null;
- private Color normalColor = null;
- private Color currentColor = null;
- private Font font = null;
- private int listarea[] = { 12, 24 - 4, 256, 78 };
- private PlaylistUI parent = null;
-
- public PlaylistUIDelegate()
- {
- super();
- currentColor = new Color(102, 204, 255);
- normalColor = new Color(0xb2, 0xe4, 0xf6);
- selectedBackgroundColor = Color.black;
- backgroundColor = Color.black;
- font = new Font("Dialog", Font.PLAIN, 10);
- }
-
- public void setParent(PlaylistUI playlist)
- {
- parent = playlist;
- }
-
- public Color getBackgroundColor()
- {
- return backgroundColor;
- }
-
- public void setBackgroundColor(Color backgroundColor)
- {
- this.backgroundColor = backgroundColor;
- }
-
- public Color getSelectedBackgroundColor()
- {
- return selectedBackgroundColor;
- }
-
- public Color getCurrentColor()
- {
- return currentColor;
- }
-
- public void setCurrentColor(Color currentColor)
- {
- this.currentColor = currentColor;
- }
-
- public Color getNormalColor()
- {
- return normalColor;
- }
-
- public void setNormalColor(Color normalColor)
- {
- this.normalColor = normalColor;
- }
-
- public void setSelectedBackgroundColor(Color selectedColor)
- {
- this.selectedBackgroundColor = selectedColor;
- }
-
- public Image getBottomLeftImage()
- {
- return bottomLeftImage;
- }
-
- public void setBottomLeftImage(Image bottomLeftImage)
- {
- this.bottomLeftImage = bottomLeftImage;
- }
-
- public Image getBottomRightImage()
- {
- return bottomRightImage;
- }
-
- public void setBottomRightImage(Image bottomRightImage)
- {
- this.bottomRightImage = bottomRightImage;
- }
-
- public Image getBottomStretchImage()
- {
- return bottomStretchImage;
- }
-
- public void setBottomStretchImage(Image bottomStretchImage)
- {
- this.bottomStretchImage = bottomStretchImage;
- }
-
- public Image getLeftImage()
- {
- return leftImage;
- }
-
- public void setLeftImage(Image leftImage)
- {
- this.leftImage = leftImage;
- }
-
- public Image getRightImage()
- {
- return rightImage;
- }
-
- public void setRightImage(Image rightImage)
- {
- this.rightImage = rightImage;
- }
-
- public Image getTitleCenterImage()
- {
- return titleCenterImage;
- }
-
- public void setTitleCenterImage(Image titleCenterImage)
- {
- this.titleCenterImage = titleCenterImage;
- }
-
- public Image getTitleLeftImage()
- {
- return titleLeftImage;
- }
-
- public void setTitleLeftImage(Image titleLeftImage)
- {
- this.titleLeftImage = titleLeftImage;
- }
-
- public Image getTitleRightImage()
- {
- return titleRightImage;
- }
-
- public void setTitleRightImage(Image titleRightImage)
- {
- this.titleRightImage = titleRightImage;
- }
-
- public Image getTitleStretchImage()
- {
- return titleStretchImage;
- }
-
- public void setTitleStretchImage(Image titleStretchImage)
- {
- this.titleStretchImage = titleStretchImage;
- }
-
- public void setConstraints(AbsoluteConstraints cnts)
- {
- constraints = cnts;
- }
-
- public AbsoluteConstraints getConstraints()
- {
- return constraints;
- }
-
- public int getLines()
- {
- return ((listarea[3] - listarea[1]) / 12);
- }
-
- public boolean isInSelectArea(int x, int y)
- {
- return (x >= listarea[0] && x <= listarea[2] && y >= listarea[1] && y <= listarea[3]);
- }
-
- public boolean isIndexArea(int y, int n)
- {
- return (y >= listarea[1] + 12 - 10 + n * 12 && y < listarea[1] + 12 - 10 + n * 12 + 14);
- }
-
- public void paintBackground(Graphics g)
- {
- g.drawImage(titleLeftImage, 0, 0, null);
- g.drawImage(titleStretchImage, 25, 0, null);
- g.drawImage(titleStretchImage, 50, 0, null);
- g.drawImage(titleStretchImage, 62, 0, null);
- g.drawImage(titleCenterImage, 87, 0, null);
- g.drawImage(titleStretchImage, 187, 0, null);
- g.drawImage(titleStretchImage, 200, 0, null);
- g.drawImage(titleStretchImage, 225, 0, null);
- g.drawImage(titleRightImage, 250, 0, null);
- g.drawImage(leftImage, 0, 20, null);
- g.drawImage(leftImage, 0, 48, null);
- g.drawImage(leftImage, 0, 50, null);
- //g.drawImage(rightImage, parent.getWidth() - 20, 20, null);
- //g.drawImage(rightImage, parent.getWidth() - 20, 48, null);
- //g.drawImage(rightImage, parent.getWidth() - 20, 50, null);
- g.drawImage(bottomLeftImage, 0, parent.getHeight() - 38, null);
- g.drawImage(bottomRightImage, 125, parent.getHeight() - 38, null);
- }
-
- public void paintList(Graphics g)
- {
- g.setColor(backgroundColor);
- g.fillRect(listarea[0], listarea[1], listarea[2] - listarea[0], listarea[3] - listarea[1]);
- if (font != null) g.setFont(font);
- if (parent.getPlaylist() != null)
- {
- int currentSelection = parent.getPlaylist().getSelectedIndex();
- g.setColor(normalColor);
- int n = parent.getPlaylist().getPlaylistSize();
- for (int i = 0; i < n; i++)
- {
- if (i < parent.getTopIndex()) continue;
- int k = i - parent.getTopIndex();
- if (listarea[1] + 12 + k * 12 > listarea[3]) break;
- PlaylistItem pli = parent.getPlaylist().getItemAt(i);
- String name = pli.getFormattedName();
- if (pli.isSelected())
- {
- g.setColor(selectedBackgroundColor);
- g.fillRect(listarea[0] + 4, listarea[1] + 12 - 10 + k * 12, listarea[2] - listarea[0] - 4, 14);
- }
- if (i == currentSelection) g.setColor(currentColor);
- else g.setColor(normalColor);
- if (i + 1 >= 10) g.drawString((i + 1) + ". " + name, listarea[0] + 12, listarea[1] + 12 + k * 12);
- else g.drawString("0" + (i + 1) + ". " + name, listarea[0] + 12, listarea[1] + 12 + k * 12);
- if (i == currentSelection) g.setColor(normalColor);
- }
- //g.drawImage(rightImage, parent.getWidth() - 20, 20, null);
- //g.drawImage(rightImage, parent.getWidth() - 20, 48, null);
- //g.drawImage(rightImage, parent.getWidth() - 20, 50, null);
- }
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/skin/PopupAdapter.java b/java/src/javazoom/jlgui/player/amp/skin/PopupAdapter.java
deleted file mode 100644
index 3616a74..0000000
--- a/java/src/javazoom/jlgui/player/amp/skin/PopupAdapter.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * PopupAdapter.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.skin;
-
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import javax.swing.JPopupMenu;
-
-public class PopupAdapter extends MouseAdapter
-{
- private JPopupMenu popup = null;
-
- public PopupAdapter(JPopupMenu popup)
- {
- super();
- this.popup=popup;
- }
-
- public void mousePressed(MouseEvent e)
- {
- checkPopup(e);
- }
-
- public void mouseClicked(MouseEvent e)
- {
- checkPopup(e);
- }
-
- public void mouseReleased(MouseEvent e)
- {
- checkPopup(e);
- }
-
- private void checkPopup(MouseEvent e)
- {
- if (e.isPopupTrigger())
- {
- popup.show(e.getComponent(), e.getX(), e.getY());
- }
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/skin/Skin.java b/java/src/javazoom/jlgui/player/amp/skin/Skin.java
deleted file mode 100644
index acd85fb..0000000
--- a/java/src/javazoom/jlgui/player/amp/skin/Skin.java
+++ /dev/null
@@ -1,1493 +0,0 @@
-/*
- * Skin.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.skin;
-
-import java.awt.Color;
-import java.awt.Graphics;
-import java.awt.Image;
-import java.awt.Rectangle;
-import java.awt.image.BufferedImage;
-import java.awt.image.PixelGrabber;
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-import javax.swing.ImageIcon;
-import javax.swing.JSlider;
-import javazoom.jlgui.player.amp.PlayerActionEvent;
-import javazoom.jlgui.player.amp.equalizer.ui.SplinePanel;
-import javazoom.jlgui.player.amp.util.Config;
-//import javazoom.jlgui.player.amp.visual.ui.SpectrumTimeAnalyzer;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * This class allows to load all skin (2.0 compliant) features.
- */
-public class Skin
-{
- private static Log log = LogFactory.getLog(Skin.class);
- public static final String TITLETEXT = "jlGui 3.0 ";
- private Config config = null;
- private String skinVersion = "1"; // 1, 2, for different Volume.bmp
- private String path = null;
- private boolean dspEnabled = true;
- /*-- Window Parameters --*/
- private int WinWidth, WinHeight;
- private String theMain = "main.bmp";
- private Image imMain = null;
- /*-- Text Members --*/
- private int fontWidth = 5;
- private int fontHeight = 6;
- private String theText = "text.bmp";
- private Image imText;
- private String fontIndex = "ABCDEFGHIJKLMNOPQRSTUVWXYZ\"@a " + "0123456789 :()-'!_+ /[]^&%.=$#" + " ?*";
- private ActiveFont acFont = null;
- private ActiveJLabel acTitleLabel = null;
- private ActiveJLabel acSampleRateLabel = null;
- private ActiveJLabel acBitRateLabel = null;
- private String sampleRateClearText = " ";
- private int[] sampleRateLocation = { 156, 43 };
- private String bitsRateClearText = " ";
- private int[] bitsRateLocation = { 110, 43 };
- private int[] titleLocation = { 111, 27 };
- /*-- Numbers Members --*/
- private int numberWidth = 9;
- private int numberHeight = 13;
- private String theNumbers = "numbers.bmp";
- private String theNumEx = "nums_ex.bmp";
- private Image imNumbers;
- private String numberIndex = "0123456789 ";
- private int[] minuteHLocation = { 48, 26 };
- private int[] minuteLLocation = { 60, 26 };
- private int[] secondHLocation = { 78, 26 };
- private int[] secondLLocation = { 90, 26 };
- private ActiveJNumberLabel acMinuteH = null;
- private ActiveJNumberLabel acMinuteL = null;
- private ActiveJNumberLabel acSecondH = null;
- private ActiveJNumberLabel acSecondL = null;
- /*-- Buttons Panel members --*/
- private String theButtons = "cbuttons.bmp";
- private Image imButtons;
- private ActiveJButton acPrevious, acPlay, acPause, acStop, acNext, acEject;
- private Image imPrevious, imPlay, imPause, imStop, imNext, imEject;
- private Image[] releasedImage = { imPrevious, imPlay, imPause, imStop, imNext, imEject };
- private Image[] pressedImage = { imPrevious, imPlay, imPause, imStop, imNext, imEject };
- private int[] releasedPanel = { 0, 0, 23, 18, 23, 0, 23, 18, 46, 0, 23, 18, 69, 0, 23, 18, 92, 0, 22, 18, 114, 0, 22, 16 };
- private int[] pressedPanel = { 0, 18, 23, 18, 23, 18, 23, 18, 46, 18, 23, 18, 69, 18, 23, 18, 92, 18, 22, 18, 114, 16, 22, 16 };
- private int[] panelLocation = { 16, 88, 39, 88, 62, 88, 85, 88, 108, 88, 136, 89 };
- /*-- EqualizerUI/Playlist/Shuffle/Repeat --*/
- private String theEPSRButtons = "shufrep.bmp";
- private Image imEPSRButtons;
- private ActiveJToggleButton acEqualizer, acPlaylist, acShuffle, acRepeat;
- private Image[] releasedEPSRImage = { null, null, null, null };
- private Image[] pressedEPSRImage = { null, null, null, null };
- private int[] releasedEPSRPanel = { 0, 61, 23, 12, 23, 61, 23, 12, 28, 0, 47, 15, 0, 0, 28, 15 };
- private int[] pressedEPSRPanel = { 0, 73, 23, 12, 23, 73, 23, 12, 28, 30, 47, 15, 0, 30, 28, 15 };
- private int[] panelEPSRLocation = { 219, 58, 242, 58, 164, 89, 212, 89 };
- /*-- Volume Panel members --*/
- public static final int VOLUMEMAX = 100;
- private String theVolume = "volume.bmp";
- private Image imVolume;
- private ActiveJSlider acVolume = null;;
- private Image[] volumeImage = { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null };
- private String fakeIndex = "abcdefghijklmnopqrstuvwxyz01";
- private int[] volumeBarLocation = { 107, 57 };
- private Image[] releasedVolumeImage = { null };
- private Image[] pressedVolumeImage = { null };
- private int[] releasedVolumePanel0 = { 15, 422, 14, 11 };
- private int[] pressedVolumePanel0 = { 0, 422, 14, 11 };
- private int[] releasedVolumePanel1 = { 75, 376, 14, 11 };
- private int[] pressedVolumePanel1 = { 90, 376, 14, 11 };
- /*-- Balance Panel members --*/
- public static final int BALANCEMAX = 5;
- private String theBalance = "balance.bmp";
- private ActiveJSlider acBalance = null;
- private Image imBalance;
- private Image[] balanceImage = { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null };
- private Image[] releasedBalanceImage = { null };
- private Image[] pressedBalanceImage = { null };
- private int[] releasedBalancePanel0 = { 15, 422, 14, 11 };
- private int[] pressedBalancePanel0 = { 0, 422, 14, 11 };
- private int[] releasedBalancePanel1 = { 75, 376, 14, 11 };
- private int[] pressedBalancePanel1 = { 90, 376, 14, 11 };
- private int[] balanceBarLocation = { 177, 57 };
- /*-- Title members --*/
- private String theTitleBar = "titlebar.bmp";
- private Image imTitleBar;
- private ActiveJBar acTitleBar = null;
- private Image imTitleB;
- private Image[] releasedTitleIm = { imTitleB };
- private Image[] pressedTitleIm = { imTitleB };
- private int[] releasedTitlePanel = { 27, 0, 264 - 20, 14 }; // -20 for the two button add by me
- private int[] pressedTitlePanel = { 27, 15, 264 - 20, 14 };// -20 for the two button add by me
- private int[] titleBarLocation = { 0, 0 };
- /*-- Exit member --*/
- private ActiveJButton acExit = null;
- private int[] releasedExitPanel = { 18, 0, 9, 9 };
- private int[] pressedExitPanel = { 18, 9, 9, 9 };
- private Image[] releasedExitIm = { null };
- private Image[] pressedExitIm = { null };
- private int[] exitLocation = { 264, 3 };
- /*-- Minimize member --*/
- private ActiveJButton acMinimize = null;
- private int[] releasedMinimizePanel = { 9, 0, 9, 9 };
- private int[] pressedMinimizePanel = { 9, 9, 9, 9 };
- private Image[] releasedMinimizeIm = { null };
- private Image[] pressedMinimizeIm = { null };
- private int[] minimizeLocation = { 244, 3 };
- /*-- Mono/Stereo Members --*/
- private String theMode = "monoster.bmp";
- private Image imMode;
- private int[] activeModePanel = { 0, 0, 28, 12, 29, 0, 27, 12 };
- private int[] passiveModePanel = { 0, 12, 28, 12, 29, 12, 27, 12 };
- private Image[] activeModeImage = { null, null };
- private Image[] passiveModeImage = { null, null };
- private int[] monoLocation = { 212, 41 };
- private int[] stereoLocation = { 239, 41 };
- private ActiveJIcon acMonoIcon = null;
- private ActiveJIcon acStereoIcon = null;
- /*-- PosBar members --*/
- public static final int POSBARMAX = 1000;
- private String thePosBar = "posbar.bmp";
- private Image imPosBar;
- private ActiveJSlider acPosBar = null;
- private Image[] releasedPosIm = { null };
- private Image[] pressedPosIm = { null };
- private int[] releasedPosPanel = { 248, 0, 28, 10 };
- private int[] pressedPosPanel = { 278, 0, 28, 10 };
- private int[] posBarLocation = { 16, 72 };
- /*-- Play/Pause Icons --*/
- private String theIcons = "playpaus.bmp";
- private Image imIcons;
- private Image[] iconsImage = { null, null, null, null, null };
- private int[] iconsPanel = { 0, 0, 9, 9, 9, 0, 9, 9, 18, 0, 9, 9, 36, 0, 3, 9, 27, 0, 2, 9 };
- private int[] iconsLocation = { 26, 28, 24, 28 };
- private ActiveJIcon acPlayIcon = null;
- private ActiveJIcon acTimeIcon = null;
- /*-- Readme --*/
- private String theReadme = "readme.txt";
- private String readme = null;
- /*-- DSP and viscolor --*/
- private String theViscolor = "viscolor.txt";
- private String viscolor = null;
- private int[] visualLocation = { 24, 44 };
- private int[] visualSize = { 76, 15 };
- //private SpectrumTimeAnalyzer analyzer = null;
- /*-- EqualizerUI --*/
- private Image imFullEqualizer = null;
- private Image imEqualizer = null;
- private Image imSliders = null;
- private ActiveJSlider[] acSlider = { null, null, null, null, null, null, null, null, null, null, null };
- private Image[] sliderImage = { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null };
- private int[][] sliderBarLocation = { { 21, 38 }, { 78, 38 }, { 96, 38 }, { 114, 38 }, { 132, 38 }, { 150, 38 }, { 168, 38 }, { 186, 38 }, { 204, 38 }, { 222, 38 }, { 240, 38 } };
- private Image[] releasedSliderImage = { null };
- private Image[] pressedSliderImage = { null };
- private int[][] sliderLocation = { { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 } };
- private Image[] releasedPresetsImage = { null };
- private Image[] pressedPresetsImage = { null };
- private int[] panelPresetsLocation = { 217, 18 };
- private ActiveJButton acPresets = null;
- private ActiveJToggleButton acOnOff, acAuto;
- private Image[] releasedOAImage = { null, null };
- private Image[] pressedOAImage = { null, null };
- private int[] panelOALocation = { 15, 18, 39, 18 };
- private SplinePanel spline = null;
- private int[] panelSplineLocation = { 88, 17, 113, 19 };
- private Image splineImage = null;
- private Image splineBarImage = null;
- private ResourceBundle bundle = null;
- /*-- Playlist --*/
- private PlaylistUIDelegate playlist = null;
- private Image imPlaylist = null;
- private String plEdit = null;
- private ActiveJSlider acPlSlider = null;
- private int[] plSliderLocation = { 255, 20 };
- private ActiveJButton acPlUp, acPlDown;
- private ActiveJButton acPlAdd, acPlRemove, acPlSelect, acPlMisc, acPlList;
- private int[] plAddLocation = { 14, 86 };
- private int[] plRemoveLocation = { 14 + 30, 86 };
- private int[] plSelectLocation = { 14 + 60, 86 };
- private int[] plMiscLocation = { 14 + 89, 86 };
- private int[] plListLocation = { 14 + 214, 86 };
- private ActiveJPopup acPlAddPopup, acPlRemovePopup, acPlSelectPopup, acPlMiscPopup, acPlListPopup;
- private int[] plAddPopupArea = { 14, 50, 22, 18 * 3 };
- private int[] plRemovePopupArea = { 14 + 29, 32, 22, 18 * 4 };
- private int[] plSelectPopupArea = { 14 + 58, 50, 22, 18 * 3 };
- private int[] plMiscPopupArea = { 14 + 87, 50, 22, 18 * 3 };
- private int[] plListPopupArea = { 14 + 217, 50, 22, 18 * 3 };
-
- public Skin()
- {
- super();
- String i18n = "javazoom/jlgui/player/amp/skin/skin";
- bundle = ResourceBundle.getBundle(i18n);
- }
-
- /**
- * Return I18N value of a given key.
- * @param key
- * @return
- */
- public String getResource(String key)
- {
- String value = null;
- try
- {
- value = bundle.getString(key);
- }
- catch (MissingResourceException e)
- {
- log.debug(e);
- }
- return value;
- }
-
- /**
- * Return skin path.
- * @return
- */
- public String getPath()
- {
- return path;
- }
-
- public void setPath(String path)
- {
- this.path = path;
- }
-
- public boolean isDspEnabled()
- {
- return dspEnabled;
- }
-
- public void setDspEnabled(boolean dspEnabled)
- {
- this.dspEnabled = dspEnabled;
- }
-
- /**
- * Loads a new skin from local file system.
- * @param skinName
- */
- public void loadSkin(String skinName)
- {
- SkinLoader skl = new SkinLoader(skinName);
- try
- {
- loadSkin(skl);
- path = skinName;
- }
- catch (Exception e)
- {
- log.info("Can't load skin : ", e);
- InputStream sis = this.getClass().getClassLoader().getResourceAsStream("javazoom/jlgui/player/amp/metrix.wsz");
- log.info("Load default skin for JAR");
- loadSkin(sis);
- }
- }
-
- /**
- * Loads a new skin from any input stream.
- * @param skinStream
- */
- public void loadSkin(InputStream skinStream)
- {
- SkinLoader skl = new SkinLoader(skinStream);
- try
- {
- loadSkin(skl);
- }
- catch (Exception e)
- {
- log.info("Can't load skin : ", e);
- InputStream sis = this.getClass().getClassLoader().getResourceAsStream("javazoom/jlgui/player/amp/metrix.wsz");
- log.info("Load default skin for JAR");
- loadSkin(sis);
- }
- }
-
- /**
- * Loads a skin from a SkinLoader.
- * @param skl
- * @throws Exception
- */
- public void loadSkin(SkinLoader skl) throws Exception
- {
- skl.loadImages();
- imMain = skl.getImage(theMain);
- imButtons = skl.getImage(theButtons);
- imTitleBar = skl.getImage(theTitleBar);
- imText = skl.getImage(theText);
- imMode = skl.getImage(theMode);
- imNumbers = skl.getImage(theNumbers);
- // add by John Yang
- if (imNumbers == null)
- {
- log.debug("Try load nums_ex.bmp !");
- imNumbers = skl.getImage(theNumEx);
- }
- imVolume = skl.getImage(theVolume);
- imBalance = skl.getImage(theBalance);
- imIcons = skl.getImage(theIcons);
- imPosBar = skl.getImage(thePosBar);
- imEPSRButtons = skl.getImage(theEPSRButtons);
- viscolor = (String) skl.getContent(theViscolor);
- String readmeStr = theReadme;
- readme = (String) skl.getContent(readmeStr);
- if (readme == null)
- {
- readmeStr = readmeStr.toUpperCase();
- readme = (String) skl.getContent(readmeStr);
- }
- if (readme == null)
- {
- readmeStr = readmeStr.substring(0, 1) + theReadme.substring(1, theReadme.length());
- readme = (String) skl.getContent(readmeStr);
- }
- // Computes volume slider height :
- int vh = (imVolume.getHeight(null) - 422);
- if (vh > 0)
- {
- releasedVolumePanel0[3] = vh;
- pressedVolumePanel0[3] = vh;
- releasedVolumePanel1[3] = vh;
- pressedVolumePanel1[3] = vh;
- }
- // Computes balance slider height :
- if (imBalance == null) imBalance = imVolume;
- int bh = (imBalance.getHeight(null) - 422);
- if (bh > 0)
- {
- releasedBalancePanel0[3] = bh;
- pressedBalancePanel0[3] = bh;
- releasedBalancePanel1[3] = bh;
- pressedBalancePanel1[3] = bh;
- }
- // Compute posbar height.
- int ph = imPosBar.getHeight(null);
- if (ph > 0)
- {
- releasedPosPanel[3] = ph;
- pressedPosPanel[3] = ph;
- }
- WinHeight = imMain.getHeight(null); // 116
- WinWidth = imMain.getWidth(null); // 275
- /*-- Text --*/
- acFont = new ActiveFont(imText, fontIndex, fontWidth, fontHeight);
- acTitleLabel = new ActiveJLabel();
- acTitleLabel.setAcFont(acFont);
- acTitleLabel.setCropRectangle(new Rectangle(0, 0, 155, 6));
- acTitleLabel.setConstraints(new AbsoluteConstraints(titleLocation[0], titleLocation[1], 155, 6));
- acTitleLabel.setAcText(TITLETEXT.toUpperCase());
- acSampleRateLabel = new ActiveJLabel();
- acSampleRateLabel.setAcFont(acFont);
- acSampleRateLabel.setConstraints(new AbsoluteConstraints(sampleRateLocation[0], sampleRateLocation[1]));
- acSampleRateLabel.setAcText(sampleRateClearText);
- acBitRateLabel = new ActiveJLabel();
- acBitRateLabel.setAcFont(acFont);
- acBitRateLabel.setConstraints(new AbsoluteConstraints(bitsRateLocation[0], bitsRateLocation[1]));
- acBitRateLabel.setAcText(bitsRateClearText);
- /*-- Buttons --*/
- readPanel(releasedImage, releasedPanel, pressedImage, pressedPanel, imButtons);
- setButtonsPanel();
- /*-- Volume/Balance --*/
- if (skinVersion.equals("1"))
- {
- readPanel(releasedVolumeImage, releasedVolumePanel0, pressedVolumeImage, pressedVolumePanel0, imVolume);
- readPanel(releasedBalanceImage, releasedBalancePanel0, pressedBalanceImage, pressedBalancePanel0, imBalance);
- }
- else
- {
- readPanel(releasedVolumeImage, releasedVolumePanel1, pressedVolumeImage, pressedVolumePanel1, imVolume);
- readPanel(releasedBalanceImage, releasedBalancePanel1, pressedBalanceImage, pressedBalancePanel1, imBalance);
- }
- setVolumeBalancePanel(vh, bh);
- /*-- Title Bar --*/
- readPanel(releasedTitleIm, releasedTitlePanel, pressedTitleIm, pressedTitlePanel, imTitleBar);
- setTitleBarPanel();
- /*-- Exit --*/
- readPanel(releasedExitIm, releasedExitPanel, pressedExitIm, pressedExitPanel, imTitleBar);
- setExitPanel();
- /*-- Minimize --*/
- readPanel(releasedMinimizeIm, releasedMinimizePanel, pressedMinimizeIm, pressedMinimizePanel, imTitleBar);
- setMinimizePanel();
- /*-- Mode --*/
- readPanel(activeModeImage, activeModePanel, passiveModeImage, passiveModePanel, imMode);
- setMonoStereoPanel();
- /*-- Numbers --*/
- ImageIcon[] numbers = new ImageIcon[numberIndex.length()];
- for (int h = 0; h < numberIndex.length(); h++)
- {
- numbers[h] = new ImageIcon((new Taftb(numberIndex, imNumbers, numberWidth, numberHeight, 0, "" + numberIndex.charAt(h))).getBanner());
- }
- acMinuteH = new ActiveJNumberLabel();
- acMinuteH.setNumbers(numbers);
- acMinuteH.setConstraints(new AbsoluteConstraints(minuteHLocation[0], minuteHLocation[1]));
- acMinuteH.setAcText(" ");
- acMinuteL = new ActiveJNumberLabel();
- acMinuteL.setNumbers(numbers);
- acMinuteL.setConstraints(new AbsoluteConstraints(minuteLLocation[0], minuteLLocation[1]));
- acMinuteL.setAcText(" ");
- acSecondH = new ActiveJNumberLabel();
- acSecondH.setNumbers(numbers);
- acSecondH.setConstraints(new AbsoluteConstraints(secondHLocation[0], secondHLocation[1]));
- acSecondH.setAcText(" ");
- acSecondL = new ActiveJNumberLabel();
- acSecondL.setNumbers(numbers);
- acSecondL.setConstraints(new AbsoluteConstraints(secondLLocation[0], secondLLocation[1]));
- acSecondL.setAcText(" ");
- /*-- Icons --*/
- readPanel(iconsImage, iconsPanel, null, null, imIcons);
- acPlayIcon = new ActiveJIcon();
- ImageIcon[] playIcons = { new ImageIcon(iconsImage[0]), new ImageIcon(iconsImage[1]), new ImageIcon(iconsImage[2]) };
- acPlayIcon.setIcons(playIcons);
- acPlayIcon.setConstraints(new AbsoluteConstraints(iconsLocation[0], iconsLocation[1]));
- acPlayIcon.setIcon(2);
- acTimeIcon = new ActiveJIcon();
- ImageIcon[] timeIcons = { new ImageIcon(iconsImage[3]), new ImageIcon(iconsImage[4]) };
- acTimeIcon.setIcons(timeIcons);
- acTimeIcon.setConstraints(new AbsoluteConstraints(iconsLocation[2], iconsLocation[3]));
- /*-- DSP --*/
- //setAnalyzerPanel();
- /*-- Pos Bar --*/
- readPanel(releasedPosIm, releasedPosPanel, pressedPosIm, pressedPosPanel, imPosBar);
- setPosBarPanel();
- /*-- EqualizerUI/Playlist/Shuffle/Repeat --*/
- readPanel(releasedEPSRImage, releasedEPSRPanel, pressedEPSRImage, pressedEPSRPanel, imEPSRButtons);
- setEPSRButtonsPanel();
- /*-- EqualizerUI --*/
- imFullEqualizer = skl.getImage("eqmain.bmp");
- imEqualizer = new BufferedImage(WinWidth, WinHeight, BufferedImage.TYPE_INT_RGB);
- imEqualizer.getGraphics().drawImage(imFullEqualizer, 0, 0, null);
- imSliders = new BufferedImage(208, 128, BufferedImage.TYPE_INT_RGB);
- imSliders.getGraphics().drawImage(imFullEqualizer, 0, 0, 208, 128, 13, 164, 13 + 208, 164 + 128, null);
- setSliderPanel();
- setOnOffAutoPanel();
- setPresetsPanel();
- setSplinePanel();
- /*-- Playlist --*/
- imPlaylist = skl.getImage("pledit.bmp");
- plEdit = (String) skl.getContent("pledit.txt");
- setPlaylistPanel();
- }
-
- /**
- * Instantiate Buttons Panel with ActiveComponent.
- */
- private void setButtonsPanel()
- {
- int l = 0;
- acPrevious = new ActiveJButton();
- acPrevious.setIcon(new ImageIcon(releasedImage[0]));
- acPrevious.setPressedIcon(new ImageIcon(pressedImage[0]));
- acPrevious.setConstraints(new AbsoluteConstraints(panelLocation[l++], panelLocation[l++], releasedImage[0].getWidth(null), releasedImage[0].getHeight(null)));
- acPrevious.setToolTipText(getResource("button.previous"));
- acPrevious.setActionCommand(PlayerActionEvent.ACPREVIOUS);
- acPlay = new ActiveJButton();
- acPlay.setIcon(new ImageIcon(releasedImage[1]));
- acPlay.setPressedIcon(new ImageIcon(pressedImage[1]));
- acPlay.setConstraints(new AbsoluteConstraints(panelLocation[l++], panelLocation[l++], releasedImage[1].getWidth(null), releasedImage[1].getHeight(null)));
- acPlay.setToolTipText(getResource("button.play"));
- acPlay.setActionCommand(PlayerActionEvent.ACPLAY);
- acPause = new ActiveJButton();
- acPause.setIcon(new ImageIcon(releasedImage[2]));
- acPause.setPressedIcon(new ImageIcon(pressedImage[2]));
- acPause.setConstraints(new AbsoluteConstraints(panelLocation[l++], panelLocation[l++], releasedImage[2].getWidth(null), releasedImage[2].getHeight(null)));
- acPause.setToolTipText(getResource("button.pause"));
- acPause.setActionCommand(PlayerActionEvent.ACPAUSE);
- acStop = new ActiveJButton();
- acStop.setIcon(new ImageIcon(releasedImage[3]));
- acStop.setPressedIcon(new ImageIcon(pressedImage[3]));
- acStop.setConstraints(new AbsoluteConstraints(panelLocation[l++], panelLocation[l++], releasedImage[3].getWidth(null), releasedImage[3].getHeight(null)));
- acStop.setToolTipText(getResource("button.stop"));
- acStop.setActionCommand(PlayerActionEvent.ACSTOP);
- acNext = new ActiveJButton();
- acNext.setIcon(new ImageIcon(releasedImage[4]));
- acNext.setPressedIcon(new ImageIcon(pressedImage[4]));
- acNext.setConstraints(new AbsoluteConstraints(panelLocation[l++], panelLocation[l++], releasedImage[4].getWidth(null), releasedImage[4].getHeight(null)));
- acNext.setToolTipText(getResource("button.next"));
- acNext.setActionCommand(PlayerActionEvent.ACNEXT);
- acEject = new ActiveJButton();
- acEject.setIcon(new ImageIcon(releasedImage[5]));
- acEject.setPressedIcon(new ImageIcon(pressedImage[5]));
- acEject.setConstraints(new AbsoluteConstraints(panelLocation[l++], panelLocation[l++], releasedImage[5].getWidth(null), releasedImage[5].getHeight(null)));
- acEject.setToolTipText(getResource("button.eject"));
- acEject.setActionCommand(PlayerActionEvent.ACEJECT);
- }
-
- /**
- * Instantiate EPSR Buttons Panel with ActiveComponent.
- * imEqualizer, imPlaylist, imShuffle, imRepeat
- */
- private void setEPSRButtonsPanel()
- {
- int l = 0;
- acEqualizer = new ActiveJToggleButton();
- acEqualizer.setIcon(new ImageIcon(releasedEPSRImage[0]));
- acEqualizer.setSelectedIcon(new ImageIcon(pressedEPSRImage[0]));
- acEqualizer.setPressedIcon(new ImageIcon(pressedEPSRImage[0]));
- acEqualizer.setConstraints(new AbsoluteConstraints(panelEPSRLocation[l++], panelEPSRLocation[l++], releasedEPSRImage[0].getWidth(null), releasedEPSRImage[0].getHeight(null)));
- acEqualizer.setToolTipText(getResource("toggle.equalizer"));
- acEqualizer.setActionCommand(PlayerActionEvent.ACEQUALIZER);
- acEqualizer.setSelected(config.isEqualizerEnabled());
- acPlaylist = new ActiveJToggleButton();
- acPlaylist.setIcon(new ImageIcon(releasedEPSRImage[1]));
- acPlaylist.setSelectedIcon(new ImageIcon(pressedEPSRImage[1]));
- acPlaylist.setPressedIcon(new ImageIcon(pressedEPSRImage[1]));
- acPlaylist.setConstraints(new AbsoluteConstraints(panelEPSRLocation[l++], panelEPSRLocation[l++], releasedEPSRImage[1].getWidth(null), releasedEPSRImage[1].getHeight(null)));
- acPlaylist.setToolTipText(getResource("toggle.playlist"));
- acPlaylist.setActionCommand(PlayerActionEvent.ACPLAYLIST);
- acPlaylist.setSelected(config.isPlaylistEnabled());
- acShuffle = new ActiveJToggleButton();
- acShuffle.setIcon(new ImageIcon(releasedEPSRImage[2]));
- acShuffle.setSelectedIcon(new ImageIcon(pressedEPSRImage[2]));
- acShuffle.setPressedIcon(new ImageIcon(pressedEPSRImage[2]));
- acShuffle.setConstraints(new AbsoluteConstraints(panelEPSRLocation[l++], panelEPSRLocation[l++], releasedEPSRImage[2].getWidth(null), releasedEPSRImage[2].getHeight(null)));
- acShuffle.setToolTipText(getResource("toggle.shuffle"));
- acShuffle.setActionCommand(PlayerActionEvent.ACSHUFFLE);
- acShuffle.setSelected(config.isShuffleEnabled());
- acRepeat = new ActiveJToggleButton();
- acRepeat.setIcon(new ImageIcon(releasedEPSRImage[3]));
- acRepeat.setSelectedIcon(new ImageIcon(pressedEPSRImage[3]));
- acRepeat.setPressedIcon(new ImageIcon(pressedEPSRImage[3]));
- acRepeat.setConstraints(new AbsoluteConstraints(panelEPSRLocation[l++], panelEPSRLocation[l++], releasedEPSRImage[3].getWidth(null), releasedEPSRImage[3].getHeight(null)));
- acRepeat.setToolTipText(getResource("toggle.repeat"));
- acRepeat.setActionCommand(PlayerActionEvent.ACREPEAT);
- acRepeat.setSelected(config.isRepeatEnabled());
- }
-
- /**
- * Instantiate Volume/Balance Panel with ActiveComponent.
- * @param vheight
- * @param bheight
- */
- private void setVolumeBalancePanel(int vheight, int bheight)
- {
- // Volume.
- acVolume = new ActiveJSlider();
- acVolume.setMinimum(0);
- acVolume.setMaximum(VOLUMEMAX);
- int volumeValue = config.getVolume();
- if (volumeValue < 0) volumeValue = (int) VOLUMEMAX / 2;
- acVolume.setValue(volumeValue);
- acVolume.setToolTipText(getResource("slider.volume"));
- int l = 0;
- for (int k = 0; k < volumeImage.length; k++)
- {
- //volumeImage[k] = (new Taftb(fakeIndex, imVolume, 68, 13, 2, "" + fakeIndex.charAt(k))).getBanner();
- volumeImage[k] = (new Taftb(fakeIndex, imVolume, imVolume.getWidth(null), 13, 2, "" + fakeIndex.charAt(k))).getBanner();
- }
- if (volumeImage[0].getHeight(null) > releasedVolumeImage[0].getHeight(null))
- {
- acVolume.setConstraints(new AbsoluteConstraints(volumeBarLocation[l++], volumeBarLocation[l++], volumeImage[0].getWidth(null), volumeImage[0].getHeight(null)));
- }
- else
- {
- acVolume.setConstraints(new AbsoluteConstraints(volumeBarLocation[l++], volumeBarLocation[l++], volumeImage[0].getWidth(null), releasedVolumeImage[0].getHeight(null)));
- }
- ActiveSliderUI sUI = new ActiveSliderUI(acVolume);
- sUI.setThumbImage(releasedVolumeImage[0]);
- sUI.setThumbPressedImage(pressedVolumeImage[0]);
- sUI.setBackgroundImages(volumeImage);
- if (vheight < 0) vheight = 0;
- sUI.forceThumbHeight(vheight);
- sUI.setThumbXOffset(0);
- sUI.setThumbYOffset(1);
- acVolume.setUI(sUI);
- // Balance
- acBalance = new ActiveJSlider();
- acBalance.setMinimum(-BALANCEMAX);
- acBalance.setMaximum(BALANCEMAX);
- acBalance.setValue(0);
- acBalance.setToolTipText(getResource("slider.balance"));
- Image cropBalance = new BufferedImage(38, 418, BufferedImage.TYPE_INT_RGB);
- Graphics g = cropBalance.getGraphics();
- g.drawImage(imBalance, 0, 0, 38, 418, 9, 0, 9 + 38, 0 + 418, null);
- for (int k = 0; k < balanceImage.length; k++)
- {
- balanceImage[k] = (new Taftb(fakeIndex, cropBalance, 38, 13, 2, "" + fakeIndex.charAt(k))).getBanner();
- }
- l = 0;
- if (balanceImage[0].getHeight(null) > releasedBalanceImage[0].getHeight(null))
- {
- acBalance.setConstraints(new AbsoluteConstraints(balanceBarLocation[l++], balanceBarLocation[l++], balanceImage[0].getWidth(null), balanceImage[0].getHeight(null)));
- }
- else
- {
- acBalance.setConstraints(new AbsoluteConstraints(balanceBarLocation[l++], balanceBarLocation[l++], balanceImage[0].getWidth(null), releasedBalanceImage[0].getHeight(null)));
- }
- sUI = new ActiveSliderUI(acBalance);
- sUI.setThumbImage(releasedBalanceImage[0]);
- sUI.setThumbPressedImage(pressedBalanceImage[0]);
- sUI.setBackgroundImages(balanceImage);
- if (bheight < 0) bheight = 0;
- sUI.forceThumbHeight(bheight);
- sUI.setThumbXOffset(1);
- sUI.setThumbYOffset(1);
- acBalance.setUI(sUI);
- }
-
- /**
- * Instantiate Title Panel with ActiveComponent.
- */
- protected void setTitleBarPanel()
- {
- int l = 0;
- acTitleBar = new ActiveJBar();
- ImageBorder border = new ImageBorder();
- border.setImage(releasedTitleIm[0]);
- acTitleBar.setBorder(border);
- acTitleBar.setConstraints(new AbsoluteConstraints(titleBarLocation[l++], titleBarLocation[l++], releasedTitleIm[0].getWidth(null), releasedTitleIm[0].getHeight(null)));
- }
-
- /**
- * Instantiate Exit Panel with ActiveComponent.
- */
- protected void setExitPanel()
- {
- int l = 0;
- acExit = new ActiveJButton();
- acExit.setIcon(new ImageIcon(releasedExitIm[0]));
- acExit.setPressedIcon(new ImageIcon(pressedExitIm[0]));
- acExit.setConstraints(new AbsoluteConstraints(exitLocation[l++], exitLocation[l++], releasedExitIm[0].getWidth(null), releasedExitIm[0].getHeight(null)));
- acExit.setToolTipText(getResource("button.exit"));
- acExit.setActionCommand(PlayerActionEvent.ACEXIT);
- }
-
- /**
- * Instantiate Minimize Panel with ActiveComponent.
- */
- protected void setMinimizePanel()
- {
- int l = 0;
- acMinimize = new ActiveJButton();
- acMinimize.setIcon(new ImageIcon(releasedMinimizeIm[0]));
- acMinimize.setPressedIcon(new ImageIcon(pressedMinimizeIm[0]));
- acMinimize.setConstraints(new AbsoluteConstraints(minimizeLocation[l++], minimizeLocation[l++], releasedMinimizeIm[0].getWidth(null), releasedMinimizeIm[0].getHeight(null)));
- acMinimize.setToolTipText(getResource("button.minimize"));
- acMinimize.setActionCommand(PlayerActionEvent.ACMINIMIZE);
- }
-
- /**
- * Instantiate Mono/Stereo panel.
- */
- private void setMonoStereoPanel()
- {
- acMonoIcon = new ActiveJIcon();
- ImageIcon[] mono = { new ImageIcon(passiveModeImage[1]), new ImageIcon(activeModeImage[1]) };
- acMonoIcon.setIcons(mono);
- acMonoIcon.setIcon(0);
- acMonoIcon.setConstraints(new AbsoluteConstraints(monoLocation[0], monoLocation[1], passiveModeImage[1].getWidth(null), passiveModeImage[1].getHeight(null)));
- acStereoIcon = new ActiveJIcon();
- ImageIcon[] stereo = { new ImageIcon(passiveModeImage[0]), new ImageIcon(activeModeImage[0]) };
- acStereoIcon.setIcons(stereo);
- acStereoIcon.setIcon(0);
- acStereoIcon.setConstraints(new AbsoluteConstraints(stereoLocation[0], stereoLocation[1], passiveModeImage[0].getWidth(null), passiveModeImage[0].getHeight(null)));
- }
-
- /**
- * Initialize Spectrum/Time analyzer.
- */
- private void setAnalyzerPanel()
- {
- String javaVersion = System.getProperty("java.version");
- if ((javaVersion != null) && ((javaVersion.startsWith("1.3"))) || (javaVersion.startsWith("1.4")))
- {
- log.info("DSP disabled for JRE " + javaVersion);
- }
- else if (!dspEnabled)
- {
- log.info("DSP disabled");
- }
- /*else
- {
- if (analyzer == null) analyzer = new SpectrumTimeAnalyzer();
- String visualMode = config.getVisualMode();
- if ((visualMode != null) && (visualMode.length() > 0))
- {
- if (visualMode.equalsIgnoreCase("off")) analyzer.setDisplayMode(SpectrumTimeAnalyzer.DISPLAY_MODE_OFF);
- else if (visualMode.equalsIgnoreCase("oscillo")) analyzer.setDisplayMode(SpectrumTimeAnalyzer.DISPLAY_MODE_SCOPE);
- else analyzer.setDisplayMode(SpectrumTimeAnalyzer.DISPLAY_MODE_SPECTRUM_ANALYSER);
- }
- else analyzer.setDisplayMode(SpectrumTimeAnalyzer.DISPLAY_MODE_SPECTRUM_ANALYSER);
- analyzer.setSpectrumAnalyserBandCount(19);
- analyzer.setVisColor(viscolor);
- analyzer.setLocation(visualLocation[0], visualLocation[1]);
- analyzer.setSize(visualSize[0], visualSize[1]);
- analyzer.setSpectrumAnalyserDecay(0.05f);
- int fps = SpectrumTimeAnalyzer.DEFAULT_FPS;
- analyzer.setFps(fps);
- analyzer.setPeakDelay((int) (fps * SpectrumTimeAnalyzer.DEFAULT_SPECTRUM_ANALYSER_PEAK_DELAY_FPS_RATIO));
- analyzer.setConstraints(new AbsoluteConstraints(visualLocation[0], visualLocation[1], visualSize[0], visualSize[1]));
- analyzer.setToolTipText(getResource("panel.analyzer"));
- }*/
- }
-
- /**
- * Instantiate PosBar Panel with ActiveComponent.
- */
- protected void setPosBarPanel()
- {
- int l = 0;
- Image posBackground = new BufferedImage(248, 10, BufferedImage.TYPE_INT_RGB);
- posBackground.getGraphics().drawImage(imPosBar, 0, 0, 248, 10, 0, 0, 248, 10, null);
- acPosBar = new ActiveJSlider();
- acPosBar.setMinimum(0);
- acPosBar.setMaximum(POSBARMAX);
- acPosBar.setValue(0);
- acPosBar.setOrientation(JSlider.HORIZONTAL);
- acPosBar.setConstraints(new AbsoluteConstraints(posBarLocation[l++], posBarLocation[l++], 248, releasedPosIm[0].getHeight(null)));
- ActiveSliderUI sUI = new ActiveSliderUI(acPosBar);
- Image[] back = { posBackground };
- sUI.setBackgroundImages(back);
- sUI.setThumbXOffset(0);
- sUI.setThumbYOffset(0);
- sUI.setThumbImage(releasedPosIm[0]);
- sUI.setThumbPressedImage(pressedPosIm[0]);
- acPosBar.setUI(sUI);
- acPosBar.setToolTipText(getResource("slider.seek"));
- }
-
- /**
- * Set sliders for equalizer.
- */
- private void setSliderPanel()
- {
- releasedSliderImage[0] = new BufferedImage(12, 11, BufferedImage.TYPE_INT_RGB);
- Graphics g = releasedSliderImage[0].getGraphics();
- g.drawImage(imFullEqualizer, 0, 0, 12, 11, 0, 164, 0 + 12, 164 + 11, null);
- pressedSliderImage[0] = new BufferedImage(10, 11, BufferedImage.TYPE_INT_RGB);
- g = pressedSliderImage[0].getGraphics();
- g.drawImage(imFullEqualizer, 0, 0, 11, 11, 0, 176, 0 + 11, 176 + 11, null);
- for (int k = 0; k < sliderImage.length / 2; k++)
- {
- sliderImage[k] = new BufferedImage(13, 63, BufferedImage.TYPE_INT_RGB);
- g = sliderImage[k].getGraphics();
- g.drawImage(imSliders, 0, 0, 13, 63, k * 15, 0, k * 15 + 13, 0 + 63, null);
- }
- for (int k = 0; k < sliderImage.length / 2; k++)
- {
- sliderImage[k + (sliderImage.length / 2)] = new BufferedImage(13, 63, BufferedImage.TYPE_INT_RGB);
- g = sliderImage[k + (sliderImage.length / 2)].getGraphics();
- g.drawImage(imSliders, 0, 0, 13, 63, k * 15, 65, k * 15 + 13, 65 + 63, null);
- }
- // Setup sliders
- for (int i = 0; i < acSlider.length; i++)
- {
- sliderLocation[i][0] = sliderBarLocation[i][0] + 1;
- sliderLocation[i][1] = sliderBarLocation[i][1] + 1;// + deltaSlider * gainEqValue[i] / maxEqGain;
- acSlider[i] = new ActiveJSlider();
- acSlider[i].setMinimum(0);
- acSlider[i].setMaximum(100);
- acSlider[i].setValue(50);
- acSlider[i].setOrientation(JSlider.VERTICAL);
- ActiveSliderUI sUI = new ActiveSliderUI(acSlider[i]);
- sUI.setThumbImage(releasedSliderImage[0]);
- sUI.setThumbPressedImage(pressedSliderImage[0]);
- sUI.setBackgroundImages(sliderImage);
- sUI.setThumbXOffset(1);
- sUI.setThumbYOffset(-1);
- acSlider[i].setUI(sUI);
- acSlider[i].setConstraints(new AbsoluteConstraints(sliderLocation[i][0], sliderLocation[i][1], releasedSliderImage[0].getWidth(null), sliderImage[0].getHeight(null)));
- }
- acSlider[0].setEnabled(false);
- }
-
- /**
- * Set On/Off and Auto checkbox.
- */
- public void setOnOffAutoPanel()
- {
- // On/Off
- int w = 24, h = 12;
- releasedOAImage[0] = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
- Graphics g = releasedOAImage[0].getGraphics();
- g.drawImage(imFullEqualizer, 0, 0, w, h, 10, 119, 10 + w, 119 + h, null);
- pressedOAImage[0] = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
- g = pressedOAImage[0].getGraphics();
- g.drawImage(imFullEqualizer, 0, 0, w, h, 69, 119, 69 + w, 119 + h, null);
- acOnOff = new ActiveJToggleButton();
- acOnOff.setIcon(new ImageIcon(releasedOAImage[0]));
- acOnOff.setSelectedIcon(new ImageIcon(pressedOAImage[0]));
- acOnOff.setPressedIcon(new ImageIcon(pressedOAImage[0]));
- acOnOff.setSelected(config.isEqualizerOn());
- acOnOff.setConstraints(new AbsoluteConstraints(panelOALocation[0], panelOALocation[1], releasedOAImage[0].getWidth(null), releasedOAImage[0].getHeight(null)));
- acOnOff.setToolTipText(getResource("equalizer.toggle.onoff"));
- acOnOff.setActionCommand(PlayerActionEvent.ACEQONOFF);
- // Auto
- w = 34;
- h = 12;
- releasedOAImage[1] = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
- g = releasedOAImage[1].getGraphics();
- g.drawImage(imFullEqualizer, 0, 0, w, h, 34, 119, 34 + w, 119 + h, null);
- pressedOAImage[1] = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
- g = pressedOAImage[1].getGraphics();
- g.drawImage(imFullEqualizer, 0, 0, w, h, 93, 119, 93 + w, 119 + h, null);
- acAuto = new ActiveJToggleButton();
- acAuto.setIcon(new ImageIcon(releasedOAImage[1]));
- acAuto.setPressedIcon(new ImageIcon(pressedOAImage[1]));
- acAuto.setSelectedIcon(new ImageIcon(pressedOAImage[1]));
- acAuto.setConstraints(new AbsoluteConstraints(panelOALocation[2], panelOALocation[3], releasedOAImage[1].getWidth(null), releasedOAImage[1].getHeight(null)));
- acAuto.setToolTipText(getResource("equalizer.toggle.auto"));
- acAuto.setActionCommand(PlayerActionEvent.ACEQAUTO);
- }
-
- /**
- * Set presets button.
- */
- public void setPresetsPanel()
- {
- int w = 44, h = 12;
- releasedPresetsImage[0] = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
- Graphics g = releasedPresetsImage[0].getGraphics();
- g.drawImage(imFullEqualizer, 0, 0, w, h, 224, 164, 224 + w, 164 + h, null);
- pressedPresetsImage[0] = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
- g = pressedPresetsImage[0].getGraphics();
- g.drawImage(imFullEqualizer, 0, 0, w, h, 224, 176, 224 + w, 176 + h, null);
- acPresets = new ActiveJButton();
- acPresets.setIcon(new ImageIcon(releasedPresetsImage[0]));
- acPresets.setPressedIcon(new ImageIcon(pressedPresetsImage[0]));
- acPresets.setConstraints(new AbsoluteConstraints(panelPresetsLocation[0], panelPresetsLocation[1], releasedPresetsImage[0].getWidth(null), releasedPresetsImage[0].getHeight(null)));
- acPresets.setToolTipText(getResource("equalizer.button.presets"));
- acPresets.setActionCommand(PlayerActionEvent.ACEQPRESETS);
- }
-
- /**
- * Instantiate equalizer spline panel.
- */
- public void setSplinePanel()
- {
- int w = panelSplineLocation[2];
- int h = panelSplineLocation[3];
- splineImage = null;
- splineBarImage = null;
- spline = null;
- if (imFullEqualizer.getHeight(null) > 294)
- {
- splineImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
- splineBarImage = new BufferedImage(w, 1, BufferedImage.TYPE_INT_RGB);
- splineImage.getGraphics().drawImage(imFullEqualizer, 0, 0, w, h, 0, 294, 0 + w, 294 + h, null);
- splineBarImage.getGraphics().drawImage(imFullEqualizer, 0, 0, w, 1, 0, 294 + h + 1, 0 + w, 294 + h + 1 + 1, null);
- spline = new SplinePanel();
- spline.setBackgroundImage(splineImage);
- spline.setBarImage(splineBarImage);
- int[] pixels = new int[1 * h];
- PixelGrabber pg = new PixelGrabber(imFullEqualizer, 115, 294, 1, h, pixels, 0, 1);
- try
- {
- pg.grabPixels();
- }
- catch (InterruptedException e)
- {
- log.debug(e);
- }
- Color[] colors = new Color[h];
- for (int i = 0; i < h; i++)
- {
- int c = pixels[i];
- int red = (c & 0x00ff0000) >> 16;
- int green = (c & 0x0000ff00) >> 8;
- int blue = c & 0x000000ff;
- colors[i] = new Color(red, green, blue);
- }
- spline.setGradient(colors);
- spline.setConstraints(new AbsoluteConstraints(panelSplineLocation[0], panelSplineLocation[1], panelSplineLocation[2], panelSplineLocation[3]));
- }
- }
-
- /**
- * Instantiate playlist panel.
- */
- public void setPlaylistPanel()
- {
- playlist = new PlaylistUIDelegate();
- Image titleCenter = new BufferedImage(100, 20, BufferedImage.TYPE_INT_RGB);
- titleCenter.getGraphics().drawImage(imPlaylist, 0, 0, 100, 20, 26, 0, 126, 20, null);
- playlist.setTitleCenterImage(titleCenter);
- Image titleLeft = new BufferedImage(25, 20, BufferedImage.TYPE_INT_RGB);
- titleLeft.getGraphics().drawImage(imPlaylist, 0, 0, 25, 20, 0, 0, 25, 20, null);
- playlist.setTitleLeftImage(titleLeft);
- Image titleStretch = new BufferedImage(25, 20, BufferedImage.TYPE_INT_RGB);
- titleStretch.getGraphics().drawImage(imPlaylist, 0, 0, 25, 20, 127, 0, 152, 20, null);
- playlist.setTitleStretchImage(titleStretch);
- Image titleRight = new BufferedImage(25, 20, BufferedImage.TYPE_INT_RGB);
- titleRight.getGraphics().drawImage(imPlaylist, 0, 0, 25, 20, 153, 0, 178, 20, null);
- playlist.setTitleRightImage(titleRight);
- Image btmLeft = new BufferedImage(125, 38, BufferedImage.TYPE_INT_RGB);
- btmLeft.getGraphics().drawImage(imPlaylist, 0, 0, 125, 38, 0, 72, 125, 110, null);
- playlist.setBottomLeftImage(btmLeft);
- Image btmRight = new BufferedImage(150, 38, BufferedImage.TYPE_INT_RGB);
- btmRight.getGraphics().drawImage(imPlaylist, 0, 0, 150, 38, 126, 72, 276, 110, null);
- playlist.setBottomRightImage(btmRight);
- Image bodyLeft = new BufferedImage(12, 28, BufferedImage.TYPE_INT_RGB);
- bodyLeft.getGraphics().drawImage(imPlaylist, 0, 0, 12, 28, 0, 42, 12, 70, null);
- playlist.setLeftImage(bodyLeft);
- Image bodyRight = new BufferedImage(20, 28, BufferedImage.TYPE_INT_RGB);
- bodyRight.getGraphics().drawImage(imPlaylist, 0, 0, 20, 28, 31, 42, 51, 70, null);
- playlist.setRightImage(bodyRight);
- // Parse color
- plEdit = plEdit.toLowerCase();
- ByteArrayInputStream in = new ByteArrayInputStream(plEdit.getBytes());
- BufferedReader lin = new BufferedReader(new InputStreamReader(in));
- try
- {
- for (;;)
- {
- String line = lin.readLine();
- if (line == null) break;
- if ((line.toLowerCase()).startsWith("normalbg")) playlist.setBackgroundColor(parsePlEditColor(line));
- else if ((line.toLowerCase()).startsWith("normal")) playlist.setNormalColor(parsePlEditColor(line));
- else if ((line.toLowerCase()).startsWith("current")) playlist.setCurrentColor(parsePlEditColor(line));
- else if ((line.toLowerCase()).startsWith("selectedbg")) playlist.setSelectedBackgroundColor(parsePlEditColor(line));
- }
- }
- catch (Exception e)
- {
- log.debug(e);
- }
- finally
- {
- try
- {
- if (in != null) in.close();
- }
- catch (IOException e)
- {
- }
- }
- // Playlist slider.
- acPlSlider = new ActiveJSlider();
- acPlSlider.setOrientation(JSlider.VERTICAL);
- acPlSlider.setMinimum(0);
- acPlSlider.setMaximum(100);
- acPlSlider.setValue(100);
- ActiveSliderUI sUI = new ActiveSliderUI(acPlSlider);
- Image scrollBarReleased = new BufferedImage(8, 18, BufferedImage.TYPE_INT_RGB);
- scrollBarReleased.getGraphics().drawImage(imPlaylist, 0, 0, 8, 18, 52, 53, 52 + 8, 53 + 18, null);
- sUI.setThumbImage(scrollBarReleased);
- Image scrollBarClicked = new BufferedImage(8, 18, BufferedImage.TYPE_INT_RGB);
- scrollBarClicked.getGraphics().drawImage(imPlaylist, 0, 0, 8, 18, 61, 53, 61 + 8, 53 + 18, null);
- sUI.setThumbPressedImage(scrollBarClicked);
- Image sliderBackground = new BufferedImage(20, 58, BufferedImage.TYPE_INT_RGB);
- sliderBackground.getGraphics().drawImage(bodyRight, 0, 0, null);
- sliderBackground.getGraphics().drawImage(bodyRight, 0, 28, null);
- sliderBackground.getGraphics().drawImage(bodyRight, 0, 30, null);
- Image[] background = { sliderBackground };
- sUI.setBackgroundImages(background);
- sUI.setThumbXOffset(5);
- acPlSlider.setUI(sUI);
- acPlSlider.setConstraints(new AbsoluteConstraints(plSliderLocation[0], plSliderLocation[1], 20, 58));
- // Up/Down scroll buttons
- acPlUp = new ActiveJButton();
- Image upScrollButton = new BufferedImage(8, 4, BufferedImage.TYPE_INT_RGB);
- upScrollButton.getGraphics().drawImage(imPlaylist, 0, 0, 8, 4, 261, 75, 269, 79, null);
- acPlUp.setIcon(new ImageIcon(upScrollButton));
- acPlUp.setPressedIcon(new ImageIcon(upScrollButton));
- acPlUp.setConstraints(new AbsoluteConstraints(WinWidth - 15, WinHeight - 35, 8, 4));
- acPlUp.setActionCommand(PlayerActionEvent.ACPLUP);
- acPlDown = new ActiveJButton();
- Image downScrollButton = new BufferedImage(8, 4, BufferedImage.TYPE_INT_RGB);
- downScrollButton.getGraphics().drawImage(imPlaylist, 0, 0, 8, 4, 261, 80, 269, 84, null);
- acPlDown.setIcon(new ImageIcon(downScrollButton));
- acPlDown.setPressedIcon(new ImageIcon(downScrollButton));
- acPlDown.setConstraints(new AbsoluteConstraints(WinWidth - 15, WinHeight - 30, 8, 4));
- acPlDown.setActionCommand(PlayerActionEvent.ACPLDOWN);
- // Playlist AddFile/AddDir/AddURL buttons
- int w = 22;
- int h = 18;
- Image addButtonImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
- addButtonImage.getGraphics().drawImage(imPlaylist, 0, 0, w, h, 14, 80, 14 + w, 80 + h, null);
- acPlAdd = new ActiveJButton();
- acPlAdd.setIcon(new ImageIcon(addButtonImage));
- acPlAdd.setPressedIcon(new ImageIcon(addButtonImage));
- acPlAdd.setActionCommand(PlayerActionEvent.ACPLADDPOPUP);
- acPlAdd.setConstraints(new AbsoluteConstraints(plAddLocation[0], plAddLocation[1], w, h));
- ActiveJButton acPlAddFile = createPLButton(0, 149);
- acPlAddFile.setActionCommand(PlayerActionEvent.ACPLADDFILE);
- ActiveJButton acPlAddDir = createPLButton(0, 130);
- acPlAddDir.setActionCommand(PlayerActionEvent.ACPLADDDIR);
- ActiveJButton acPlAddURL = createPLButton(0, 111);
- acPlAddURL.setActionCommand(PlayerActionEvent.ACPLADDURL);
- acPlAddPopup = new ActiveJPopup();
- ActiveJButton[] addbuttons = { acPlAddURL, acPlAddDir, acPlAddFile };
- acPlAddPopup.setItems(addbuttons);
- acPlAddPopup.setConstraints(new AbsoluteConstraints(plAddPopupArea[0], plAddPopupArea[1], plAddPopupArea[2], plAddPopupArea[3]));
- // Playlist RemoveMisc/RemoveSelection/Crop/RemoveAll buttons
- Image removeButtonImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
- removeButtonImage.getGraphics().drawImage(imPlaylist, 0, 0, w, h, 14 + 30, 80, 14 + 30 + w, 80 + h, null);
- acPlRemove = new ActiveJButton();
- acPlRemove.setIcon(new ImageIcon(removeButtonImage));
- acPlRemove.setPressedIcon(new ImageIcon(removeButtonImage));
- acPlRemove.setActionCommand(PlayerActionEvent.ACPLREMOVEPOPUP);
- acPlRemove.setConstraints(new AbsoluteConstraints(plRemoveLocation[0], plRemoveLocation[1], w, h));
- ActiveJButton acPlRemoveMisc = createPLButton(54, 168);
- acPlRemoveMisc.setActionCommand(PlayerActionEvent.ACPLREMOVEMISC);
- ActiveJButton acPlRemoveSel = createPLButton(54, 149);
- acPlRemoveSel.setActionCommand(PlayerActionEvent.ACPLREMOVESEL);
- ActiveJButton acPlRemoveCrop = createPLButton(54, 130);
- acPlRemoveCrop.setActionCommand(PlayerActionEvent.ACPLREMOVECROP);
- ActiveJButton acPlRemoveAll = createPLButton(54, 111);
- acPlRemoveAll.setActionCommand(PlayerActionEvent.ACPLREMOVEALL);
- acPlRemovePopup = new ActiveJPopup();
- ActiveJButton[] rembuttons = { acPlRemoveMisc, acPlRemoveAll, acPlRemoveCrop, acPlRemoveSel };
- acPlRemovePopup.setItems(rembuttons);
- acPlRemovePopup.setConstraints(new AbsoluteConstraints(plRemovePopupArea[0], plRemovePopupArea[1], plRemovePopupArea[2], plRemovePopupArea[3]));
- // Playlist SelAll/SelZero/SelInv buttons
- Image selButtonImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
- selButtonImage.getGraphics().drawImage(imPlaylist, 0, 0, w, h, 14 + 60, 80, 14 + 60 + w, 80 + h, null);
- acPlSelect = new ActiveJButton();
- acPlSelect.setIcon(new ImageIcon(selButtonImage));
- acPlSelect.setPressedIcon(new ImageIcon(selButtonImage));
- acPlSelect.setActionCommand(PlayerActionEvent.ACPLSELPOPUP);
- acPlSelect.setConstraints(new AbsoluteConstraints(plSelectLocation[0], plSelectLocation[1], w, h));
- ActiveJButton acPlSelectAll = createPLButton(104, 149);
- acPlSelectAll.setActionCommand(PlayerActionEvent.ACPLSELALL);
- ActiveJButton acPlSelectZero = createPLButton(104, 130);
- acPlSelectZero.setActionCommand(PlayerActionEvent.ACPLSELZERO);
- ActiveJButton acPlSelectInv = createPLButton(104, 111);
- acPlSelectInv.setActionCommand(PlayerActionEvent.ACPLSELINV);
- acPlSelectPopup = new ActiveJPopup();
- ActiveJButton[] selbuttons = { acPlSelectInv, acPlSelectZero, acPlSelectAll };
- acPlSelectPopup.setItems(selbuttons);
- acPlSelectPopup.setConstraints(new AbsoluteConstraints(plSelectPopupArea[0], plSelectPopupArea[1], plSelectPopupArea[2], plSelectPopupArea[3]));
- // Playlist MiscOpts/MiscFile/MiscSort buttons
- Image miscButtonImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
- miscButtonImage.getGraphics().drawImage(imPlaylist, 0, 0, w, h, 14 + 89, 80, 14 + 89 + w, 80 + h, null);
- acPlMisc = new ActiveJButton();
- acPlMisc.setIcon(new ImageIcon(miscButtonImage));
- acPlMisc.setPressedIcon(new ImageIcon(miscButtonImage));
- acPlMisc.setActionCommand(PlayerActionEvent.ACPLMISCPOPUP);
- acPlMisc.setConstraints(new AbsoluteConstraints(plMiscLocation[0], plMiscLocation[1], w, h));
- ActiveJButton acPlMiscOpts = createPLButton(154, 149);
- acPlMiscOpts.setActionCommand(PlayerActionEvent.ACPLMISCOPTS);
- ActiveJButton acPlMiscFile = createPLButton(154, 130);
- acPlMiscFile.setActionCommand(PlayerActionEvent.ACPLMISCFILE);
- ActiveJButton acPlMiscSort = createPLButton(154, 111);
- acPlMiscSort.setActionCommand(PlayerActionEvent.ACPLMISCSORT);
- acPlMiscPopup = new ActiveJPopup();
- ActiveJButton[] miscbuttons = { acPlMiscSort, acPlMiscFile, acPlMiscOpts };
- acPlMiscPopup.setItems(miscbuttons);
- acPlMiscPopup.setConstraints(new AbsoluteConstraints(plMiscPopupArea[0], plMiscPopupArea[1], plMiscPopupArea[2], plMiscPopupArea[3]));
- // Playlist ListLoad/ListSave/ListNew buttons
- Image listButtonImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
- listButtonImage.getGraphics().drawImage(imPlaylist, 0, 0, w, h, 14 + 215, 80, 14 + 215 + w, 80 + h, null);
- acPlList = new ActiveJButton();
- acPlList.setIcon(new ImageIcon(listButtonImage));
- acPlList.setPressedIcon(new ImageIcon(listButtonImage));
- acPlList.setActionCommand(PlayerActionEvent.ACPLLISTPOPUP);
- acPlList.setConstraints(new AbsoluteConstraints(plListLocation[0], plListLocation[1], w, h));
- ActiveJButton acPlListLoad = createPLButton(204, 149);
- acPlListLoad.setActionCommand(PlayerActionEvent.ACPLLISTLOAD);
- ActiveJButton acPlListSave = createPLButton(204, 130);
- acPlListSave.setActionCommand(PlayerActionEvent.ACPLLISTSAVE);
- ActiveJButton acPlListNew = createPLButton(204, 111);
- acPlListNew.setActionCommand(PlayerActionEvent.ACPLLISTNEW);
- acPlListPopup = new ActiveJPopup();
- ActiveJButton[] listbuttons = { acPlListNew, acPlListSave, acPlListLoad };
- acPlListPopup.setItems(listbuttons);
- acPlListPopup.setConstraints(new AbsoluteConstraints(plListPopupArea[0], plListPopupArea[1], plListPopupArea[2], plListPopupArea[3]));
- }
-
- /**
- * Create Playlist buttons.
- * @param sx
- * @param sy
- * @return
- */
- private ActiveJButton createPLButton(int sx, int sy)
- {
- Image normal = new BufferedImage(22, 18, BufferedImage.TYPE_INT_RGB);
- Image clicked = new BufferedImage(22, 18, BufferedImage.TYPE_INT_RGB);
- Graphics g = normal.getGraphics();
- g.drawImage(imPlaylist, 0, 0, 22, 18, sx, sy, sx + 22, sy + 18, null);
- sx += 23;
- g = clicked.getGraphics();
- g.drawImage(imPlaylist, 0, 0, 22, 18, sx, sy, sx + 22, sy + 18, null);
- ActiveJButton comp = new ActiveJButton();
- comp.setIcon(new ImageIcon(normal));
- comp.setPressedIcon(new ImageIcon(clicked));
- comp.setRolloverIcon(new ImageIcon(clicked));
- comp.setRolloverEnabled(true);
- return comp;
- }
-
- /**
- * Parse playlist colors.
- * @param line
- * @return
- * @throws Exception
- */
- private Color parsePlEditColor(String line) throws Exception
- {
- int pos = line.indexOf("#");
- if (pos == -1)
- {
- pos = line.indexOf("=");
- if (pos == -1) throw new Exception("Can not parse color!");
- }
- line = line.substring(pos + 1);
- int r = Integer.parseInt(line.substring(0, 2), 16);
- int g = Integer.parseInt(line.substring(2, 4), 16);
- int b = Integer.parseInt(line.substring(4), 16);
- return new Color(r, g, b);
- }
-
- /**
- * Crop Panel Features from image file.
- * @param releasedImage
- * @param releasedPanel
- * @param pressedImage
- * @param pressedPanel
- * @param imPanel
- */
- public void readPanel(Image[] releasedImage, int[] releasedPanel, Image[] pressedImage, int[] pressedPanel, Image imPanel)
- {
- int xul, yul, xld, yld;
- int j = 0;
- if (releasedImage != null)
- {
- for (int i = 0; i < releasedImage.length; i++)
- {
- releasedImage[i] = new BufferedImage(releasedPanel[j + 2], releasedPanel[j + 3], BufferedImage.TYPE_INT_RGB);
- xul = releasedPanel[j];
- yul = releasedPanel[j + 1];
- xld = releasedPanel[j] + releasedPanel[j + 2];
- yld = releasedPanel[j + 1] + releasedPanel[j + 3];
- (releasedImage[i].getGraphics()).drawImage(imPanel, 0, 0, releasedPanel[j + 2], releasedPanel[j + 3], xul, yul, xld, yld, null);
- j = j + 4;
- }
- }
- j = 0;
- if (pressedImage != null)
- {
- for (int i = 0; i < pressedImage.length; i++)
- {
- pressedImage[i] = new BufferedImage(pressedPanel[j + 2], pressedPanel[j + 3], BufferedImage.TYPE_INT_RGB);
- xul = pressedPanel[j];
- yul = pressedPanel[j + 1];
- xld = pressedPanel[j] + pressedPanel[j + 2];
- yld = pressedPanel[j + 1] + pressedPanel[j + 3];
- (pressedImage[i].getGraphics()).drawImage(imPanel, 0, 0, pressedPanel[j + 2], pressedPanel[j + 3], xul, yul, xld, yld, null);
- j = j + 4;
- }
- }
- }
-
- public ActiveJButton getAcEject()
- {
- return acEject;
- }
-
- public ActiveJButton getAcNext()
- {
- return acNext;
- }
-
- public ActiveJButton getAcPause()
- {
- return acPause;
- }
-
- public ActiveJButton getAcPlay()
- {
- return acPlay;
- }
-
- public ActiveJButton getAcPrevious()
- {
- return acPrevious;
- }
-
- public ActiveJButton getAcStop()
- {
- return acStop;
- }
-
- public ActiveJButton getAcExit()
- {
- return acExit;
- }
-
- public ActiveJButton getAcMinimize()
- {
- return acMinimize;
- }
-
- public ActiveJBar getAcTitleBar()
- {
- return acTitleBar;
- }
-
- public ActiveJLabel getAcTitleLabel()
- {
- return acTitleLabel;
- }
-
- public ActiveJLabel getAcSampleRateLabel()
- {
- return acSampleRateLabel;
- }
-
- public ActiveJLabel getAcBitRateLabel()
- {
- return acBitRateLabel;
- }
-
- public String getSkinVersion()
- {
- return skinVersion;
- }
-
- public void setSkinVersion(String skinVersion)
- {
- this.skinVersion = skinVersion;
- }
-
- public ActiveJToggleButton getAcEqualizer()
- {
- return acEqualizer;
- }
-
- public ActiveJToggleButton getAcPlaylist()
- {
- return acPlaylist;
- }
-
- public ActiveJToggleButton getAcRepeat()
- {
- return acRepeat;
- }
-
- public ActiveJToggleButton getAcShuffle()
- {
- return acShuffle;
- }
-
- public ActiveJSlider getAcVolume()
- {
- return acVolume;
- }
-
- public ActiveJSlider getAcBalance()
- {
- return acBalance;
- }
-
- public ActiveJIcon getAcMonoIcon()
- {
- return acMonoIcon;
- }
-
- public ActiveJIcon getAcStereoIcon()
- {
- return acStereoIcon;
- }
-
- public ActiveJSlider getAcPosBar()
- {
- return acPosBar;
- }
-
- public ActiveJIcon getAcPlayIcon()
- {
- return acPlayIcon;
- }
-
- public ActiveJIcon getAcTimeIcon()
- {
- return acTimeIcon;
- }
-
- public ActiveJNumberLabel getAcMinuteH()
- {
- return acMinuteH;
- }
-
- public ActiveJNumberLabel getAcMinuteL()
- {
- return acMinuteL;
- }
-
- public ActiveJNumberLabel getAcSecondH()
- {
- return acSecondH;
- }
-
- public ActiveJNumberLabel getAcSecondL()
- {
- return acSecondL;
- }
-
- /*public SpectrumTimeAnalyzer getAcAnalyzer()
- {
- return analyzer;
- }*/
-
- public ActiveJButton getAcEqPresets()
- {
- return acPresets;
- }
-
- public ActiveJToggleButton getAcEqOnOff()
- {
- return acOnOff;
- }
-
- public ActiveJToggleButton getAcEqAuto()
- {
- return acAuto;
- }
-
- public ActiveJSlider[] getAcEqSliders()
- {
- return acSlider;
- }
-
- public ActiveJSlider getAcPlSlider()
- {
- return acPlSlider;
- }
-
- public ActiveJButton getAcPlUp()
- {
- return acPlUp;
- }
-
- public ActiveJButton getAcPlDown()
- {
- return acPlDown;
- }
-
- public ActiveJButton getAcPlAdd()
- {
- return acPlAdd;
- }
-
- public ActiveJPopup getAcPlAddPopup()
- {
- return acPlAddPopup;
- }
-
- public ActiveJButton getAcPlRemove()
- {
- return acPlRemove;
- }
-
- public ActiveJPopup getAcPlRemovePopup()
- {
- return acPlRemovePopup;
- }
-
- public ActiveJButton getAcPlSelect()
- {
- return acPlSelect;
- }
-
- public ActiveJPopup getAcPlSelectPopup()
- {
- return acPlSelectPopup;
- }
-
- public ActiveJButton getAcPlMisc()
- {
- return acPlMisc;
- }
-
- public ActiveJPopup getAcPlMiscPopup()
- {
- return acPlMiscPopup;
- }
-
- public ActiveJButton getAcPlList()
- {
- return acPlList;
- }
-
- public ActiveJPopup getAcPlListPopup()
- {
- return acPlListPopup;
- }
-
- public SplinePanel getSpline()
- {
- return spline;
- }
-
- public PlaylistUIDelegate getPlaylistPanel()
- {
- return playlist;
- }
-
- /**
- * Return readme content from skin.
- * @return
- */
- public String getReadme()
- {
- return readme;
- }
-
- public int getMainWidth()
- {
- return WinWidth;
- }
-
- public int getMainHeight()
- {
- return WinHeight;
- }
-
- public Image getMainImage()
- {
- return imMain;
- }
-
- public Image getEqualizerImage()
- {
- return imEqualizer;
- }
-
- /**
- * Return visual colors from skin.
- * @return
- */
- public String getVisColors()
- {
- return viscolor;
- }
-
- public Config getConfig()
- {
- return config;
- }
-
- public void setConfig(Config config)
- {
- this.config = config;
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/skin/SkinLoader.java b/java/src/javazoom/jlgui/player/amp/skin/SkinLoader.java
deleted file mode 100644
index 6ccb3df..0000000
--- a/java/src/javazoom/jlgui/player/amp/skin/SkinLoader.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * SkinLoader.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.skin;
-
-import java.awt.Image;
-import java.io.FileInputStream;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.StringWriter;
-import java.net.URL;
-import java.util.Hashtable;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-import javazoom.jlgui.player.amp.util.BMPLoader;
-import javazoom.jlgui.player.amp.util.Config;
-
-/**
- * This class implements a Skin Loader.
- * WinAmp 2.x javazoom.jlgui.player.amp.skins compliant.
- */
-public class SkinLoader
-{
- private Hashtable _images = null;
- private ZipInputStream _zis = null;
-
- /**
- * Contructs a SkinLoader from a skin file.
- */
- public SkinLoader(String filename)
- {
- _images = new Hashtable();
- try
- {
- if (Config.startWithProtocol(filename)) _zis = new ZipInputStream((new URL(filename)).openStream());
- else _zis = new ZipInputStream(new FileInputStream(filename));
- }
- catch (Exception e)
- {
- // Try to load included default skin.
- ClassLoader cl = this.getClass().getClassLoader();
- InputStream sis = cl.getResourceAsStream("javazoom/jlgui/player/amp/metrix.wsz");
- if (sis != null) _zis = new ZipInputStream(sis);
- }
- }
-
- /**
- * Contructs a SkinLoader from any input stream.
- */
- public SkinLoader(InputStream inputstream)
- {
- _images = new Hashtable();
- _zis = new ZipInputStream(inputstream);
- }
-
- /**
- * Loads data (images + info) from skin.
- */
- public void loadImages() throws Exception
- {
- ZipEntry entry = _zis.getNextEntry();
- String name;
- BMPLoader bmp = new BMPLoader();
- int pos;
- while (entry != null)
- {
- name = entry.getName().toLowerCase();
- pos = name.lastIndexOf("/");
- if (pos != -1) name = name.substring(pos + 1);
- if (name.endsWith("bmp"))
- {
- _images.put(name, bmp.getBMPImage(_zis));
- }
- else if (name.endsWith("txt"))
- {
- InputStreamReader reader = new InputStreamReader(_zis, "US-ASCII");
- StringWriter writer = new StringWriter();
- char buffer[] = new char[256];
- int charsRead;
- while ((charsRead = reader.read(buffer)) != -1)
- writer.write(buffer, 0, charsRead);
- _images.put(name, writer.toString());
- }
- entry = _zis.getNextEntry();
- }
- _zis.close();
- }
-
- /**
- * Return Image from name.
- */
- public Image getImage(String name)
- {
- return (Image) _images.get(name);
- }
-
- // Added by John Yang - 02/05/2001
- /**
- * Return skin content (Image or String) from name.
- */
- public Object getContent(String name)
- {
- return _images.get(name);
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/skin/Taftb.java b/java/src/javazoom/jlgui/player/amp/skin/Taftb.java
deleted file mode 100644
index 9343d27..0000000
--- a/java/src/javazoom/jlgui/player/amp/skin/Taftb.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Taftb.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.skin;
-
-import java.awt.Image;
-import java.awt.image.CropImageFilter;
-import java.awt.image.FilteredImageSource;
-import java.awt.image.MemoryImageSource;
-import java.awt.image.PixelGrabber;
-import javax.swing.JComponent;
-
-/**
- * Taftb is used to build gif image from graphical fonts.
- */
-public class Taftb extends JComponent
-{
- public Image theFonts;
- private int imageW;
- private int fontWidth;
- private int fontHeight;
- private int Yspacing;
- protected Image theBanner;
- protected int pixels[];
- private PixelGrabber pg;
- private String theText;
-
- /**
- * Text banner building according to the alphabet index, font size and Y spacing.
- */
- public Taftb(String alphaIndex, Image fontFile, int fontW, int fontH, int Yspc, String theTxt/*, Color BgValue*/)
- {
- fontWidth = fontW;
- fontHeight = fontH;
- Yspacing = Yspc;
- theText = theTxt;
- theFonts = fontFile;
- imageW = theFonts.getWidth(this);
- /*-- We create the TextBanner by grabbing font letters in the image fonts --*/
- pixels = new int[theText.length() * fontW * fontH];
- int SpacePosition = 0;
- int offsetSp = 0;
- /*-- We search the space position in the Alphabet index --*/
- while ((offsetSp < alphaIndex.length()) && (alphaIndex.charAt(offsetSp) != ' '))
- {
- offsetSp++;
- }
- if (offsetSp < alphaIndex.length()) SpacePosition = offsetSp;
- for (int offsetT = 0; offsetT < theText.length(); offsetT++)
- {
- int xPos = 0;
- int yPos = 0;
- int reste = 0;
- int entie = 0;
- int offsetA = 0;
- int FontPerLine = (int) Math.rint((imageW / fontW));
- /*-- We search the letter's position in the Alphabet index --*/
- while ((offsetA < alphaIndex.length()) && (theText.charAt(offsetT) != alphaIndex.charAt(offsetA)))
- {
- offsetA++;
- }
- /*-- We deduce its image's position (Int forced) --*/
- if (offsetA < alphaIndex.length())
- {
- reste = offsetA % FontPerLine;
- entie = (offsetA - reste);
- xPos = reste * fontW;
- yPos = ((entie / FontPerLine) * fontH) + ((entie / FontPerLine) * Yspacing);
- }
- else
- /*-- If the letter is not indexed the space (if available) is selected --*/
- {
- reste = SpacePosition % FontPerLine;
- entie = (SpacePosition - reste);
- xPos = reste * fontW;
- yPos = ((entie / FontPerLine) * fontH) + ((entie / FontPerLine) * Yspacing);
- }
- /*-- We grab the letter in the font image and put it in a pixel array --*/
- pg = new PixelGrabber(theFonts, xPos, yPos, fontW, fontH, pixels, offsetT * fontW, theText.length() * fontW);
- try
- {
- pg.grabPixels();
- }
- catch (InterruptedException e)
- {
- }
- }
- /*-- We create the final Image Banner throught an Image --*/
- theBanner = createImage(new MemoryImageSource(theText.length() * fontW, fontH, pixels, 0, theText.length() * fontW));
- }
-
- /**
- * Returns final banner as an image.
- */
- public Image getBanner()
- {
- return theBanner;
- }
-
- /**
- * Returns final banner as cropped image.
- */
- public Image getBanner(int x, int y, int sx, int sy)
- {
- Image cropBanner = null;
- CropImageFilter cif = new CropImageFilter(x, y, sx, sy);
- cropBanner = createImage(new FilteredImageSource(theBanner.getSource(), cif));
- return cropBanner;
- }
-
- /**
- * Returns final banner as a pixels array.
- */
- public int[] getPixels()
- {
- return pixels;
- }
-
- /**
- * Returns banner's length.
- */
- public int getPixelsW()
- {
- return theText.length() * fontWidth;
- }
-
- /**
- * Returns banner's height.
- */
- public int getPixelsH()
- {
- return fontHeight;
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/skin/UrlDialog.java b/java/src/javazoom/jlgui/player/amp/skin/UrlDialog.java
deleted file mode 100644
index e15005e..0000000
--- a/java/src/javazoom/jlgui/player/amp/skin/UrlDialog.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * UrlDialog.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.skin;
-
-import javax.swing.JDialog;
-import javax.swing.JFrame;
-
-/**
- * UrlDialog class implements a DialogBox to get an URL.
- */
-public class UrlDialog extends JDialog
-{
- private String _url = null;
-
- /**
- * Creates new form ud
- */
- public UrlDialog(JFrame parent, String title, int x, int y, String url)
- {
- super(parent, title, true);
- _url = url;
- initComponents();
- if (_url != null) textField.setText(_url);
- this.setLocation(x, y);
- }
-
- /**
- * Returns URL.
- */
- public String getURL()
- {
- return _url;
- }
-
- /**
- * Returns filename.
- */
- public String getFile()
- {
- return _url;
- }
-
- /**
- * This method is called from within the constructor to
- * initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is
- * always regenerated by the Form Editor.
- */
- private void initComponents()
- {//GEN-BEGIN:initComponents
- java.awt.GridBagConstraints gridBagConstraints;
- jLabel1 = new javax.swing.JLabel();
- jLabel2 = new javax.swing.JLabel();
- textField = new javax.swing.JTextField();
- jPanel1 = new javax.swing.JPanel();
- openButton = new javax.swing.JButton();
- cancelButton = new javax.swing.JButton();
- getContentPane().setLayout(new java.awt.GridBagLayout());
- jLabel1.setText("Enter an Internet location to open here :");
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- getContentPane().add(jLabel1, gridBagConstraints);
- jLabel2.setText("\"For example : http://www.server.com:8000\"");
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- getContentPane().add(jLabel2, gridBagConstraints);
- textField.setColumns(10);
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- getContentPane().add(textField, gridBagConstraints);
- openButton.setMnemonic('O');
- openButton.setText("Open");
- openButton.setToolTipText("Open");
- openButton.addActionListener(new java.awt.event.ActionListener()
- {
- public void actionPerformed(java.awt.event.ActionEvent evt)
- {
- openHandler(evt);
- }
- });
- jPanel1.add(openButton);
- cancelButton.setMnemonic('C');
- cancelButton.setText("Cancel");
- cancelButton.setToolTipText("Cancel");
- cancelButton.addActionListener(new java.awt.event.ActionListener()
- {
- public void actionPerformed(java.awt.event.ActionEvent evt)
- {
- cancelHandler(evt);
- }
- });
- jPanel1.add(cancelButton);
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 3;
- gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- getContentPane().add(jPanel1, gridBagConstraints);
- pack();
- }//GEN-END:initComponents
-
- private void cancelHandler(java.awt.event.ActionEvent evt)
- {//GEN-FIRST:event_cancelHandler
- _url = null;
- this.dispose();
- }//GEN-LAST:event_cancelHandler
-
- private void openHandler(java.awt.event.ActionEvent evt)
- {//GEN-FIRST:event_openHandler
- _url = textField.getText();
- this.dispose();
- }//GEN-LAST:event_openHandler
- // Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JButton cancelButton;
- private javax.swing.JLabel jLabel1;
- private javax.swing.JLabel jLabel2;
- private javax.swing.JPanel jPanel1;
- private javax.swing.JButton openButton;
- private javax.swing.JTextField textField;
- // End of variables declaration//GEN-END:variables
-}
diff --git a/java/src/javazoom/jlgui/player/amp/skin/skin.properties b/java/src/javazoom/jlgui/player/amp/skin/skin.properties
deleted file mode 100644
index a7c9235..0000000
--- a/java/src/javazoom/jlgui/player/amp/skin/skin.properties
+++ /dev/null
@@ -1,65 +0,0 @@
-button.previous=Previous
-button.play=Play
-button.pause=Pause
-button.stop=Stop
-button.next=Next
-button.eject=Open file(s)
-button.eject.filedialog.filtername=File, playlist or skin
-button.eject.urldialog.title=Open location
-title.loading=PLEASE WAIT ... LOADING ...
-title.buffering=PLEASE WAIT ... BUFFERING ...
-title.invalidfile=INVALID FILE
-
-button.exit=Close
-button.minimize=Minimize
-
-toggle.equalizer=Toggle Graphical Equalizer
-toggle.playlist=Toggle Playlist Editor
-toggle.shuffle=Toggle Shuffle
-toggle.repeat=Toggle Repeat
-
-slider.volume=Volume Bar
-slider.volume.text=VOLUME: {0}%
-slider.balance=Panning Bar
-slider.balance.text.right=BALANCE: {0}% RIGHT
-slider.balance.text.left=BALANCE: {0}% LEFT
-slider.balance.text.center=BALANCE: CENTER
-slider.seek=Seeking Bar
-
-panel.analyzer=Spectrum/Time analyzer
-
-popup.title=Setup
-popup.play=Play
-popup.play.file=File...
-popup.play.location=Location...
-popup.playlist=Playlist Editor
-popup.equalizer=Equalizer
-popup.preferences=Preferences
-popup.skins=Skins
-popup.skins.browser=Skin Browser
-popup.skins.load=Load Skin
-popup.playback=Playback
-popup.playback.jump=Jump to file
-popup.playback.stop=Stop
-popup.exit=Exit
-
-popup.eject.openfile=Open file...
-popup.eject.openlocation=Open location...
-
-loadskin.dialog.filtername=Skin files
-
-skin.extension=wsz
-playlist.extension.m3u=m3u
-playlist.extension.pls=pls
-
-equalizer.toggle.onoff=On/Off
-equalizer.toggle.auto=Auto
-equalizer.button.presets=Presets
-
-playlist.popup.info=File Info
-playlist.popup.play=Play Item
-playlist.popup.remove=Remove Item(s)
-playlist.popup.add.file=Music files
-playlist.popup.add.url=Open location
-playlist.popup.add.dir=Directories
-playlist.popup.list.load=PLS or M3U Playlist
diff --git a/java/src/javazoom/jlgui/player/amp/tag/APEInfo.java b/java/src/javazoom/jlgui/player/amp/tag/APEInfo.java
deleted file mode 100644
index 838737f..0000000
--- a/java/src/javazoom/jlgui/player/amp/tag/APEInfo.java
+++ /dev/null
@@ -1,340 +0,0 @@
-/*
- * 21.04.2004 Original verion. davagin@udm.ru.
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.tag;
-
-import org.tritonus.share.sampled.TAudioFormat;
-import org.tritonus.share.sampled.file.TAudioFileFormat;
-import javax.sound.sampled.AudioFileFormat;
-import javax.sound.sampled.AudioFormat;
-import javax.sound.sampled.AudioSystem;
-import javax.sound.sampled.UnsupportedAudioFileException;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.Map;
-import java.util.Vector;
-
-/**
- * This class gives information (audio format and comments) about APE file or URL.
- */
-public class APEInfo implements TagInfo
-{
- protected int channels = -1;
- protected int bitspersample = -1;
- protected int samplerate = -1;
- protected int bitrate = -1;
- protected int version = -1;
- protected String compressionlevel = null;
- protected int totalframes = -1;
- protected int blocksperframe = -1;
- protected int finalframeblocks = -1;
- protected int totalblocks = -1;
- protected int peaklevel = -1;
- protected long duration = -1;
- protected String author = null;
- protected String title = null;
- protected String copyright = null;
- protected Date date = null;
- protected String comment = null;
- protected String track = null;
- protected String genre = null;
- protected String album = null;
- protected long size = 0;
- protected String location = null;
-
- /**
- * Constructor.
- */
- public APEInfo()
- {
- super();
- }
-
- /**
- * Load and parse APE info from File.
- *
- * @param input
- * @throws IOException
- */
- public void load(File input) throws IOException, UnsupportedAudioFileException
- {
- size = input.length();
- location = input.getPath();
- loadInfo(input);
- }
-
- /**
- * Load and parse APE info from URL.
- *
- * @param input
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- public void load(URL input) throws IOException, UnsupportedAudioFileException
- {
- location = input.toString();
- loadInfo(input);
- }
-
- /**
- * Load and parse APE info from InputStream.
- *
- * @param input
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- public void load(InputStream input) throws IOException, UnsupportedAudioFileException
- {
- loadInfo(input);
- }
-
- /**
- * Load APE info from input stream.
- *
- * @param input
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- protected void loadInfo(InputStream input) throws IOException, UnsupportedAudioFileException
- {
- AudioFileFormat aff = AudioSystem.getAudioFileFormat(input);
- loadInfo(aff);
- }
-
- /**
- * Load APE info from file.
- *
- * @param file
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- protected void loadInfo(File file) throws IOException, UnsupportedAudioFileException
- {
- AudioFileFormat aff = AudioSystem.getAudioFileFormat(file);
- loadInfo(aff);
- }
-
- /**
- * Load APE info from AudioFileFormat.
- *
- * @param aff
- */
- protected void loadInfo(AudioFileFormat aff) throws UnsupportedAudioFileException
- {
- String type = aff.getType().toString();
- if (!type.equalsIgnoreCase("Monkey's Audio (ape)") && !type.equalsIgnoreCase("Monkey's Audio (mac)")) throw new UnsupportedAudioFileException("Not APE audio format");
- if (aff instanceof TAudioFileFormat)
- {
- Map props = ((TAudioFileFormat) aff).properties();
- if (props.containsKey("duration")) duration = ((Long) props.get("duration")).longValue();
- if (props.containsKey("author")) author = (String) props.get("author");
- if (props.containsKey("title")) title = (String) props.get("title");
- if (props.containsKey("copyright")) copyright = (String) props.get("copyright");
- if (props.containsKey("date")) date = (Date) props.get("date");
- if (props.containsKey("comment")) comment = (String) props.get("comment");
- if (props.containsKey("album")) album = (String) props.get("album");
- if (props.containsKey("track")) track = (String) props.get("track");
- if (props.containsKey("genre")) genre = (String) props.get("genre");
- AudioFormat af = aff.getFormat();
- channels = af.getChannels();
- samplerate = (int) af.getSampleRate();
- bitspersample = af.getSampleSizeInBits();
- if (af instanceof TAudioFormat)
- {
- props = ((TAudioFormat) af).properties();
- if (props.containsKey("bitrate")) bitrate = ((Integer) props.get("bitrate")).intValue();
- if (props.containsKey("ape.version")) version = ((Integer) props.get("ape.version")).intValue();
- if (props.containsKey("ape.compressionlevel"))
- {
- int cl = ((Integer) props.get("ape.compressionlevel")).intValue();
- switch (cl)
- {
- case 1000:
- compressionlevel = "Fast";
- break;
- case 2000:
- compressionlevel = "Normal";
- break;
- case 3000:
- compressionlevel = "High";
- break;
- case 4000:
- compressionlevel = "Extra High";
- break;
- case 5000:
- compressionlevel = "Insane";
- break;
- }
- }
- if (props.containsKey("ape.totalframes")) totalframes = ((Integer) props.get("ape.totalframes")).intValue();
- if (props.containsKey("ape.blocksperframe")) totalframes = ((Integer) props.get("ape.blocksperframe")).intValue();
- if (props.containsKey("ape.finalframeblocks")) finalframeblocks = ((Integer) props.get("ape.finalframeblocks")).intValue();
- if (props.containsKey("ape.totalblocks")) totalblocks = ((Integer) props.get("ape.totalblocks")).intValue();
- if (props.containsKey("ape.peaklevel")) peaklevel = ((Integer) props.get("ape.peaklevel")).intValue();
- }
- }
- }
-
- /**
- * Load APE info from URL.
- *
- * @param input
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- protected void loadInfo(URL input) throws IOException, UnsupportedAudioFileException
- {
- AudioFileFormat aff = AudioSystem.getAudioFileFormat(input);
- loadInfo(aff);
- }
-
- public long getSize()
- {
- return size;
- }
-
- public String getLocation()
- {
- return location;
- }
-
- public int getVersion()
- {
- return version;
- }
-
- public String getCompressionlevel()
- {
- return compressionlevel;
- }
-
- public int getTotalframes()
- {
- return totalframes;
- }
-
- public int getBlocksperframe()
- {
- return blocksperframe;
- }
-
- public int getFinalframeblocks()
- {
- return finalframeblocks;
- }
-
- public int getChannels()
- {
- return channels;
- }
-
- public int getSamplingRate()
- {
- return samplerate;
- }
-
- public int getBitsPerSample()
- {
- return bitspersample;
- }
-
- public int getTotalblocks()
- {
- return totalblocks;
- }
-
- public long getPlayTime()
- {
- return duration / 1000;
- }
-
- public int getBitRate()
- {
- return bitrate * 1000;
- }
-
- public int getPeaklevel()
- {
- return peaklevel;
- }
-
- public int getTrack()
- {
- int t;
- try
- {
- t = Integer.parseInt(track);
- }
- catch (Exception e)
- {
- t = -1;
- }
- return t;
- }
-
- public String getYear()
- {
- if (date != null)
- {
- Calendar c = Calendar.getInstance();
- c.setTime(date);
- return String.valueOf(c.get(Calendar.YEAR));
- }
- return null;
- }
-
- public String getGenre()
- {
- return genre;
- }
-
- public String getTitle()
- {
- return title;
- }
-
- public String getArtist()
- {
- return author;
- }
-
- public String getAlbum()
- {
- return album;
- }
-
- public Vector getComment()
- {
- if (comment != null)
- {
- Vector c = new Vector();
- c.add(comment);
- return c;
- }
- return null;
- }
-
- public String getCopyright()
- {
- return copyright;
- }
-}
\ No newline at end of file
diff --git a/java/src/javazoom/jlgui/player/amp/tag/FlacInfo.java b/java/src/javazoom/jlgui/player/amp/tag/FlacInfo.java
deleted file mode 100644
index 70d1712..0000000
--- a/java/src/javazoom/jlgui/player/amp/tag/FlacInfo.java
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * 21.04.2004 Original verion. davagin@udm.ru.
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.tag;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Vector;
-import javax.sound.sampled.AudioFileFormat;
-import javax.sound.sampled.AudioFormat;
-import javax.sound.sampled.AudioSystem;
-import javax.sound.sampled.UnsupportedAudioFileException;
-
-/**
- * This class gives information (audio format and comments) about Flac file or URL.
- */
-public class FlacInfo implements TagInfo {
- protected int channels = -1;
- protected int bitspersample = -1;
- protected int samplerate = -1;
- protected long size = 0;
- protected String location = null;
-
- /**
- * Constructor.
- */
- public FlacInfo() {
- super();
- }
-
- /**
- * Load and parse Flac info from File.
- *
- * @param input
- * @throws IOException
- */
- public void load(File input) throws IOException, UnsupportedAudioFileException {
- size = input.length();
- location = input.getPath();
- loadInfo(input);
- }
-
- /**
- * Load and parse Flac info from URL.
- *
- * @param input
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- public void load(URL input) throws IOException, UnsupportedAudioFileException {
- location = input.toString();
- loadInfo(input);
- }
-
- /**
- * Load and parse Flac info from InputStream.
- *
- * @param input
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- public void load(InputStream input) throws IOException, UnsupportedAudioFileException {
- loadInfo(input);
- }
-
- /**
- * Load Flac info from input stream.
- *
- * @param input
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- protected void loadInfo(InputStream input) throws IOException, UnsupportedAudioFileException {
- AudioFileFormat aff = AudioSystem.getAudioFileFormat(input);
- loadInfo(aff);
- }
-
- /**
- * Load Flac info from file.
- *
- * @param file
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- protected void loadInfo(File file) throws IOException, UnsupportedAudioFileException {
- AudioFileFormat aff = AudioSystem.getAudioFileFormat(file);
- loadInfo(aff);
- }
-
- /**
- * Load Flac info from AudioFileFormat.
- *
- * @param aff
- */
- protected void loadInfo(AudioFileFormat aff) throws UnsupportedAudioFileException {
- String type = aff.getType().toString();
- if (!type.equalsIgnoreCase("flac")) throw new UnsupportedAudioFileException("Not Flac audio format");
- AudioFormat af = aff.getFormat();
- channels = af.getChannels();
- samplerate = (int) af.getSampleRate();
- bitspersample = af.getSampleSizeInBits();
- }
-
- /**
- * Load Flac info from URL.
- *
- * @param input
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- protected void loadInfo(URL input) throws IOException, UnsupportedAudioFileException {
- AudioFileFormat aff = AudioSystem.getAudioFileFormat(input);
- loadInfo(aff);
- }
-
- public long getSize() {
- return size;
- }
-
- public String getLocation() {
- return location;
- }
-
- public int getChannels() {
- return channels;
- }
-
- public int getSamplingRate() {
- return samplerate;
- }
-
- public int getBitsPerSample() {
- return bitspersample;
- }
-
- public Vector getComment() {
- return null;
- }
-
- public String getYear() {
- return null;
- }
-
- public String getGenre() {
- return null;
- }
-
- public int getTrack() {
- return -1;
- }
-
- public String getAlbum() {
- return null;
- }
-
- public String getArtist() {
- return null;
- }
-
- public String getTitle() {
- return null;
- }
-
- public long getPlayTime() {
- return -1;
- }
-
- public int getBitRate() {
- return -1;
- }
-
-}
\ No newline at end of file
diff --git a/java/src/javazoom/jlgui/player/amp/tag/MpegInfo.java b/java/src/javazoom/jlgui/player/amp/tag/MpegInfo.java
deleted file mode 100644
index 18ee050..0000000
--- a/java/src/javazoom/jlgui/player/amp/tag/MpegInfo.java
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- * MpegInfo.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.tag;
-
-import org.tritonus.share.sampled.file.TAudioFileFormat;
-
-import javax.sound.sampled.AudioFileFormat;
-import javax.sound.sampled.AudioSystem;
-import javax.sound.sampled.UnsupportedAudioFileException;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Vector;
-
-/**
- * This class gives information (audio format and comments) about MPEG file or URL.
- */
-public class MpegInfo implements TagInfo {
- protected int channels = -1;
- protected String channelsMode = null;
- protected String version = null;
- protected int rate = 0;
- protected String layer = null;
- protected String emphasis = null;
- protected int nominalbitrate = 0;
- protected long total = 0;
- protected String vendor = null;
- protected String location = null;
- protected long size = 0;
- protected boolean copyright = false;
- protected boolean crc = false;
- protected boolean original = false;
- protected boolean priv = false;
- protected boolean vbr = false;
- protected int track = -1;
- protected String year = null;
- protected String genre = null;
- protected String title = null;
- protected String artist = null;
- protected String album = null;
- protected Vector comments = null;
-
- /**
- * Constructor.
- */
- public MpegInfo() {
- super();
- }
-
- /**
- * Load and parse MPEG info from File.
- *
- * @param input
- * @throws IOException
- */
- public void load(File input) throws IOException, UnsupportedAudioFileException {
- size = input.length();
- location = input.getPath();
- loadInfo(input);
- }
-
- /**
- * Load and parse MPEG info from URL.
- *
- * @param input
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- public void load(URL input) throws IOException, UnsupportedAudioFileException {
- location = input.toString();
- loadInfo(input);
- }
-
- /**
- * Load and parse MPEG info from InputStream.
- *
- * @param input
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- public void load(InputStream input) throws IOException, UnsupportedAudioFileException {
- loadInfo(input);
- }
-
- /**
- * Load info from input stream.
- *
- * @param input
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- protected void loadInfo(InputStream input) throws IOException, UnsupportedAudioFileException {
- AudioFileFormat aff = AudioSystem.getAudioFileFormat(input);
- loadInfo(aff);
- }
-
- /**
- * Load MP3 info from file.
- *
- * @param file
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- protected void loadInfo(File file) throws IOException, UnsupportedAudioFileException {
- AudioFileFormat aff = AudioSystem.getAudioFileFormat(file);
- loadInfo(aff);
- }
-
- /**
- * Load info from AudioFileFormat.
- *
- * @param aff
- */
- protected void loadInfo(AudioFileFormat aff) throws UnsupportedAudioFileException {
- String type = aff.getType().toString();
- if (!type.equalsIgnoreCase("mp3")) throw new UnsupportedAudioFileException("Not MP3 audio format");
- if (aff instanceof TAudioFileFormat) {
- Map props = ((TAudioFileFormat) aff).properties();
- if (props.containsKey("mp3.channels")) channels = ((Integer) props.get("mp3.channels")).intValue();
- if (props.containsKey("mp3.frequency.hz")) rate = ((Integer) props.get("mp3.frequency.hz")).intValue();
- if (props.containsKey("mp3.bitrate.nominal.bps")) nominalbitrate = ((Integer) props.get("mp3.bitrate.nominal.bps")).intValue();
- if (props.containsKey("mp3.version.layer")) layer = "Layer " + props.get("mp3.version.layer");
- if (props.containsKey("mp3.version.mpeg")) {
- version = (String) props.get("mp3.version.mpeg");
- if (version.equals("1")) version = "MPEG1";
- else if (version.equals("2")) version = "MPEG2-LSF";
- else if (version.equals("2.5")) version = "MPEG2.5-LSF";
- }
- if (props.containsKey("mp3.mode")) {
- int mode = ((Integer) props.get("mp3.mode")).intValue();
- if (mode == 0) channelsMode = "Stereo";
- else if (mode == 1) channelsMode = "Joint Stereo";
- else if (mode == 2) channelsMode = "Dual Channel";
- else if (mode == 3) channelsMode = "Single Channel";
- }
- if (props.containsKey("mp3.crc")) crc = ((Boolean) props.get("mp3.crc")).booleanValue();
- if (props.containsKey("mp3.vbr")) vbr = ((Boolean) props.get("mp3.vbr")).booleanValue();
- if (props.containsKey("mp3.copyright")) copyright = ((Boolean) props.get("mp3.copyright")).booleanValue();
- if (props.containsKey("mp3.original")) original = ((Boolean) props.get("mp3.original")).booleanValue();
- emphasis = "none";
- if (props.containsKey("title")) title = (String) props.get("title");
- if (props.containsKey("author")) artist = (String) props.get("author");
- if (props.containsKey("album")) album = (String) props.get("album");
- if (props.containsKey("date")) year = (String) props.get("date");
- if (props.containsKey("duration")) total = (long) Math.round((((Long) props.get("duration")).longValue()) / 1000000);
- if (props.containsKey("mp3.id3tag.genre")) genre = (String) props.get("mp3.id3tag.genre");
- if (props.containsKey("mp3.id3tag.track")) {
- try {
- track = Integer.parseInt((String) props.get("mp3.id3tag.track"));
- }
- catch (NumberFormatException e1) {
- // Not a number
- }
- }
- }
- }
-
- /**
- * Load MP3 info from URL.
- *
- * @param input
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- protected void loadInfo(URL input) throws IOException, UnsupportedAudioFileException {
- AudioFileFormat aff = AudioSystem.getAudioFileFormat(input);
- loadInfo(aff);
- loadShoutastInfo(aff);
- }
-
- /**
- * Load Shoutcast info from AudioFileFormat.
- *
- * @param aff
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- protected void loadShoutastInfo(AudioFileFormat aff) throws IOException, UnsupportedAudioFileException {
- String type = aff.getType().toString();
- if (!type.equalsIgnoreCase("mp3")) throw new UnsupportedAudioFileException("Not MP3 audio format");
- if (aff instanceof TAudioFileFormat) {
- Map props = ((TAudioFileFormat) aff).properties();
- // Try shoutcast meta data (if any).
- Iterator it = props.keySet().iterator();
- comments = new Vector();
- while (it.hasNext()) {
- String key = (String) it.next();
- if (key.startsWith("mp3.shoutcast.metadata.")) {
- String value = (String) props.get(key);
- key = key.substring(23, key.length());
- if (key.equalsIgnoreCase("icy-name")) {
- title = value;
- } else if (key.equalsIgnoreCase("icy-genre")) {
- genre = value;
- } else {
- comments.add(key + "=" + value);
- }
- }
- }
- }
- }
-
- public boolean getVBR() {
- return vbr;
- }
-
- public int getChannels() {
- return channels;
- }
-
- public String getVersion() {
- return version;
- }
-
- public String getEmphasis() {
- return emphasis;
- }
-
- public boolean getCopyright() {
- return copyright;
- }
-
- public boolean getCRC() {
- return crc;
- }
-
- public boolean getOriginal() {
- return original;
- }
-
- public String getLayer() {
- return layer;
- }
-
- public long getSize() {
- return size;
- }
-
- public String getLocation() {
- return location;
- }
-
- /*-- TagInfo Implementation --*/
- public int getSamplingRate() {
- return rate;
- }
-
- public int getBitRate() {
- return nominalbitrate;
- }
-
- public long getPlayTime() {
- return total;
- }
-
- public String getTitle() {
- return title;
- }
-
- public String getArtist() {
- return artist;
- }
-
- public String getAlbum() {
- return album;
- }
-
- public int getTrack() {
- return track;
- }
-
- public String getGenre() {
- return genre;
- }
-
- public Vector getComment() {
- return comments;
- }
-
- public String getYear() {
- return year;
- }
-
- /**
- * Get channels mode.
- *
- * @return channels mode
- */
- public String getChannelsMode() {
- return channelsMode;
- }
-}
\ No newline at end of file
diff --git a/java/src/javazoom/jlgui/player/amp/tag/OggVorbisInfo.java b/java/src/javazoom/jlgui/player/amp/tag/OggVorbisInfo.java
deleted file mode 100644
index 8ea28cd..0000000
--- a/java/src/javazoom/jlgui/player/amp/tag/OggVorbisInfo.java
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- * OggVorbisInfo.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.tag;
-
-import org.tritonus.share.sampled.file.TAudioFileFormat;
-import javax.sound.sampled.AudioFileFormat;
-import javax.sound.sampled.AudioSystem;
-import javax.sound.sampled.UnsupportedAudioFileException;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Map;
-import java.util.Vector;
-
-/**
- * This class gives information (audio format and comments) about Ogg Vorbis file or URL.
- */
-public class OggVorbisInfo implements TagInfo
-{
- protected int serial = 0;
- protected int channels = 0;
- protected int version = 0;
- protected int rate = 0;
- protected int minbitrate = 0;
- protected int maxbitrate = 0;
- protected int averagebitrate = 0;
- protected int nominalbitrate = 0;
- protected long totalms = 0;
- protected String vendor = "";
- protected String location = null;
- protected long size = 0;
- protected int track = -1;
- protected String year = null;
- protected String genre = null;
- protected String title = null;
- protected String artist = null;
- protected String album = null;
- protected Vector comments = new Vector();
-
- /**
- * Constructor.
- */
- public OggVorbisInfo()
- {
- super();
- }
-
- /**
- * Load and parse Ogg Vorbis info from File.
- *
- * @param input
- * @throws IOException
- */
- public void load(File input) throws IOException, UnsupportedAudioFileException
- {
- size = input.length();
- location = input.getPath();
- loadInfo(input);
- }
-
- /**
- * Load and parse Ogg Vorbis info from URL.
- *
- * @param input
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- public void load(URL input) throws IOException, UnsupportedAudioFileException
- {
- location = input.toString();
- loadInfo(input);
- }
-
- /**
- * Load and parse Ogg Vorbis info from InputStream.
- *
- * @param input
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- public void load(InputStream input) throws IOException, UnsupportedAudioFileException
- {
- loadInfo(input);
- }
-
- /**
- * Load info from input stream.
- *
- * @param input
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- protected void loadInfo(InputStream input) throws IOException, UnsupportedAudioFileException
- {
- AudioFileFormat aff = AudioSystem.getAudioFileFormat(input);
- loadInfo(aff);
- }
-
- /**
- * Load Ogg Vorbis info from file.
- *
- * @param file
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- protected void loadInfo(File file) throws IOException, UnsupportedAudioFileException
- {
- AudioFileFormat aff = AudioSystem.getAudioFileFormat(file);
- loadInfo(aff);
- }
-
- /**
- * Load Ogg Vorbis info from URL.
- *
- * @param input
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- protected void loadInfo(URL input) throws IOException, UnsupportedAudioFileException
- {
- AudioFileFormat aff = AudioSystem.getAudioFileFormat(input);
- loadInfo(aff);
- loadExtendedInfo(aff);
- }
-
- /**
- * Load info from AudioFileFormat.
- *
- * @param aff
- * @throws UnsupportedAudioFileException
- */
- protected void loadInfo(AudioFileFormat aff) throws UnsupportedAudioFileException
- {
- String type = aff.getType().toString();
- if (!type.equalsIgnoreCase("ogg")) throw new UnsupportedAudioFileException("Not Ogg Vorbis audio format");
- if (aff instanceof TAudioFileFormat)
- {
- Map props = ((TAudioFileFormat) aff).properties();
- if (props.containsKey("ogg.channels")) channels = ((Integer) props.get("ogg.channels")).intValue();
- if (props.containsKey("ogg.frequency.hz")) rate = ((Integer) props.get("ogg.frequency.hz")).intValue();
- if (props.containsKey("ogg.bitrate.nominal.bps")) nominalbitrate = ((Integer) props.get("ogg.bitrate.nominal.bps")).intValue();
- averagebitrate = nominalbitrate;
- if (props.containsKey("ogg.bitrate.max.bps")) maxbitrate = ((Integer) props.get("ogg.bitrate.max.bps")).intValue();
- if (props.containsKey("ogg.bitrate.min.bps")) minbitrate = ((Integer) props.get("ogg.bitrate.min.bps")).intValue();
- if (props.containsKey("ogg.version")) version = ((Integer) props.get("ogg.version")).intValue();
- if (props.containsKey("ogg.serial")) serial = ((Integer) props.get("ogg.serial")).intValue();
- if (props.containsKey("ogg.comment.encodedby")) vendor = (String) props.get("ogg.comment.encodedby");
- if (props.containsKey("copyright")) comments.add((String) props.get("copyright"));
- if (props.containsKey("title")) title = (String) props.get("title");
- if (props.containsKey("author")) artist = (String) props.get("author");
- if (props.containsKey("album")) album = (String) props.get("album");
- if (props.containsKey("date")) year = (String) props.get("date");
- if (props.containsKey("comment")) comments.add((String) props.get("comment"));
- if (props.containsKey("duration")) totalms = (long) Math.round((((Long) props.get("duration")).longValue()) / 1000000);
- if (props.containsKey("ogg.comment.genre")) genre = (String) props.get("ogg.comment.genre");
- if (props.containsKey("ogg.comment.track"))
- {
- try
- {
- track = Integer.parseInt((String) props.get("ogg.comment.track"));
- }
- catch (NumberFormatException e1)
- {
- // Not a number
- }
- }
- if (props.containsKey("ogg.comment.ext.1")) comments.add((String) props.get("ogg.comment.ext.1"));
- if (props.containsKey("ogg.comment.ext.2")) comments.add((String) props.get("ogg.comment.ext.2"));
- if (props.containsKey("ogg.comment.ext.3")) comments.add((String) props.get("ogg.comment.ext.3"));
- }
- }
-
- /**
- * Load extended info from AudioFileFormat.
- *
- * @param aff
- * @throws IOException
- * @throws UnsupportedAudioFileException
- */
- protected void loadExtendedInfo(AudioFileFormat aff) throws IOException, UnsupportedAudioFileException
- {
- String type = aff.getType().toString();
- if (!type.equalsIgnoreCase("ogg")) throw new UnsupportedAudioFileException("Not Ogg Vorbis audio format");
- if (aff instanceof TAudioFileFormat)
- {
- //Map props = ((TAudioFileFormat) aff).properties();
- // How to load icecast meta data (if any) ??
- }
- }
-
- public int getSerial()
- {
- return serial;
- }
-
- public int getChannels()
- {
- return channels;
- }
-
- public int getVersion()
- {
- return version;
- }
-
- public int getMinBitrate()
- {
- return minbitrate;
- }
-
- public int getMaxBitrate()
- {
- return maxbitrate;
- }
-
- public int getAverageBitrate()
- {
- return averagebitrate;
- }
-
- public long getSize()
- {
- return size;
- }
-
- public String getVendor()
- {
- return vendor;
- }
-
- public String getLocation()
- {
- return location;
- }
-
- /*-- TagInfo Implementation --*/
- public int getSamplingRate()
- {
- return rate;
- }
-
- public int getBitRate()
- {
- return nominalbitrate;
- }
-
- public long getPlayTime()
- {
- return totalms;
- }
-
- public String getTitle()
- {
- return title;
- }
-
- public String getArtist()
- {
- return artist;
- }
-
- public String getAlbum()
- {
- return album;
- }
-
- public int getTrack()
- {
- return track;
- }
-
- public String getGenre()
- {
- return genre;
- }
-
- public Vector getComment()
- {
- return comments;
- }
-
- public String getYear()
- {
- return year;
- }
-}
\ No newline at end of file
diff --git a/java/src/javazoom/jlgui/player/amp/tag/TagInfo.java b/java/src/javazoom/jlgui/player/amp/tag/TagInfo.java
deleted file mode 100644
index 86e05d5..0000000
--- a/java/src/javazoom/jlgui/player/amp/tag/TagInfo.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * TagInfo.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.tag;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Vector;
-import javax.sound.sampled.UnsupportedAudioFileException;
-
-/**
- * This interface define needed features for song information.
- * Adapted from Scott Pennell interface.
- */
-public interface TagInfo
-{
- public void load(InputStream input) throws IOException, UnsupportedAudioFileException;
-
- public void load(URL input) throws IOException, UnsupportedAudioFileException;
-
- public void load(File input) throws IOException, UnsupportedAudioFileException;
-
- /**
- * Get Sampling Rate
- *
- * @return sampling rate
- */
- public int getSamplingRate();
-
- /**
- * Get Nominal Bitrate
- *
- * @return bitrate in bps
- */
- public int getBitRate();
-
- /**
- * Get channels.
- *
- * @return channels
- */
- public int getChannels();
-
- /**
- * Get play time in seconds.
- *
- * @return play time in seconds
- */
- public long getPlayTime();
-
- /**
- * Get the title of the song.
- *
- * @return the title of the song
- */
- public String getTitle();
-
- /**
- * Get the artist that performed the song
- *
- * @return the artist that performed the song
- */
- public String getArtist();
-
- /**
- * Get the name of the album upon which the song resides
- *
- * @return the album name
- */
- public String getAlbum();
-
- /**
- * Get the track number of this track on the album
- *
- * @return the track number
- */
- public int getTrack();
-
- /**
- * Get the genre string of the music
- *
- * @return the genre string
- */
- public String getGenre();
-
- /**
- * Get the year the track was released
- *
- * @return the year the track was released
- */
- public String getYear();
-
- /**
- * Get any comments provided about the song
- *
- * @return the comments
- */
- public Vector getComment();
-}
\ No newline at end of file
diff --git a/java/src/javazoom/jlgui/player/amp/tag/TagInfoFactory.java b/java/src/javazoom/jlgui/player/amp/tag/TagInfoFactory.java
deleted file mode 100644
index 13281f1..0000000
--- a/java/src/javazoom/jlgui/player/amp/tag/TagInfoFactory.java
+++ /dev/null
@@ -1,399 +0,0 @@
-/*
- * TagInfoFactory.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.tag;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.net.MalformedURLException;
-import java.net.URL;
-import javax.sound.sampled.UnsupportedAudioFileException;
-import javazoom.jlgui.player.amp.tag.ui.APEDialog;
-import javazoom.jlgui.player.amp.tag.ui.EmptyDialog;
-import javazoom.jlgui.player.amp.tag.ui.FlacDialog;
-import javazoom.jlgui.player.amp.tag.ui.MpegDialog;
-import javazoom.jlgui.player.amp.tag.ui.OggVorbisDialog;
-import javazoom.jlgui.player.amp.tag.ui.TagInfoDialog;
-import javazoom.jlgui.player.amp.util.Config;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * This class is a factory for TagInfo and TagInfoDialog.
- * It allows to any plug custom TagIngfo parser matching to TagInfo
- * interface.
- */
-public class TagInfoFactory
-{
- private static Log log = LogFactory.getLog(TagInfoFactory.class);
- private static TagInfoFactory instance = null;
- private Class MpegTagInfoClass = null;
- private Class VorbisTagInfoClass = null;
- private Class APETagInfoClass = null;
- private Class FlacTagInfoClass = null;
- private Config conf = null;
-
- private TagInfoFactory()
- {
- super();
- conf = Config.getInstance();
- String classname = conf.getMpegTagInfoClassName();
- MpegTagInfoClass = getTagInfoImpl(classname);
- if (MpegTagInfoClass == null)
- {
- log.error("Error : TagInfo implementation not found in " + classname + " hierarchy");
- MpegTagInfoClass = getTagInfoImpl("javazoom.jlgui.player.amp.tag.MpegInfo");
- }
- classname = conf.getOggVorbisTagInfoClassName();
- VorbisTagInfoClass = getTagInfoImpl(classname);
- if (VorbisTagInfoClass == null)
- {
- log.error("Error : TagInfo implementation not found in " + classname + " hierarchy");
- VorbisTagInfoClass = getTagInfoImpl("javazoom.jlgui.player.amp.tag.OggVorbisInfo");
- }
- classname = conf.getAPETagInfoClassName();
- APETagInfoClass = getTagInfoImpl(classname);
- if (APETagInfoClass == null)
- {
- log.error("Error : TagInfo implementation not found in " + classname + " hierarchy");
- APETagInfoClass = getTagInfoImpl("javazoom.jlgui.player.amp.tag.APEInfo");
- }
- classname = conf.getFlacTagInfoClassName();
- FlacTagInfoClass = getTagInfoImpl(classname);
- if (FlacTagInfoClass == null)
- {
- log.error("Error : TagInfo implementation not found in " + classname + " hierarchy");
- FlacTagInfoClass = getTagInfoImpl("javazoom.jlgui.player.amp.tag.FlacInfo");
- }
- }
-
- public static synchronized TagInfoFactory getInstance()
- {
- if (instance == null)
- {
- instance = new TagInfoFactory();
- }
- return instance;
- }
-
- /**
- * Return tag info from a given URL.
- *
- * @param location
- * @return TagInfo structure for given URL
- */
- public TagInfo getTagInfo(URL location)
- {
- TagInfo taginfo;
- try
- {
- taginfo = getTagInfoImplInstance(MpegTagInfoClass);
- taginfo.load(location);
- }
- catch (IOException ex)
- {
- log.debug(ex);
- taginfo = null;
- }
- catch (UnsupportedAudioFileException ex)
- {
- // Not Mpeg Format
- taginfo = null;
- }
- if (taginfo == null)
- {
- // Check Ogg Vorbis format.
- try
- {
- taginfo = getTagInfoImplInstance(VorbisTagInfoClass);
- taginfo.load(location);
- }
- catch (UnsupportedAudioFileException ex)
- {
- // Not Ogg Vorbis Format
- taginfo = null;
- }
- catch (IOException ex)
- {
- log.debug(ex);
- taginfo = null;
- }
- }
- if (taginfo == null)
- {
- // Check APE format.
- try
- {
- taginfo = getTagInfoImplInstance(APETagInfoClass);
- taginfo.load(location);
- }
- catch (UnsupportedAudioFileException ex)
- {
- // Not APE Format
- taginfo = null;
- }
- catch (IOException ex)
- {
- log.debug(ex);
- taginfo = null;
- }
- }
- if (taginfo == null)
- {
- // Check Flac format.
- try
- {
- taginfo = getTagInfoImplInstance(FlacTagInfoClass);
- taginfo.load(location);
- }
- catch (UnsupportedAudioFileException ex)
- {
- // Not Flac Format
- taginfo = null;
- }
- catch (IOException ex)
- {
- log.debug(ex);
- taginfo = null;
- }
- }
- return taginfo;
- }
-
- /**
- * Return tag info from a given String.
- *
- * @param location
- * @return TagInfo structure for given location
- */
- public TagInfo getTagInfo(String location)
- {
- if (Config.startWithProtocol(location))
- {
- try
- {
- return getTagInfo(new URL(location));
- }
- catch (MalformedURLException e)
- {
- return null;
- }
- }
- else
- {
- return getTagInfo(new File(location));
- }
- }
-
- /**
- * Get TagInfo for given file.
- *
- * @param location
- * @return TagInfo structure for given location
- */
- public TagInfo getTagInfo(File location)
- {
- TagInfo taginfo;
- // Check Mpeg format.
- try
- {
- taginfo = getTagInfoImplInstance(MpegTagInfoClass);
- taginfo.load(location);
- }
- catch (IOException ex)
- {
- log.debug(ex);
- taginfo = null;
- }
- catch (UnsupportedAudioFileException ex)
- {
- // Not Mpeg Format
- taginfo = null;
- }
- if (taginfo == null)
- {
- // Check Ogg Vorbis format.
- try
- {
- //taginfo = new OggVorbisInfo(location);
- taginfo = getTagInfoImplInstance(VorbisTagInfoClass);
- taginfo.load(location);
- }
- catch (UnsupportedAudioFileException ex)
- {
- // Not Ogg Vorbis Format
- taginfo = null;
- }
- catch (IOException ex)
- {
- log.debug(ex);
- taginfo = null;
- }
- }
- if (taginfo == null)
- {
- // Check APE format.
- try
- {
- taginfo = getTagInfoImplInstance(APETagInfoClass);
- taginfo.load(location);
- }
- catch (UnsupportedAudioFileException ex)
- {
- // Not APE Format
- taginfo = null;
- }
- catch (IOException ex)
- {
- log.debug(ex);
- taginfo = null;
- }
- }
- if (taginfo == null)
- {
- // Check Flac format.
- try
- {
- taginfo = getTagInfoImplInstance(FlacTagInfoClass);
- taginfo.load(location);
- }
- catch (UnsupportedAudioFileException ex)
- {
- // Not Flac Format
- taginfo = null;
- }
- catch (IOException ex)
- {
- log.debug(ex);
- taginfo = null;
- }
- }
- return taginfo;
- }
-
- /**
- * Return dialog (graphical) to display tag info.
- *
- * @param taginfo
- * @return TagInfoDialog for given TagInfo
- */
- public TagInfoDialog getTagInfoDialog(TagInfo taginfo)
- {
- TagInfoDialog dialog;
- if (taginfo != null)
- {
- if (taginfo instanceof OggVorbisInfo)
- {
- dialog = new OggVorbisDialog(conf.getTopParent(), "OggVorbis info", (OggVorbisInfo) taginfo);
- }
- else if (taginfo instanceof MpegInfo)
- {
- dialog = new MpegDialog(conf.getTopParent(), "Mpeg info", (MpegInfo) taginfo);
- }
- else if (taginfo instanceof APEInfo)
- {
- dialog = new APEDialog(conf.getTopParent(), "Ape info", (APEInfo) taginfo);
- }
- else if (taginfo instanceof FlacInfo)
- {
- dialog = new FlacDialog(conf.getTopParent(), "Flac info", (FlacInfo) taginfo);
- }
- else
- {
- dialog = new EmptyDialog(conf.getTopParent(), "No info", taginfo);
- }
- }
- else
- {
- dialog = new EmptyDialog(conf.getTopParent(), "No info", null);
- }
- return dialog;
- }
-
- /**
- * Load and check class implementation from classname.
- *
- * @param classname
- * @return TagInfo implementation for given class name
- */
- public Class getTagInfoImpl(String classname)
- {
- Class aClass = null;
- boolean interfaceFound = false;
- if (classname != null)
- {
- try
- {
- aClass = Class.forName(classname);
- Class superClass = aClass;
- // Looking for TagInfo interface implementation.
- while (superClass != null)
- {
- Class[] interfaces = superClass.getInterfaces();
- for (int i = 0; i < interfaces.length; i++)
- {
- if ((interfaces[i].getName()).equals("javazoom.jlgui.player.amp.tag.TagInfo"))
- {
- interfaceFound = true;
- break;
- }
- }
- if (interfaceFound) break;
- superClass = superClass.getSuperclass();
- }
- if (interfaceFound) log.info(classname + " loaded");
- else log.info(classname + " not loaded");
- }
- catch (ClassNotFoundException e)
- {
- log.error("Error : " + classname + " : " + e.getMessage());
- }
- }
- return aClass;
- }
-
- /**
- * Return new instance of given class.
- *
- * @param aClass
- * @return TagInfo for given class
- */
- public TagInfo getTagInfoImplInstance(Class aClass)
- {
- TagInfo instance = null;
- if (aClass != null)
- {
- try
- {
- Class[] argsClass = new Class[] {};
- Constructor c = aClass.getConstructor(argsClass);
- instance = (TagInfo) (c.newInstance(null));
- }
- catch (Exception e)
- {
- log.error("Cannot Instanciate : " + aClass.getName() + " : " + e.getMessage());
- }
- }
- return instance;
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/tag/ui/APEDialog.java b/java/src/javazoom/jlgui/player/amp/tag/ui/APEDialog.java
deleted file mode 100644
index 001bca3..0000000
--- a/java/src/javazoom/jlgui/player/amp/tag/ui/APEDialog.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * APEDialog.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.tag.ui;
-
-import java.text.DecimalFormat;
-import javax.swing.JFrame;
-import javazoom.jlgui.player.amp.tag.APEInfo;
-
-/**
- * APEDialog class implements a DialogBox to diplay APE info.
- */
-public class APEDialog extends TagInfoDialog
-{
- private APEInfo _apeinfo = null;
-
- /**
- * Creates new form ApeDialog
- */
- public APEDialog(JFrame parent, String title, APEInfo mi)
- {
- super(parent, title);
- initComponents();
- _apeinfo = mi;
- int size = _apeinfo.getLocation().length();
- locationLabel.setText(size > 50 ? ("..." + _apeinfo.getLocation().substring(size - 50)) : _apeinfo.getLocation());
- if ((_apeinfo.getTitle() != null) && (!_apeinfo.getTitle().equals(""))) textField.append("Title=" + _apeinfo.getTitle() + "\n");
- if ((_apeinfo.getArtist() != null) && (!_apeinfo.getArtist().equals(""))) textField.append("Artist=" + _apeinfo.getArtist() + "\n");
- if ((_apeinfo.getAlbum() != null) && (!_apeinfo.getAlbum().equals(""))) textField.append("Album=" + _apeinfo.getAlbum() + "\n");
- if (_apeinfo.getTrack() > 0) textField.append("Track=" + _apeinfo.getTrack() + "\n");
- if ((_apeinfo.getYear() != null) && (!_apeinfo.getYear().equals(""))) textField.append("Year=" + _apeinfo.getYear() + "\n");
- if ((_apeinfo.getGenre() != null) && (!_apeinfo.getGenre().equals(""))) textField.append("Genre=" + _apeinfo.getGenre() + "\n");
- java.util.List comments = _apeinfo.getComment();
- if (comments != null)
- {
- for (int i = 0; i < comments.size(); i++)
- textField.append(comments.get(i) + "\n");
- }
- int secondsAmount = Math.round(_apeinfo.getPlayTime());
- if (secondsAmount < 0) secondsAmount = 0;
- int minutes = secondsAmount / 60;
- int seconds = secondsAmount - (minutes * 60);
- lengthLabel.setText("Length : " + minutes + ":" + seconds);
- DecimalFormat df = new DecimalFormat("#,###,###");
- sizeLabel.setText("Size : " + df.format(_apeinfo.getSize()) + " bytes");
- versionLabel.setText("Version: " + df.format(_apeinfo.getVersion()));
- compressionLabel.setText("Compression: " + _apeinfo.getCompressionlevel());
- channelsLabel.setText("Channels: " + _apeinfo.getChannels());
- bitspersampleLabel.setText("Bits Per Sample: " + _apeinfo.getBitsPerSample());
- bitrateLabel.setText("Average Bitrate: " + (_apeinfo.getBitRate() / 1000) + " kbps");
- samplerateLabel.setText("Sample Rate: " + _apeinfo.getSamplingRate() + " Hz");
- peaklevelLabel.setText("Peak Level: " + (_apeinfo.getPeaklevel() > 0 ? String.valueOf(_apeinfo.getPeaklevel()) : ""));
- copyrightLabel.setText("Copyrighted: " + (_apeinfo.getCopyright() != null ? _apeinfo.getCopyright() : ""));
- buttonsPanel.add(_close);
- pack();
- }
-
- /**
- * This method is called from within the constructor to
- * initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is
- * always regenerated by the Form Editor.
- */
- // //GEN-BEGIN:initComponents
- private void initComponents()
- {
- java.awt.GridBagConstraints gridBagConstraints;
- jPanel3 = new javax.swing.JPanel();
- jPanel1 = new javax.swing.JPanel();
- jLabel1 = new javax.swing.JLabel();
- locationLabel = new javax.swing.JLabel();
- jLabel2 = new javax.swing.JLabel();
- jLabel3 = new javax.swing.JLabel();
- jScrollPane1 = new javax.swing.JScrollPane();
- textField = new javax.swing.JTextArea();
- jPanel2 = new javax.swing.JPanel();
- lengthLabel = new javax.swing.JLabel();
- sizeLabel = new javax.swing.JLabel();
- versionLabel = new javax.swing.JLabel();
- compressionLabel = new javax.swing.JLabel();
- channelsLabel = new javax.swing.JLabel();
- bitspersampleLabel = new javax.swing.JLabel();
- bitrateLabel = new javax.swing.JLabel();
- samplerateLabel = new javax.swing.JLabel();
- peaklevelLabel = new javax.swing.JLabel();
- copyrightLabel = new javax.swing.JLabel();
- buttonsPanel = new javax.swing.JPanel();
- getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.Y_AXIS));
- setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
- setResizable(false);
- jPanel3.setLayout(new java.awt.GridBagLayout());
- jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
- jLabel1.setText("File/URL :");
- jPanel1.add(jLabel1);
- jPanel1.add(locationLabel);
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridwidth = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- jPanel3.add(jPanel1, gridBagConstraints);
- jLabel2.setText("Standard Tags");
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- jPanel3.add(jLabel2, gridBagConstraints);
- jLabel3.setText("File/Stream info");
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- jPanel3.add(jLabel3, gridBagConstraints);
- textField.setColumns(20);
- textField.setRows(10);
- jScrollPane1.setViewportView(textField);
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- jPanel3.add(jScrollPane1, gridBagConstraints);
- jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2, javax.swing.BoxLayout.Y_AXIS));
- jPanel2.add(lengthLabel);
- jPanel2.add(sizeLabel);
- jPanel2.add(versionLabel);
- jPanel2.add(compressionLabel);
- jPanel2.add(channelsLabel);
- jPanel2.add(bitspersampleLabel);
- jPanel2.add(bitrateLabel);
- jPanel2.add(samplerateLabel);
- jPanel2.add(peaklevelLabel);
- jPanel2.add(copyrightLabel);
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- jPanel3.add(jPanel2, gridBagConstraints);
- getContentPane().add(jPanel3);
- getContentPane().add(buttonsPanel);
- //pack();
- }
- // //GEN-END:initComponents
- // Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JLabel bitrateLabel;
- private javax.swing.JLabel bitspersampleLabel;
- private javax.swing.JPanel buttonsPanel;
- private javax.swing.JLabel channelsLabel;
- private javax.swing.JLabel compressionLabel;
- private javax.swing.JLabel copyrightLabel;
- private javax.swing.JLabel jLabel1;
- private javax.swing.JLabel jLabel2;
- private javax.swing.JLabel jLabel3;
- private javax.swing.JPanel jPanel1;
- private javax.swing.JPanel jPanel2;
- private javax.swing.JPanel jPanel3;
- private javax.swing.JScrollPane jScrollPane1;
- private javax.swing.JLabel lengthLabel;
- private javax.swing.JLabel locationLabel;
- private javax.swing.JLabel peaklevelLabel;
- private javax.swing.JLabel samplerateLabel;
- private javax.swing.JLabel sizeLabel;
- private javax.swing.JTextArea textField;
- private javax.swing.JLabel versionLabel;
- // End of variables declaration//GEN-END:variables
-}
diff --git a/java/src/javazoom/jlgui/player/amp/tag/ui/EmptyDialog.java b/java/src/javazoom/jlgui/player/amp/tag/ui/EmptyDialog.java
deleted file mode 100644
index 147f6c9..0000000
--- a/java/src/javazoom/jlgui/player/amp/tag/ui/EmptyDialog.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * EmptyDialog.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.tag.ui;
-
-import javax.swing.JFrame;
-import javazoom.jlgui.player.amp.tag.TagInfo;
-
-/**
- * OggVorbisDialog class implements a DialogBox to diplay OggVorbis info.
- */
-public class EmptyDialog extends TagInfoDialog
-{
- private TagInfo _info = null;
-
- /**
- * Creates new form MpegDialog
- */
- public EmptyDialog(JFrame parent, String title, TagInfo mi)
- {
- super(parent, title);
- initComponents();
- _info = mi;
- buttonsPanel.add(_close);
- pack();
- }
-
- /**
- * This method is called from within the constructor to
- * initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is
- * always regenerated by the Form Editor.
- */
- // //GEN-BEGIN:initComponents
- private void initComponents()
- {
- jPanel3 = new javax.swing.JPanel();
- jLabel1 = new javax.swing.JLabel();
- buttonsPanel = new javax.swing.JPanel();
- getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.Y_AXIS));
- setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
- setResizable(false);
- jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
- jLabel1.setText("No Information Available");
- jPanel3.add(jLabel1);
- getContentPane().add(jPanel3);
- getContentPane().add(buttonsPanel);
- //pack();
- }
- // //GEN-END:initComponents
- // Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JPanel buttonsPanel;
- private javax.swing.JLabel jLabel1;
- private javax.swing.JPanel jPanel3;
- // End of variables declaration//GEN-END:variables
-}
diff --git a/java/src/javazoom/jlgui/player/amp/tag/ui/FlacDialog.java b/java/src/javazoom/jlgui/player/amp/tag/ui/FlacDialog.java
deleted file mode 100644
index f506a67..0000000
--- a/java/src/javazoom/jlgui/player/amp/tag/ui/FlacDialog.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- * FlacDialog.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.tag.ui;
-
-import java.text.DecimalFormat;
-import javax.swing.JFrame;
-import javazoom.jlgui.player.amp.tag.FlacInfo;
-
-/**
- * FlacDialog class implements a DialogBox to diplay Flac info.
- */
-public class FlacDialog extends TagInfoDialog
-{
- private FlacInfo _flacinfo = null;
-
- /**
- * Creates new form FlacDialog
- */
- public FlacDialog(JFrame parent, String title, FlacInfo mi)
- {
- super(parent, title);
- initComponents();
- _flacinfo = mi;
- int size = _flacinfo.getLocation().length();
- locationLabel.setText(size > 50 ? ("..." + _flacinfo.getLocation().substring(size - 50)) : _flacinfo.getLocation());
- if ((_flacinfo.getTitle() != null) && (!_flacinfo.getTitle().equals(""))) textField.append("Title=" + _flacinfo.getTitle() + "\n");
- if ((_flacinfo.getArtist() != null) && (!_flacinfo.getArtist().equals(""))) textField.append("Artist=" + _flacinfo.getArtist() + "\n");
- if ((_flacinfo.getAlbum() != null) && (!_flacinfo.getAlbum().equals(""))) textField.append("Album=" + _flacinfo.getAlbum() + "\n");
- if (_flacinfo.getTrack() > 0) textField.append("Track=" + _flacinfo.getTrack() + "\n");
- if ((_flacinfo.getYear() != null) && (!_flacinfo.getYear().equals(""))) textField.append("Year=" + _flacinfo.getYear() + "\n");
- if ((_flacinfo.getGenre() != null) && (!_flacinfo.getGenre().equals(""))) textField.append("Genre=" + _flacinfo.getGenre() + "\n");
- java.util.List comments = _flacinfo.getComment();
- if (comments != null)
- {
- for (int i = 0; i < comments.size(); i++)
- textField.append(comments.get(i) + "\n");
- }
- DecimalFormat df = new DecimalFormat("#,###,###");
- sizeLabel.setText("Size : " + df.format(_flacinfo.getSize()) + " bytes");
- channelsLabel.setText("Channels: " + _flacinfo.getChannels());
- bitspersampleLabel.setText("Bits Per Sample: " + _flacinfo.getBitsPerSample());
- samplerateLabel.setText("Sample Rate: " + _flacinfo.getSamplingRate() + " Hz");
- buttonsPanel.add(_close);
- pack();
- }
-
- /**
- * This method is called from within the constructor to
- * initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is
- * always regenerated by the Form Editor.
- */
- // //GEN-BEGIN:initComponents
- private void initComponents()
- {
- java.awt.GridBagConstraints gridBagConstraints;
- jPanel3 = new javax.swing.JPanel();
- jPanel1 = new javax.swing.JPanel();
- jLabel1 = new javax.swing.JLabel();
- locationLabel = new javax.swing.JLabel();
- jLabel2 = new javax.swing.JLabel();
- jLabel3 = new javax.swing.JLabel();
- jScrollPane1 = new javax.swing.JScrollPane();
- textField = new javax.swing.JTextArea();
- jPanel2 = new javax.swing.JPanel();
- lengthLabel = new javax.swing.JLabel();
- sizeLabel = new javax.swing.JLabel();
- channelsLabel = new javax.swing.JLabel();
- bitspersampleLabel = new javax.swing.JLabel();
- bitrateLabel = new javax.swing.JLabel();
- samplerateLabel = new javax.swing.JLabel();
- buttonsPanel = new javax.swing.JPanel();
- getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.Y_AXIS));
- setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
- setResizable(false);
- jPanel3.setLayout(new java.awt.GridBagLayout());
- jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
- jLabel1.setText("File/URL :");
- jPanel1.add(jLabel1);
- jPanel1.add(locationLabel);
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridwidth = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- jPanel3.add(jPanel1, gridBagConstraints);
- jLabel2.setText("Standard Tags");
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- jPanel3.add(jLabel2, gridBagConstraints);
- jLabel3.setText("File/Stream info");
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- jPanel3.add(jLabel3, gridBagConstraints);
- textField.setColumns(20);
- textField.setRows(10);
- jScrollPane1.setViewportView(textField);
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- jPanel3.add(jScrollPane1, gridBagConstraints);
- jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2, javax.swing.BoxLayout.Y_AXIS));
- jPanel2.add(lengthLabel);
- jPanel2.add(sizeLabel);
- jPanel2.add(channelsLabel);
- jPanel2.add(bitspersampleLabel);
- jPanel2.add(bitrateLabel);
- jPanel2.add(samplerateLabel);
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- jPanel3.add(jPanel2, gridBagConstraints);
- getContentPane().add(jPanel3);
- getContentPane().add(buttonsPanel);
- //pack();
- }
- // //GEN-END:initComponents
- // Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JLabel bitrateLabel;
- private javax.swing.JLabel bitspersampleLabel;
- private javax.swing.JPanel buttonsPanel;
- private javax.swing.JLabel channelsLabel;
- private javax.swing.JLabel jLabel1;
- private javax.swing.JLabel jLabel2;
- private javax.swing.JLabel jLabel3;
- private javax.swing.JPanel jPanel1;
- private javax.swing.JPanel jPanel2;
- private javax.swing.JPanel jPanel3;
- private javax.swing.JScrollPane jScrollPane1;
- private javax.swing.JLabel lengthLabel;
- private javax.swing.JLabel locationLabel;
- private javax.swing.JLabel samplerateLabel;
- private javax.swing.JLabel sizeLabel;
- private javax.swing.JTextArea textField;
- // End of variables declaration//GEN-END:variables
-}
diff --git a/java/src/javazoom/jlgui/player/amp/tag/ui/MpegDialog.java b/java/src/javazoom/jlgui/player/amp/tag/ui/MpegDialog.java
deleted file mode 100644
index 2782bed..0000000
--- a/java/src/javazoom/jlgui/player/amp/tag/ui/MpegDialog.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * MpegDialog.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.tag.ui;
-
-import java.text.DecimalFormat;
-import javax.swing.JFrame;
-import javazoom.jlgui.player.amp.tag.MpegInfo;
-
-/**
- * OggVorbisDialog class implements a DialogBox to diplay OggVorbis info.
- */
-public class MpegDialog extends TagInfoDialog
-{
- private MpegInfo _mpeginfo = null;
-
- /**
- * Creates new form MpegDialog
- */
- public MpegDialog(JFrame parent, String title, MpegInfo mi)
- {
- super(parent, title);
- initComponents();
- _mpeginfo = mi;
- int size = _mpeginfo.getLocation().length();
- locationLabel.setText(size > 50 ? ("..." + _mpeginfo.getLocation().substring(size - 50)) : _mpeginfo.getLocation());
- if ((_mpeginfo.getTitle() != null) && ((!_mpeginfo.getTitle().equals("")))) textField.append("Title=" + _mpeginfo.getTitle() + "\n");
- if ((_mpeginfo.getArtist() != null) && ((!_mpeginfo.getArtist().equals("")))) textField.append("Artist=" + _mpeginfo.getArtist() + "\n");
- if ((_mpeginfo.getAlbum() != null) && ((!_mpeginfo.getAlbum().equals("")))) textField.append("Album=" + _mpeginfo.getAlbum() + "\n");
- if (_mpeginfo.getTrack() > 0) textField.append("Track=" + _mpeginfo.getTrack() + "\n");
- if ((_mpeginfo.getYear() != null) && ((!_mpeginfo.getYear().equals("")))) textField.append("Year=" + _mpeginfo.getYear() + "\n");
- if ((_mpeginfo.getGenre() != null) && ((!_mpeginfo.getGenre().equals("")))) textField.append("Genre=" + _mpeginfo.getGenre() + "\n");
- java.util.List comments = _mpeginfo.getComment();
- if (comments != null)
- {
- for (int i = 0; i < comments.size(); i++)
- textField.append(comments.get(i) + "\n");
- }
- int secondsAmount = Math.round(_mpeginfo.getPlayTime());
- if (secondsAmount < 0) secondsAmount = 0;
- int minutes = secondsAmount / 60;
- int seconds = secondsAmount - (minutes * 60);
- lengthLabel.setText("Length : " + minutes + ":" + seconds);
- DecimalFormat df = new DecimalFormat("#,###,###");
- sizeLabel.setText("Size : " + df.format(_mpeginfo.getSize()) + " bytes");
- versionLabel.setText(_mpeginfo.getVersion() + " " + _mpeginfo.getLayer());
- bitrateLabel.setText((_mpeginfo.getBitRate() / 1000) + " kbps");
- samplerateLabel.setText(_mpeginfo.getSamplingRate() + " Hz " + _mpeginfo.getChannelsMode());
- vbrLabel.setText("VBR : " + _mpeginfo.getVBR());
- crcLabel.setText("CRCs : " + _mpeginfo.getCRC());
- copyrightLabel.setText("Copyrighted : " + _mpeginfo.getCopyright());
- originalLabel.setText("Original : " + _mpeginfo.getOriginal());
- emphasisLabel.setText("Emphasis : " + _mpeginfo.getEmphasis());
- buttonsPanel.add(_close);
- pack();
- }
-
- /**
- * Returns VorbisInfo.
- */
- public MpegInfo getOggVorbisInfo()
- {
- return _mpeginfo;
- }
-
- /**
- * This method is called from within the constructor to
- * initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is
- * always regenerated by the Form Editor.
- */
- // //GEN-BEGIN:initComponents
- private void initComponents()
- {
- java.awt.GridBagConstraints gridBagConstraints;
- jPanel3 = new javax.swing.JPanel();
- jPanel1 = new javax.swing.JPanel();
- jLabel1 = new javax.swing.JLabel();
- locationLabel = new javax.swing.JLabel();
- jLabel2 = new javax.swing.JLabel();
- jLabel3 = new javax.swing.JLabel();
- jScrollPane1 = new javax.swing.JScrollPane();
- textField = new javax.swing.JTextArea();
- jPanel2 = new javax.swing.JPanel();
- lengthLabel = new javax.swing.JLabel();
- sizeLabel = new javax.swing.JLabel();
- versionLabel = new javax.swing.JLabel();
- bitrateLabel = new javax.swing.JLabel();
- samplerateLabel = new javax.swing.JLabel();
- vbrLabel = new javax.swing.JLabel();
- crcLabel = new javax.swing.JLabel();
- copyrightLabel = new javax.swing.JLabel();
- originalLabel = new javax.swing.JLabel();
- emphasisLabel = new javax.swing.JLabel();
- buttonsPanel = new javax.swing.JPanel();
- getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.Y_AXIS));
- setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
- setResizable(false);
- jPanel3.setLayout(new java.awt.GridBagLayout());
- jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
- jLabel1.setText("File/URL :");
- jPanel1.add(jLabel1);
- jPanel1.add(locationLabel);
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridwidth = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- jPanel3.add(jPanel1, gridBagConstraints);
- jLabel2.setText("Standard Tags");
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- jPanel3.add(jLabel2, gridBagConstraints);
- jLabel3.setText("File/Stream info");
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- jPanel3.add(jLabel3, gridBagConstraints);
- textField.setColumns(20);
- textField.setRows(10);
- jScrollPane1.setViewportView(textField);
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- jPanel3.add(jScrollPane1, gridBagConstraints);
- jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2, javax.swing.BoxLayout.Y_AXIS));
- jPanel2.add(lengthLabel);
- jPanel2.add(sizeLabel);
- jPanel2.add(versionLabel);
- jPanel2.add(bitrateLabel);
- jPanel2.add(samplerateLabel);
- jPanel2.add(vbrLabel);
- jPanel2.add(crcLabel);
- jPanel2.add(copyrightLabel);
- jPanel2.add(originalLabel);
- jPanel2.add(emphasisLabel);
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- jPanel3.add(jPanel2, gridBagConstraints);
- getContentPane().add(jPanel3);
- getContentPane().add(buttonsPanel);
- //pack();
- }
- // //GEN-END:initComponents
- // Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JLabel bitrateLabel;
- private javax.swing.JPanel buttonsPanel;
- private javax.swing.JLabel copyrightLabel;
- private javax.swing.JLabel crcLabel;
- private javax.swing.JLabel emphasisLabel;
- private javax.swing.JLabel jLabel1;
- private javax.swing.JLabel jLabel2;
- private javax.swing.JLabel jLabel3;
- private javax.swing.JPanel jPanel1;
- private javax.swing.JPanel jPanel2;
- private javax.swing.JPanel jPanel3;
- private javax.swing.JScrollPane jScrollPane1;
- private javax.swing.JLabel lengthLabel;
- private javax.swing.JLabel locationLabel;
- private javax.swing.JLabel originalLabel;
- private javax.swing.JLabel samplerateLabel;
- private javax.swing.JLabel sizeLabel;
- private javax.swing.JTextArea textField;
- private javax.swing.JLabel vbrLabel;
- private javax.swing.JLabel versionLabel;
- // End of variables declaration//GEN-END:variables
-}
diff --git a/java/src/javazoom/jlgui/player/amp/tag/ui/OggVorbisDialog.java b/java/src/javazoom/jlgui/player/amp/tag/ui/OggVorbisDialog.java
deleted file mode 100644
index 16a84e6..0000000
--- a/java/src/javazoom/jlgui/player/amp/tag/ui/OggVorbisDialog.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * OggVorbisDialog.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.tag.ui;
-
-import java.text.DecimalFormat;
-import javax.swing.JFrame;
-import javazoom.jlgui.player.amp.tag.OggVorbisInfo;
-
-/**
- * OggVorbisDialog class implements a DialogBox to diplay OggVorbis info.
- */
-public class OggVorbisDialog extends TagInfoDialog
-{
- private OggVorbisInfo _vorbisinfo = null;
-
- /**
- * Creates new form MpegDialog
- */
- public OggVorbisDialog(JFrame parent, String title, OggVorbisInfo mi)
- {
- super(parent, title);
- initComponents();
- _vorbisinfo = mi;
- int size = _vorbisinfo.getLocation().length();
- locationLabel.setText(size > 50 ? ("..." + _vorbisinfo.getLocation().substring(size - 50)) : _vorbisinfo.getLocation());
- if ((_vorbisinfo.getTitle() != null) && ((!_vorbisinfo.getTitle().equals("")))) textField.append("Title=" + _vorbisinfo.getTitle() + "\n");
- if ((_vorbisinfo.getArtist() != null) && ((!_vorbisinfo.getArtist().equals("")))) textField.append("Artist=" + _vorbisinfo.getArtist() + "\n");
- if ((_vorbisinfo.getAlbum() != null) && ((!_vorbisinfo.getAlbum().equals("")))) textField.append("Album=" + _vorbisinfo.getAlbum() + "\n");
- if (_vorbisinfo.getTrack() > 0) textField.append("Track=" + _vorbisinfo.getTrack() + "\n");
- if ((_vorbisinfo.getYear() != null) && ((!_vorbisinfo.getYear().equals("")))) textField.append("Year=" + _vorbisinfo.getYear() + "\n");
- if ((_vorbisinfo.getGenre() != null) && ((!_vorbisinfo.getGenre().equals("")))) textField.append("Genre=" + _vorbisinfo.getGenre() + "\n");
- java.util.List comments = _vorbisinfo.getComment();
- for (int i = 0; i < comments.size(); i++)
- textField.append(comments.get(i) + "\n");
- int secondsAmount = Math.round(_vorbisinfo.getPlayTime());
- if (secondsAmount < 0) secondsAmount = 0;
- int minutes = secondsAmount / 60;
- int seconds = secondsAmount - (minutes * 60);
- lengthLabel.setText("Length : " + minutes + ":" + seconds);
- bitrateLabel.setText("Average bitrate : " + _vorbisinfo.getAverageBitrate() / 1000 + " kbps");
- DecimalFormat df = new DecimalFormat("#,###,###");
- sizeLabel.setText("File size : " + df.format(_vorbisinfo.getSize()) + " bytes");
- nominalbitrateLabel.setText("Nominal bitrate : " + (_vorbisinfo.getBitRate() / 1000) + " kbps");
- maxbitrateLabel.setText("Max bitrate : " + _vorbisinfo.getMaxBitrate() / 1000 + " kbps");
- minbitrateLabel.setText("Min bitrate : " + _vorbisinfo.getMinBitrate() / 1000 + " kbps");
- channelsLabel.setText("Channel : " + _vorbisinfo.getChannels());
- samplerateLabel.setText("Sampling rate : " + _vorbisinfo.getSamplingRate() + " Hz");
- serialnumberLabel.setText("Serial number : " + _vorbisinfo.getSerial());
- versionLabel.setText("Version : " + _vorbisinfo.getVersion());
- vendorLabel.setText("Vendor : " + _vorbisinfo.getVendor());
- buttonsPanel.add(_close);
- pack();
- }
-
- /**
- * Returns VorbisInfo.
- */
- public OggVorbisInfo getOggVorbisInfo()
- {
- return _vorbisinfo;
- }
-
- /**
- * This method is called from within the constructor to
- * initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is
- * always regenerated by the Form Editor.
- */
- // //GEN-BEGIN:initComponents
- private void initComponents()
- {
- java.awt.GridBagConstraints gridBagConstraints;
- jPanel3 = new javax.swing.JPanel();
- jPanel1 = new javax.swing.JPanel();
- jLabel1 = new javax.swing.JLabel();
- locationLabel = new javax.swing.JLabel();
- jLabel2 = new javax.swing.JLabel();
- jLabel3 = new javax.swing.JLabel();
- jScrollPane1 = new javax.swing.JScrollPane();
- textField = new javax.swing.JTextArea();
- jPanel2 = new javax.swing.JPanel();
- lengthLabel = new javax.swing.JLabel();
- bitrateLabel = new javax.swing.JLabel();
- sizeLabel = new javax.swing.JLabel();
- nominalbitrateLabel = new javax.swing.JLabel();
- maxbitrateLabel = new javax.swing.JLabel();
- minbitrateLabel = new javax.swing.JLabel();
- channelsLabel = new javax.swing.JLabel();
- samplerateLabel = new javax.swing.JLabel();
- serialnumberLabel = new javax.swing.JLabel();
- versionLabel = new javax.swing.JLabel();
- vendorLabel = new javax.swing.JLabel();
- buttonsPanel = new javax.swing.JPanel();
- getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.Y_AXIS));
- setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
- setResizable(false);
- jPanel3.setLayout(new java.awt.GridBagLayout());
- jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
- jLabel1.setText("File/URL :");
- jPanel1.add(jLabel1);
- jPanel1.add(locationLabel);
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridwidth = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- jPanel3.add(jPanel1, gridBagConstraints);
- jLabel2.setText("Standard Tags");
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- jPanel3.add(jLabel2, gridBagConstraints);
- jLabel3.setText("File/Stream info");
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 1;
- gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- jPanel3.add(jLabel3, gridBagConstraints);
- textField.setColumns(20);
- textField.setRows(10);
- jScrollPane1.setViewportView(textField);
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- jPanel3.add(jScrollPane1, gridBagConstraints);
- jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2, javax.swing.BoxLayout.Y_AXIS));
- jPanel2.add(lengthLabel);
- jPanel2.add(bitrateLabel);
- jPanel2.add(sizeLabel);
- jPanel2.add(nominalbitrateLabel);
- jPanel2.add(maxbitrateLabel);
- jPanel2.add(minbitrateLabel);
- jPanel2.add(channelsLabel);
- jPanel2.add(samplerateLabel);
- jPanel2.add(serialnumberLabel);
- jPanel2.add(versionLabel);
- jPanel2.add(vendorLabel);
- gridBagConstraints = new java.awt.GridBagConstraints();
- gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 2;
- gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
- gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
- jPanel3.add(jPanel2, gridBagConstraints);
- getContentPane().add(jPanel3);
- getContentPane().add(buttonsPanel);
- //pack();
- }
- // //GEN-END:initComponents
- // Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JLabel bitrateLabel;
- private javax.swing.JPanel buttonsPanel;
- private javax.swing.JLabel channelsLabel;
- private javax.swing.JLabel jLabel1;
- private javax.swing.JLabel jLabel2;
- private javax.swing.JLabel jLabel3;
- private javax.swing.JPanel jPanel1;
- private javax.swing.JPanel jPanel2;
- private javax.swing.JPanel jPanel3;
- private javax.swing.JScrollPane jScrollPane1;
- private javax.swing.JLabel lengthLabel;
- private javax.swing.JLabel locationLabel;
- private javax.swing.JLabel maxbitrateLabel;
- private javax.swing.JLabel minbitrateLabel;
- private javax.swing.JLabel nominalbitrateLabel;
- private javax.swing.JLabel samplerateLabel;
- private javax.swing.JLabel serialnumberLabel;
- private javax.swing.JLabel sizeLabel;
- private javax.swing.JTextArea textField;
- private javax.swing.JLabel vendorLabel;
- private javax.swing.JLabel versionLabel;
- // End of variables declaration//GEN-END:variables
-}
diff --git a/java/src/javazoom/jlgui/player/amp/tag/ui/TagInfoDialog.java b/java/src/javazoom/jlgui/player/amp/tag/ui/TagInfoDialog.java
deleted file mode 100644
index bd12b12..0000000
--- a/java/src/javazoom/jlgui/player/amp/tag/ui/TagInfoDialog.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * TagInfoDialog.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.tag.ui;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import javax.swing.JButton;
-import javax.swing.JDialog;
-import javax.swing.JFrame;
-
-/**
- * This class define a Dialog for TagiInfo to display.
- */
-public class TagInfoDialog extends JDialog implements ActionListener
-{
- protected JButton _close = null;
-
- /**
- * Constructor.
- * @param parent
- * @param title
- */
- public TagInfoDialog(JFrame parent, String title)
- {
- super(parent, title, true);
- _close = new JButton("Close");
- _close.addActionListener(this);
- }
-
- /* (non-Javadoc)
- * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
- */
- public void actionPerformed(ActionEvent e)
- {
- if (e.getSource() == _close)
- {
- this.dispose();
- }
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/tag/ui/TagSearch.java b/java/src/javazoom/jlgui/player/amp/tag/ui/TagSearch.java
deleted file mode 100644
index 3faf9d6..0000000
--- a/java/src/javazoom/jlgui/player/amp/tag/ui/TagSearch.java
+++ /dev/null
@@ -1,434 +0,0 @@
-/*
- * TagSearch.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.tag.ui;
-
-import java.awt.BorderLayout;
-import java.awt.GridLayout;
-import java.awt.event.KeyEvent;
-import java.awt.event.KeyListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.util.ResourceBundle;
-import java.util.Vector;
-import javax.swing.ButtonGroup;
-import javax.swing.DefaultListModel;
-import javax.swing.JFrame;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JRadioButton;
-import javax.swing.JScrollBar;
-import javax.swing.JScrollPane;
-import javax.swing.JTextField;
-import javax.swing.ListSelectionModel;
-import javax.swing.WindowConstants;
-import javax.swing.border.EmptyBorder;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import javazoom.jlgui.player.amp.PlayerUI;
-import javazoom.jlgui.player.amp.playlist.Playlist;
-import javazoom.jlgui.player.amp.playlist.PlaylistItem;
-import javazoom.jlgui.player.amp.tag.TagInfo;
-
-/**
- * This class allows to search and play for a particular track in the current playlist.
- */
-public class TagSearch extends JFrame
-{
- private static String sep = System.getProperty("file.separator");
- private JTextField searchField;
- private JList list;
- private DefaultListModel m;
- private PlayerUI player;
- private Vector _playlist, restrictedPlaylist;
- private String lastSearch = null;
- private JScrollPane scroll;
- private ResourceBundle bundle;
- private JRadioButton all, artist, album, title;
-
- public TagSearch(PlayerUI ui)
- {
- super();
- player = ui;
- _playlist = null;
- restrictedPlaylist = null;
- bundle = ResourceBundle.getBundle("javazoom/jlgui/player/amp/tag/ui/tag");
- initComponents();
- }
-
- public void display()
- {
- if (list.getModel().getSize() != 0)
- {
- setVisible(true);
- }
- else
- {
- JOptionPane.showMessageDialog(player.getParent(), bundle.getString("emptyPlaylistMsg"), bundle.getString("emptyPlaylistTitle"), JOptionPane.OK_OPTION);
- }
- }
-
- /**
- * Initialises the User Interface.
- */
- private void initComponents()
- {
- setLayout(new GridLayout(1, 1));
- setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
- setTitle(bundle.getString("title"));
- this.setLocation(player.getX() + player.getWidth(), player.getY());
- JPanel main = new JPanel(new BorderLayout(0, 1));
- main.setBorder(new EmptyBorder(10, 10, 10, 10));
- main.setMinimumSize(new java.awt.Dimension(0, 0));
- main.setPreferredSize(new java.awt.Dimension(300, 400));
- JPanel searchPane = new JPanel(new GridLayout(4, 1, 10, 2));
- JLabel searchLabel = new JLabel(bundle.getString("searchLabel"));
- searchField = new JTextField();
- searchField.addKeyListener(new KeyboardListener());
- searchPane.add(searchLabel);
- searchPane.add(searchField);
- all = new JRadioButton(bundle.getString("radioAll"), true);
- artist = new JRadioButton(bundle.getString("radioArtist"), false);
- album = new JRadioButton(bundle.getString("radioAlbum"), false);
- title = new JRadioButton(bundle.getString("radioTitle"), false);
- all.addChangeListener(new RadioListener());
- ButtonGroup filters = new ButtonGroup();
- filters.add(all);
- filters.add(artist);
- filters.add(album);
- filters.add(title);
- JPanel topButtons = new JPanel(new GridLayout(1, 2));
- JPanel bottomButtons = new JPanel(new GridLayout(1, 2));
- topButtons.add(all);
- topButtons.add(artist);
- bottomButtons.add(album);
- bottomButtons.add(title);
- searchPane.add(topButtons);
- searchPane.add(bottomButtons);
- list = new JList();
- list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
- initList();
- list.addMouseListener(new ClickListener());
- list.addKeyListener(new KeyboardListener());
- scroll = new JScrollPane(list);
- main.add(searchPane, BorderLayout.NORTH);
- main.add(scroll, BorderLayout.CENTER);
- add(main);
- pack();
- }
-
- /**
- * Initialises the list so that it displays the details of all songs in the playlist.
- */
- private void initList()
- {
- Playlist playlist = player.getPlaylist();
- int c = player.getPlaylist().getPlaylistSize();
- _playlist = new Vector();
- for (int i = 0; i < c; i++)
- {
- _playlist.addElement(playlist.getItemAt(i));
- }
- restrictedPlaylist = _playlist;
- m = new DefaultListModel();
- for (int i = 0; i < _playlist.size(); i++)
- {
- PlaylistItem plItem = (PlaylistItem) _playlist.get(i);
- if (plItem.isFile()) m.addElement(getDisplayString(plItem));
- }
- list.setModel(m);
- }
-
- public String getDisplayString(PlaylistItem pi)
- {
- TagInfo song = pi.getTagInfo();
- String element;
- String location = pi.getLocation();
- location = location.substring(location.lastIndexOf(sep) + 1, location.lastIndexOf("."));
- if (song == null)
- {
- element = location;
- }
- else
- {
- if (song.getArtist() == null || song.getArtist().equals(""))
- {
- element = location;
- }
- else
- {
- element = song.getArtist().trim();
- if (song.getTitle() == null || song.getTitle().equals(""))
- {
- element += " - " + location;
- }
- else
- {
- element += " - " + song.getTitle().trim();
- }
- }
- }
- return element;
- }
-
- /**
- * Searches the playlist for a song containing the words in the given search string.
- * It searches on the title, artist, album and filename of each song in the playlist.
- *
- * @param searchString The string to search for in all songs in the playlist
- **/
- private void searchList(String searchString)
- {
- String[] s = searchString.split(" ");
- String lastS = "";
- if (s.length > 0) lastS = s[s.length - 1];
- if (lastS.equals(""))
- {
- list.setModel(m);
- restrictedPlaylist = _playlist;
- }
- else
- {
- DefaultListModel newModel = new DefaultListModel();
- if (lastSearch != null)
- {
- if (searchString.length() <= 1 || !searchString.substring(searchString.length() - 2).equals(lastSearch))
- {
- list.setModel(m);
- restrictedPlaylist = _playlist;
- }
- }
- Vector pI = restrictedPlaylist;
- restrictedPlaylist = new Vector();
- for (int a = 0; a < s.length; a++)
- {
- String currentS = s[a];
- int size = list.getModel().getSize();
- boolean[] remove = new boolean[size];
- for (int i = 0; i < size; i++)
- {
- final int TITLE_SEARCH = 0;
- final int ARTIST_SEARCH = 1;
- final int ALBUM_SEARCH = 2;
- final int FILENAME_SEARCH = 3;
- TagInfo pli = ((PlaylistItem) pI.get(i)).getTagInfo();
- remove[i] = false;
- boolean found = false;
- int searchType;
- if (artist.isSelected())
- {
- searchType = ARTIST_SEARCH;
- }
- else if (album.isSelected())
- {
- searchType = ALBUM_SEARCH;
- }
- else if (title.isSelected())
- {
- searchType = TITLE_SEARCH;
- }
- else
- {
- searchType = -1;
- }
- for (int j = 0; j <= FILENAME_SEARCH; j++)
- {
- String listString = "";
- if (pli == null)
- {
- if (searchType != -1)
- {
- break;
- }
- j = FILENAME_SEARCH;
- }
- else if (searchType != -1)
- {
- j = searchType;
- }
- switch (j)
- {
- case (TITLE_SEARCH):
- if (pli.getTitle() != null) listString = pli.getTitle().toLowerCase();
- break;
- case (ARTIST_SEARCH):
- if (pli.getArtist() != null) listString = pli.getArtist().toLowerCase();
- break;
- case (ALBUM_SEARCH):
- if (pli.getAlbum() != null) listString = pli.getAlbum().toLowerCase();
- break;
- case (FILENAME_SEARCH):
- String location = ((PlaylistItem) pI.get(i)).getLocation().toLowerCase();
- listString = location.substring(location.lastIndexOf(sep) + 1, location.lastIndexOf("."));
- break;
- }
- currentS = currentS.toLowerCase();
- if (found = search(currentS, listString))
- {
- break;
- }
- if (searchType != -1)
- {
- break;
- }
- }
- //if(found)foundAt[a] = i;
- if (found && a == 0)
- {
- //todo new
- newModel.addElement(getDisplayString((PlaylistItem) pI.get(i)));
- restrictedPlaylist.add(pI.get(i));
- }
- if (!found && a != 0)
- {
- remove[i] = true;
- }
- }
- //remove all unmatching items
- for (int x = size - 1; x >= 0; x--)
- {
- if (remove[x])
- {
- newModel.remove(x);
- restrictedPlaylist.remove(x);
- }
- }
- pI = restrictedPlaylist;
- list.setModel(newModel);
- }
- list.setModel(newModel);
- lastSearch = searchField.getText();
- }
- if (list.getModel().getSize() > 0) list.setSelectedIndex(0);
- }
-
- /**
- * Searches to see if a particular string exists within another string
- *
- * @param pattern The string to search for
- * @param text The string in which to search for the pattern string
- * @return True if the pattern string exists in the text string
- */
- private boolean search(String pattern, String text)
- {
- int pStart = 0;
- int tStart = 0;
- char[] pChar = pattern.toCharArray();
- char[] tChar = text.toCharArray();
- while (pStart < pChar.length && tStart < tChar.length)
- {
- if (pChar[pStart] == tChar[tStart])
- {
- pStart++;
- tStart++;
- }
- else
- {
- pStart = 0;
- if (pChar[pStart] != tChar[tStart])
- {
- tStart++;
- }
- }
- }
- return pStart == pChar.length;
- }
-
- /**
- * Calls the relavent methods in the player class to play a song.
- */
- private void playSong()
- {
- Playlist playlist = player.getPlaylist();
- player.pressStop();
- player.setCurrentSong((PlaylistItem) restrictedPlaylist.get(list.getSelectedIndex()));
- playlist.setCursor(playlist.getIndex((PlaylistItem) restrictedPlaylist.get(list.getSelectedIndex())));
- player.pressStart();
- dispose();
- }
- /**
- * Class to handle keyboard presses.
- */
- class KeyboardListener implements KeyListener
- {
- public void keyReleased(KeyEvent e)
- {
- if (e.getSource().equals(searchField))
- {
- if (e.getKeyCode() != KeyEvent.VK_DOWN && e.getKeyCode() != KeyEvent.VK_UP)
- {
- searchList(searchField.getText()); // Search for current search string
- }
- }
- }
-
- public void keyTyped(KeyEvent e)
- {
- if (list.getSelectedIndex() != -1)
- {
- if (e.getKeyChar() == KeyEvent.VK_ENTER)
- {
- playSong();
- }
- }
- }
-
- public void keyPressed(KeyEvent e)
- {
- int index = list.getSelectedIndex();
- if (e.getKeyCode() == KeyEvent.VK_DOWN && index < list.getModel().getSize() - 1)
- {
- //list.setSelectedIndex(index+1);
- JScrollBar vBar = scroll.getVerticalScrollBar();
- vBar.setValue(vBar.getValue() + vBar.getUnitIncrement() * 5);
- }
- else if (e.getKeyCode() == KeyEvent.VK_UP && index >= 0)
- {
- JScrollBar vBar = scroll.getVerticalScrollBar();
- vBar.setValue(vBar.getValue() - vBar.getUnitIncrement() * 5);
- //list.setSelectedIndex(index-1);
- }
- }
- }
- /**
- * Class to play a song if one is double-clicked on on the search list.
- */
- class ClickListener extends MouseAdapter
- {
- public void mouseClicked(MouseEvent e)
- {
- if (e.getClickCount() == 2 && list.getSelectedIndex() != -1)
- {
- playSong();
- }
- }
- }
- class RadioListener implements ChangeListener
- {
- public void stateChanged(ChangeEvent e)
- {
- searchList(searchField.getText());
- }
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/tag/ui/tag.properties b/java/src/javazoom/jlgui/player/amp/tag/ui/tag.properties
deleted file mode 100644
index 9d9c18f..0000000
--- a/java/src/javazoom/jlgui/player/amp/tag/ui/tag.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-emptyPlaylistMsg = No files in playlist
-emptyPlaylistTitle = No files in playlist
-title = Jump to song...
-searchLabel = Search for songs containing...
-radioAll = Anywhere
-radioArtist = Artist
-radioAlbum = Album
-radioTitle = Song Title
diff --git a/java/src/javazoom/jlgui/player/amp/util/BMPLoader.java b/java/src/javazoom/jlgui/player/amp/util/BMPLoader.java
deleted file mode 100644
index a5e46c7..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/BMPLoader.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * BMPLoader.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util;
-
-import java.awt.Image;
-import java.awt.Toolkit;
-import java.awt.image.ColorModel;
-import java.awt.image.IndexColorModel;
-import java.awt.image.MemoryImageSource;
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * A decoder for Windows bitmap (.BMP) files.
- * Compression not supported.
- */
-public class BMPLoader
-{
- private InputStream is;
- private int curPos = 0;
- private int bitmapOffset; // starting position of image data
- private int width; // image width in pixels
- private int height; // image height in pixels
- private short bitsPerPixel; // 1, 4, 8, or 24 (no color map)
- private int compression; // 0 (none), 1 (8-bit RLE), or 2 (4-bit RLE)
- private int actualSizeOfBitmap;
- private int scanLineSize;
- private int actualColorsUsed;
- private byte r[], g[], b[]; // color palette
- private int noOfEntries;
- private byte[] byteData; // Unpacked data
- private int[] intData; // Unpacked data
-
- public BMPLoader()
- {
- }
-
- public Image getBMPImage(InputStream stream) throws Exception
- {
- read(stream);
- return Toolkit.getDefaultToolkit().createImage(getImageSource());
- }
-
- protected int readInt() throws IOException
- {
- int b1 = is.read();
- int b2 = is.read();
- int b3 = is.read();
- int b4 = is.read();
- curPos += 4;
- return ((b4 << 24) + (b3 << 16) + (b2 << 8) + (b1 << 0));
- }
-
- protected short readShort() throws IOException
- {
- int b1 = is.read();
- int b2 = is.read();
- curPos += 4;
- return (short) ((b2 << 8) + b1);
- }
-
- protected void getFileHeader() throws IOException, Exception
- {
- // Actual contents (14 bytes):
- short fileType = 0x4d42;// always "BM"
- int fileSize; // size of file in bytes
- short reserved1 = 0; // always 0
- short reserved2 = 0; // always 0
- fileType = readShort();
- if (fileType != 0x4d42) throw new Exception("Not a BMP file"); // wrong file type
- fileSize = readInt();
- reserved1 = readShort();
- reserved2 = readShort();
- bitmapOffset = readInt();
- }
-
- protected void getBitmapHeader() throws IOException
- {
- // Actual contents (40 bytes):
- int size; // size of this header in bytes
- short planes; // no. of color planes: always 1
- int sizeOfBitmap; // size of bitmap in bytes (may be 0: if so, calculate)
- int horzResolution; // horizontal resolution, pixels/meter (may be 0)
- int vertResolution; // vertical resolution, pixels/meter (may be 0)
- int colorsUsed; // no. of colors in palette (if 0, calculate)
- int colorsImportant; // no. of important colors (appear first in palette) (0 means all are important)
- boolean topDown;
- int noOfPixels;
- size = readInt();
- width = readInt();
- height = readInt();
- planes = readShort();
- bitsPerPixel = readShort();
- compression = readInt();
- sizeOfBitmap = readInt();
- horzResolution = readInt();
- vertResolution = readInt();
- colorsUsed = readInt();
- colorsImportant = readInt();
- topDown = (height < 0);
- noOfPixels = width * height;
- // Scan line is padded with zeroes to be a multiple of four bytes
- scanLineSize = ((width * bitsPerPixel + 31) / 32) * 4;
- if (sizeOfBitmap != 0) actualSizeOfBitmap = sizeOfBitmap;
- else
- // a value of 0 doesn't mean zero - it means we have to calculate it
- actualSizeOfBitmap = scanLineSize * height;
- if (colorsUsed != 0) actualColorsUsed = colorsUsed;
- else
- // a value of 0 means we determine this based on the bits per pixel
- if (bitsPerPixel < 16) actualColorsUsed = 1 << bitsPerPixel;
- else actualColorsUsed = 0; // no palette
- }
-
- protected void getPalette() throws IOException
- {
- noOfEntries = actualColorsUsed;
- //IJ.write("noOfEntries: " + noOfEntries);
- if (noOfEntries > 0)
- {
- r = new byte[noOfEntries];
- g = new byte[noOfEntries];
- b = new byte[noOfEntries];
- int reserved;
- for (int i = 0; i < noOfEntries; i++)
- {
- b[i] = (byte) is.read();
- g[i] = (byte) is.read();
- r[i] = (byte) is.read();
- reserved = is.read();
- curPos += 4;
- }
- }
- }
-
- protected void unpack(byte[] rawData, int rawOffset, int[] intData, int intOffset, int w)
- {
- int j = intOffset;
- int k = rawOffset;
- int mask = 0xff;
- for (int i = 0; i < w; i++)
- {
- int b0 = (((int) (rawData[k++])) & mask);
- int b1 = (((int) (rawData[k++])) & mask) << 8;
- int b2 = (((int) (rawData[k++])) & mask) << 16;
- intData[j] = 0xff000000 | b0 | b1 | b2;
- j++;
- }
- }
-
- protected void unpack(byte[] rawData, int rawOffset, int bpp, byte[] byteData, int byteOffset, int w) throws Exception
- {
- int j = byteOffset;
- int k = rawOffset;
- byte mask;
- int pixPerByte;
- switch (bpp)
- {
- case 1:
- mask = (byte) 0x01;
- pixPerByte = 8;
- break;
- case 4:
- mask = (byte) 0x0f;
- pixPerByte = 2;
- break;
- case 8:
- mask = (byte) 0xff;
- pixPerByte = 1;
- break;
- default:
- throw new Exception("Unsupported bits-per-pixel value");
- }
- for (int i = 0;;)
- {
- int shift = 8 - bpp;
- for (int ii = 0; ii < pixPerByte; ii++)
- {
- byte br = rawData[k];
- br >>= shift;
- byteData[j] = (byte) (br & mask);
- //System.out.println("Setting byteData[" + j + "]=" + Test.byteToHex(byteData[j]));
- j++;
- i++;
- if (i == w) return;
- shift -= bpp;
- }
- k++;
- }
- }
-
- protected int readScanLine(byte[] b, int off, int len) throws IOException
- {
- int bytesRead = 0;
- int l = len;
- int r = 0;
- while (len > 0)
- {
- bytesRead = is.read(b, off, len);
- if (bytesRead == -1) return r == 0 ? -1 : r;
- if (bytesRead == len) return l;
- len -= bytesRead;
- off += bytesRead;
- r += bytesRead;
- }
- return l;
- }
-
- protected void getPixelData() throws IOException, Exception
- {
- byte[] rawData; // the raw unpacked data
- // Skip to the start of the bitmap data (if we are not already there)
- long skip = bitmapOffset - curPos;
- if (skip > 0)
- {
- is.skip(skip);
- curPos += skip;
- }
- int len = scanLineSize;
- if (bitsPerPixel > 8) intData = new int[width * height];
- else byteData = new byte[width * height];
- rawData = new byte[actualSizeOfBitmap];
- int rawOffset = 0;
- int offset = (height - 1) * width;
- for (int i = height - 1; i >= 0; i--)
- {
- int n = readScanLine(rawData, rawOffset, len);
- if (n < len) throw new Exception("Scan line ended prematurely after " + n + " bytes");
- if (bitsPerPixel > 8)
- {
- // Unpack and create one int per pixel
- unpack(rawData, rawOffset, intData, offset, width);
- }
- else
- {
- // Unpack and create one byte per pixel
- unpack(rawData, rawOffset, bitsPerPixel, byteData, offset, width);
- }
- rawOffset += len;
- offset -= width;
- }
- }
-
- public void read(InputStream is) throws IOException, Exception
- {
- this.is = is;
- getFileHeader();
- getBitmapHeader();
- if (compression != 0) throw new Exception("BMP Compression not supported");
- getPalette();
- getPixelData();
- }
-
- public MemoryImageSource getImageSource()
- {
- ColorModel cm;
- MemoryImageSource mis;
- if (noOfEntries > 0)
- {
- // There is a color palette; create an IndexColorModel
- cm = new IndexColorModel(bitsPerPixel, noOfEntries, r, g, b);
- }
- else
- {
- // There is no palette; use the default RGB color model
- cm = ColorModel.getRGBdefault();
- }
- // Create MemoryImageSource
- if (bitsPerPixel > 8)
- {
- // use one int per pixel
- mis = new MemoryImageSource(width, height, cm, intData, 0, width);
- }
- else
- {
- // use one byte per pixel
- mis = new MemoryImageSource(width, height, cm, byteData, 0, width);
- }
- return mis; // this can be used by JComponent.createImage()
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/util/Config.java b/java/src/javazoom/jlgui/player/amp/util/Config.java
deleted file mode 100644
index e8f0d35..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/Config.java
+++ /dev/null
@@ -1,711 +0,0 @@
-/*
- * Config.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util;
-
-import java.io.File;
-import java.util.StringTokenizer;
-import javax.swing.ImageIcon;
-import javax.swing.JFrame;
-import javazoom.jlgui.player.amp.util.ini.Configuration;
-
-/**
- * This class provides all parameters for jlGui coming from a file.
- */
-public class Config
-{
- public static String[] protocols = { "http:", "file:", "ftp:", "https:", "ftps:", "jar:" };
- public static String TAGINFO_POLICY_FILE = "file";
- public static String TAGINFO_POLICY_ALL = "all";
- public static String TAGINFO_POLICY_NONE = "none";
- private static String CONFIG_FILE_NAME = "jlgui.ini";
- private Configuration _config = null;
- // configuration keys
- private static final String LAST_URL = "last_url",
- LAST_DIR = "last_dir",
- ORIGINE_X = "origine_x",
- ORIGINE_Y = "origine_y",
- LAST_SKIN = "last_skin",
- LAST_SKIN_DIR = "last_skin_dir",
- EXTENSIONS = "allowed_extensions",
- PLAYLIST_IMPL = "playlist_impl",
- TAGINFO_MPEG_IMPL = "taginfo_mpeg_impl",
- TAGINFO_OGGVORBIS_IMPL = "taginfo_oggvorbis_impl",
- TAGINFO_APE_IMPL = "taginfo_ape_impl",
- TAGINFO_FLAC_IMPL = "taginfo_flac_impl",
- LAST_PLAYLIST = "last_playlist",
- PROXY_SERVER = "proxy_server",
- PROXY_PORT = "proxy_port",
- PROXY_LOGIN = "proxy_login",
- PROXY_PASSWORD = "proxy_password",
- PLAYLIST_ENABLED = "playlist_enabled",
- SHUFFLE_ENABLED = "shuffle_enabled",
- REPEAT_ENABLED = "repeat_enabled",
- EQUALIZER_ENABLED = "equalizer_enabled",
- EQUALIZER_ON = "equalizer_on",
- EQUALIZER_AUTO = "equalizer_auto",
- LAST_EQUALIZER = "last_equalizer",
- SCREEN_LIMIT = "screen_limit",
- TAGINFO_POLICY = "taginfo_policy",
- VOLUME_VALUE = "volume_value",
- AUDIO_DEVICE = "audio_device",
- VISUAL_MODE = "visual_mode";
-
- private static Config _instance = null;
- private String _audioDevice = "";
- private String _visualMode = "";
- private String _extensions = "m3u,pls,wsz,snd,aifc,aif,wav,au,mp1,mp2,mp3,ogg,spx,flac,ape,mac";
- private String _lastUrl = "";
- private String _lastDir = "";
- private String _lastSkinDir = "";
- private String _lastEqualizer = "";
- private String _defaultSkin = "";
- private String _playlist = "javazoom.jlgui.player.amp.playlist.BasePlaylist";
- private String _taginfoMpeg = "javazoom.jlgui.player.amp.tag.MpegInfo";
- private String _taginfoOggVorbis = "javazoom.jlgui.player.amp.tag.OggVorbisInfo";
- private String _taginfoAPE = "javazoom.jlgui.player.amp.tag.APEInfo";
- private String _taginfoFlac = "javazoom.jlgui.player.amp.tag.FlacInfo";
- private String _playlistFilename = "";
- private int _x = 0;
- private int _y = 0;
- private String _proxyServer = "";
- private String _proxyLogin = "";
- private String _proxyPassword = "";
- private int _proxyPort = -1;
- private int _volume = -1;
- private boolean _playlistEnabled = false;
- private boolean _shuffleEnabled = false;
- private boolean _repeatEnabled = false;
- private boolean _equalizerEnabled = false;
- private boolean _equalizerOn = false;
- private boolean _equalizerAuto = false;
- private boolean _screenLimit = false;
- private String _taginfoPolicy = TAGINFO_POLICY_FILE;
-
- private JFrame topParent = null;
- private ImageIcon iconParent = null;
-
- private Config()
- {
- }
-
- /**
- * Returns Config instance.
- */
- public synchronized static Config getInstance()
- {
- if (_instance == null)
- {
- _instance = new Config();
- }
- return _instance;
- }
-
- public void setTopParent(JFrame frame)
- {
- topParent = frame;
- }
-
- public JFrame getTopParent()
- {
- if (topParent == null)
- {
- topParent = new JFrame();
- }
- return topParent;
- }
-
- public void setIconParent(ImageIcon icon)
- {
- iconParent = icon;
- }
-
- public ImageIcon getIconParent()
- {
- return iconParent;
- }
-
- /**
- * Returns JavaSound audio device.
- * @return String
- */
- public String getAudioDevice()
- {
- return _audioDevice;
- }
-
- /**
- * Set JavaSound audio device.
- * @param dev String
- */
- public void setAudioDevice(String dev)
- {
- _audioDevice = dev;
- }
-
- /**
- * Return visual mode.
- * @return
- */
- public String getVisualMode()
- {
- return _visualMode;
- }
-
- /**
- * Set visual mode.
- * @param mode
- */
- public void setVisualMode(String mode)
- {
- _visualMode = mode;
- }
-
- /**
- * Returns playlist filename.
- */
- public String getPlaylistFilename()
- {
- return _playlistFilename;
- }
-
- /**
- * Sets playlist filename.
- */
- public void setPlaylistFilename(String pl)
- {
- _playlistFilename = pl;
- }
-
- /**
- * Returns last equalizer values.
- */
- public int[] getLastEqualizer()
- {
- int[] vals = null;
- if ((_lastEqualizer != null) && (!_lastEqualizer.equals("")))
- {
- vals = new int[11];
- int i = 0;
- StringTokenizer st = new StringTokenizer(_lastEqualizer, ",");
- while (st.hasMoreTokens())
- {
- String v = st.nextToken();
- vals[i++] = Integer.parseInt(v);
- }
- }
- return vals;
- }
-
- /**
- * Sets last equalizer values.
- */
- public void setLastEqualizer(int[] vals)
- {
- if (vals != null)
- {
- String dump = "";
- for (int i = 0; i < vals.length; i++)
- {
- dump = dump + vals[i] + ",";
- }
- _lastEqualizer = dump.substring(0, (dump.length() - 1));
- }
- }
-
- /**
- * Return screen limit flag.
- *
- * @return is screen limit flag
- */
- public boolean isScreenLimit()
- {
- return _screenLimit;
- }
-
- /**
- * Set screen limit flag.
- *
- * @param b
- */
- public void setScreenLimit(boolean b)
- {
- _screenLimit = b;
- }
-
- /**
- * Returns last URL.
- */
- public String getLastURL()
- {
- return _lastUrl;
- }
-
- /**
- * Sets last URL.
- */
- public void setLastURL(String url)
- {
- _lastUrl = url;
- }
-
- /**
- * Returns last Directory.
- */
- public String getLastDir()
- {
- if ((_lastDir != null) && (!_lastDir.endsWith(File.separator)))
- {
- _lastDir = _lastDir + File.separator;
- }
- return _lastDir;
- }
-
- /**
- * Sets last Directory.
- */
- public void setLastDir(String dir)
- {
- _lastDir = dir;
- if ((_lastDir != null) && (!_lastDir.endsWith(File.separator)))
- {
- _lastDir = _lastDir + File.separator;
- }
- }
-
- /**
- * Returns last skin directory.
- */
- public String getLastSkinDir()
- {
- if ((_lastSkinDir != null) && (!_lastSkinDir.endsWith(File.separator)))
- {
- _lastSkinDir = _lastSkinDir + File.separator;
- }
- return _lastSkinDir;
- }
-
- /**
- * Sets last skin directory.
- */
- public void setLastSkinDir(String dir)
- {
- _lastSkinDir = dir;
- if ((_lastSkinDir != null) && (!_lastSkinDir.endsWith(File.separator)))
- {
- _lastSkinDir = _lastSkinDir + File.separator;
- }
- }
-
- /**
- * Returns audio extensions.
- */
- public String getExtensions()
- {
- return _extensions;
- }
-
- /**
- * Returns proxy server.
- */
- public String getProxyServer()
- {
- return _proxyServer;
- }
-
- /**
- * Returns proxy port.
- */
- public int getProxyPort()
- {
- return _proxyPort;
- }
-
- /**
- * Returns volume value.
- */
- public int getVolume()
- {
- return _volume;
- }
-
- /**
- * Returns volume value.
- */
- public void setVolume(int vol)
- {
- _volume = vol;
- }
-
- /**
- * Returns X location.
- */
- public int getXLocation()
- {
- return _x;
- }
-
- /**
- * Returns Y location.
- */
- public int getYLocation()
- {
- return _y;
- }
-
- /**
- * Sets X,Y location.
- */
- public void setLocation(int x, int y)
- {
- _x = x;
- _y = y;
- }
-
- /**
- * Sets Proxy info.
- */
- public void setProxy(String url, int port, String login, String password)
- {
- _proxyServer = url;
- _proxyPort = port;
- _proxyLogin = login;
- _proxyPassword = password;
- }
-
- /**
- * Enables Proxy.
- */
- public boolean enableProxy()
- {
- if ((_proxyServer != null) && (!_proxyServer.equals("")))
- {
- System.getProperties().put("proxySet", "true");
- System.getProperties().put("proxyHost", _proxyServer);
- System.getProperties().put("proxyPort", "" + _proxyPort);
- return true;
- }
- else return false;
- }
-
- /**
- * Returns PlaylistUI state.
- */
- public boolean isPlaylistEnabled()
- {
- return _playlistEnabled;
- }
-
- /**
- * Sets PlaylistUI state.
- */
- public void setPlaylistEnabled(boolean ena)
- {
- _playlistEnabled = ena;
- }
-
- /**
- * Returns ShuffleUI state.
- */
- public boolean isShuffleEnabled()
- {
- return _shuffleEnabled;
- }
-
- /**
- * Sets ShuffleUI state.
- */
- public void setShuffleEnabled(boolean ena)
- {
- _shuffleEnabled = ena;
- }
-
- /**
- * Returns RepeatUI state.
- */
- public boolean isRepeatEnabled()
- {
- return _repeatEnabled;
- }
-
- /**
- * Sets RepeatUI state.
- */
- public void setRepeatEnabled(boolean ena)
- {
- _repeatEnabled = ena;
- }
-
- /**
- * Returns EqualizerUI state.
- */
- public boolean isEqualizerEnabled()
- {
- return _equalizerEnabled;
- }
-
- /**
- * Sets EqualizerUI state.
- */
- public void setEqualizerEnabled(boolean ena)
- {
- _equalizerEnabled = ena;
- }
-
- /**
- * Returns default skin.
- */
- public String getDefaultSkin()
- {
- return _defaultSkin;
- }
-
- /**
- * Sets default skin.
- */
- public void setDefaultSkin(String skin)
- {
- _defaultSkin = skin;
- }
-
- /**
- * Returns playlist classname implementation.
- */
- public String getPlaylistClassName()
- {
- return _playlist;
- }
-
- /**
- * Set playlist classname implementation.
- */
- public void setPlaylistClassName(String s)
- {
- _playlist = s;
- }
-
- /**
- * Returns Mpeg TagInfo classname implementation.
- */
- public String getMpegTagInfoClassName()
- {
- return _taginfoMpeg;
- }
-
- /**
- * Returns Ogg Vorbis TagInfo classname implementation.
- */
- public String getOggVorbisTagInfoClassName()
- {
- return _taginfoOggVorbis;
- }
-
- /**
- * Returns APE TagInfo classname implementation.
- */
- public String getAPETagInfoClassName()
- {
- return _taginfoAPE;
- }
-
- /**
- * Returns Ogg Vorbis TagInfo classname implementation.
- */
- public String getFlacTagInfoClassName()
- {
- return _taginfoFlac;
- }
-
- /**
- * Loads configuration for the specified file.
- */
- public void load(String configfile)
- {
- CONFIG_FILE_NAME = configfile;
- load();
- }
-
- /**
- * Loads configuration.
- */
- public void load()
- {
- _config = new Configuration(CONFIG_FILE_NAME);
- // Creates config entries if needed.
- if (_config.get(AUDIO_DEVICE) == null) _config.add(AUDIO_DEVICE, _audioDevice);
- if (_config.get(VISUAL_MODE) == null) _config.add(VISUAL_MODE, _visualMode);
- if (_config.get(LAST_URL) == null) _config.add(LAST_URL, _lastUrl);
- if (_config.get(LAST_EQUALIZER) == null) _config.add(LAST_EQUALIZER, _lastEqualizer);
- if (_config.get(LAST_DIR) == null) _config.add(LAST_DIR, _lastDir);
- if (_config.get(LAST_SKIN_DIR) == null) _config.add(LAST_SKIN_DIR, _lastSkinDir);
- if (_config.get(TAGINFO_POLICY) == null) _config.add(TAGINFO_POLICY, _taginfoPolicy);
- if (_config.getInt(ORIGINE_X) == -1) _config.add(ORIGINE_X, _x);
- if (_config.getInt(ORIGINE_Y) == -1) _config.add(ORIGINE_Y, _y);
- if (_config.get(LAST_SKIN) == null) _config.add(LAST_SKIN, _defaultSkin);
- if (_config.get(LAST_PLAYLIST) == null) _config.add(LAST_PLAYLIST, _playlistFilename);
- if (_config.get(PLAYLIST_IMPL) == null) _config.add(PLAYLIST_IMPL, _playlist);
- if (_config.get(TAGINFO_MPEG_IMPL) == null) _config.add(TAGINFO_MPEG_IMPL, _taginfoMpeg);
- if (_config.get(TAGINFO_OGGVORBIS_IMPL) == null) _config.add(TAGINFO_OGGVORBIS_IMPL, _taginfoOggVorbis);
- if (_config.get(TAGINFO_APE_IMPL) == null) _config.add(TAGINFO_APE_IMPL, _taginfoAPE);
- if (_config.get(TAGINFO_FLAC_IMPL) == null) _config.add(TAGINFO_FLAC_IMPL, _taginfoFlac);
- if (_config.get(EXTENSIONS) == null) _config.add(EXTENSIONS, _extensions);
- if (_config.get(PROXY_SERVER) == null) _config.add(PROXY_SERVER, _proxyServer);
- if (_config.getInt(PROXY_PORT) == -1) _config.add(PROXY_PORT, _proxyPort);
- if (_config.getInt(VOLUME_VALUE) == -1) _config.add(VOLUME_VALUE, _volume);
- if (_config.get(PROXY_LOGIN) == null) _config.add(PROXY_LOGIN, _proxyLogin);
- if (_config.get(PROXY_PASSWORD) == null) _config.add(PROXY_PASSWORD, _proxyPassword);
- if (!_config.getBoolean(PLAYLIST_ENABLED)) _config.add(PLAYLIST_ENABLED, _playlistEnabled);
- if (!_config.getBoolean(SHUFFLE_ENABLED)) _config.add(SHUFFLE_ENABLED, _shuffleEnabled);
- if (!_config.getBoolean(REPEAT_ENABLED)) _config.add(REPEAT_ENABLED, _repeatEnabled);
- if (!_config.getBoolean(EQUALIZER_ENABLED)) _config.add(EQUALIZER_ENABLED, _equalizerEnabled);
- if (!_config.getBoolean(EQUALIZER_ON)) _config.add(EQUALIZER_ON, _equalizerOn);
- if (!_config.getBoolean(EQUALIZER_AUTO)) _config.add(EQUALIZER_AUTO, _equalizerAuto);
- if (!_config.getBoolean(SCREEN_LIMIT)) _config.add(SCREEN_LIMIT, _screenLimit);
- // Reads config entries
- _audioDevice = _config.get(AUDIO_DEVICE, _audioDevice);
- _visualMode = _config.get(VISUAL_MODE, _visualMode);
- _lastUrl = _config.get(LAST_URL, _lastUrl);
- _lastEqualizer = _config.get(LAST_EQUALIZER, _lastEqualizer);
- _lastDir = _config.get(LAST_DIR, _lastDir);
- _lastSkinDir = _config.get(LAST_SKIN_DIR, _lastSkinDir);
- _x = _config.getInt(ORIGINE_X, _x);
- _y = _config.getInt(ORIGINE_Y, _y);
- _defaultSkin = _config.get(LAST_SKIN, _defaultSkin);
- _playlistFilename = _config.get(LAST_PLAYLIST, _playlistFilename);
- _taginfoPolicy = _config.get(TAGINFO_POLICY, _taginfoPolicy);
- _extensions = _config.get(EXTENSIONS, _extensions);
- _playlist = _config.get(PLAYLIST_IMPL, _playlist);
- _taginfoMpeg = _config.get(TAGINFO_MPEG_IMPL, _taginfoMpeg);
- _taginfoOggVorbis = _config.get(TAGINFO_OGGVORBIS_IMPL, _taginfoOggVorbis);
- _taginfoAPE = _config.get(TAGINFO_APE_IMPL, _taginfoAPE);
- _taginfoFlac = _config.get(TAGINFO_FLAC_IMPL, _taginfoFlac);
- _proxyServer = _config.get(PROXY_SERVER, _proxyServer);
- _proxyPort = _config.getInt(PROXY_PORT, _proxyPort);
- _volume = _config.getInt(VOLUME_VALUE, _volume);
- _proxyLogin = _config.get(PROXY_LOGIN, _proxyLogin);
- _proxyPassword = _config.get(PROXY_PASSWORD, _proxyPassword);
- _playlistEnabled = _config.getBoolean(PLAYLIST_ENABLED, _playlistEnabled);
- _shuffleEnabled = _config.getBoolean(SHUFFLE_ENABLED, _shuffleEnabled);
- _repeatEnabled = _config.getBoolean(REPEAT_ENABLED, _repeatEnabled);
- _equalizerEnabled = _config.getBoolean(EQUALIZER_ENABLED, _equalizerEnabled);
- _equalizerOn = _config.getBoolean(EQUALIZER_ON, _equalizerOn);
- _equalizerAuto = _config.getBoolean(EQUALIZER_AUTO, _equalizerAuto);
- _screenLimit = _config.getBoolean(SCREEN_LIMIT, _screenLimit);
- }
-
- /**
- * Saves configuration.
- */
- public void save()
- {
- if (_config != null)
- {
- _config.add(ORIGINE_X, _x);
- _config.add(ORIGINE_Y, _y);
- if (_lastDir != null) _config.add(LAST_DIR, _lastDir);
- if (_lastSkinDir != null) _config.add(LAST_SKIN_DIR, _lastSkinDir);
- if (_audioDevice != null) _config.add(AUDIO_DEVICE, _audioDevice);
- if (_visualMode != null) _config.add(VISUAL_MODE, _visualMode);
- if (_lastUrl != null) _config.add(LAST_URL, _lastUrl);
- if (_lastEqualizer != null) _config.add(LAST_EQUALIZER, _lastEqualizer);
- if (_playlistFilename != null) _config.add(LAST_PLAYLIST, _playlistFilename);
- if (_playlist != null) _config.add(PLAYLIST_IMPL, _playlist);
- if (_defaultSkin != null) _config.add(LAST_SKIN, _defaultSkin);
- if (_taginfoPolicy != null) _config.add(TAGINFO_POLICY, _taginfoPolicy);
- if (_volume != -1) _config.add(VOLUME_VALUE, _volume);
- _config.add(PLAYLIST_ENABLED, _playlistEnabled);
- _config.add(SHUFFLE_ENABLED, _shuffleEnabled);
- _config.add(REPEAT_ENABLED, _repeatEnabled);
- _config.add(EQUALIZER_ENABLED, _equalizerEnabled);
- _config.add(EQUALIZER_ON, _equalizerOn);
- _config.add(EQUALIZER_AUTO, _equalizerAuto);
- _config.add(SCREEN_LIMIT, _screenLimit);
- _config.save();
- }
- }
-
- /**
- * @return equalizer auto flag
- */
- public boolean isEqualizerAuto()
- {
- return _equalizerAuto;
- }
-
- /**
- * @return equalizer on flag
- */
- public boolean isEqualizerOn()
- {
- return _equalizerOn;
- }
-
- /**
- * @param b
- */
- public void setEqualizerAuto(boolean b)
- {
- _equalizerAuto = b;
- }
-
- /**
- * @param b
- */
- public void setEqualizerOn(boolean b)
- {
- _equalizerOn = b;
- }
-
- public static boolean startWithProtocol(String input)
- {
- boolean ret = false;
- if (input != null)
- {
- input = input.toLowerCase();
- for (int i = 0; i < protocols.length; i++)
- {
- if (input.startsWith(protocols[i]))
- {
- ret = true;
- break;
- }
- }
- }
- return ret;
- }
-
- /**
- * @return tag info policy
- */
- public String getTaginfoPolicy()
- {
- return _taginfoPolicy;
- }
-
- /**
- * @param string
- */
- public void setTaginfoPolicy(String string)
- {
- _taginfoPolicy = string;
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/util/FileNameFilter.java b/java/src/javazoom/jlgui/player/amp/util/FileNameFilter.java
deleted file mode 100644
index 4a0685a..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/FileNameFilter.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * FileNameFilter.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.StringTokenizer;
-
-/**
- * FileName filter that works for both javax.swing.filechooser and java.io.
- */
-public class FileNameFilter extends javax.swing.filechooser.FileFilter implements java.io.FileFilter
-{
- protected java.util.List extensions = new ArrayList();
- protected String default_extension = null;
- protected String description;
- protected boolean allowDir = true;
-
- /**
- * Constructs the list of extensions out of a string of comma-separated
- * elements, each of which represents one extension.
- *
- * @param ext the list of comma-separated extensions
- */
- public FileNameFilter(String ext, String description)
- {
- this(ext, description, true);
- }
-
- public FileNameFilter(String ext, String description, boolean allowDir)
- {
- this.description = description;
- this.allowDir = allowDir;
- StringTokenizer st = new StringTokenizer(ext, ", ");
- String extension;
- while (st.hasMoreTokens())
- {
- extension = st.nextToken();
- extensions.add(extension);
- if (default_extension == null) default_extension = extension;
- }
- }
-
- /**
- * determines if the filename is an acceptable one. If a
- * filename ends with one of the extensions the filter was
- * initialized with, then the function returns true. if not,
- * the function returns false.
- *
- * @param dir the directory the file is in
- * @return true if the filename has a valid extension, false otherwise
- */
- public boolean accept(File dir)
- {
- for (int i = 0; i < extensions.size(); i++)
- {
- if (allowDir)
- {
- if (dir.isDirectory() || dir.getName().endsWith("." + (String) extensions.get(i))) return true;
- }
- else
- {
- if (dir.getName().endsWith("." + (String) extensions.get(i))) return true;
- }
- }
- return extensions.size() == 0;
- }
-
- /**
- * Returns the default extension.
- *
- * @return the default extension
- */
- public String getDefaultExtension()
- {
- return default_extension;
- }
-
- public void setDefaultExtension(String ext)
- {
- default_extension = ext;
- }
-
- public String getDescription()
- {
- return description;
- }
-}
\ No newline at end of file
diff --git a/java/src/javazoom/jlgui/player/amp/util/FileSelector.java b/java/src/javazoom/jlgui/player/amp/util/FileSelector.java
deleted file mode 100644
index be2bdd9..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/FileSelector.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * FileSelector.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util;
-
-import java.io.File;
-import javax.swing.JFileChooser;
-import javax.swing.JFrame;
-import javazoom.jlgui.player.amp.Loader;
-
-/**
- * This class is used to select a file or directory for loading or saving.
- */
-public class FileSelector
-{
- public static final int OPEN = 1;
- public static final int SAVE = 2;
- public static final int SAVE_AS = 3;
- public static final int DIRECTORY = 4;
- private File[] files = null;
- private File directory = null;
- private static FileSelector instance = null;
-
- public File[] getFiles()
- {
- return files;
- }
-
- public File getDirectory()
- {
- return directory;
- }
-
- public static final FileSelector getInstance()
- {
- if (instance == null) instance = new FileSelector();
- return instance;
- }
-
- /**
- * Opens a dialog box so that the user can search for a file
- * with the given extension and returns the filename selected.
- *
- * @param extensions the extension of the filename to be selected,
- * or "" if any filename can be used
- * @param directory the folder to be put in the starting directory
- * @param mode the action that will be performed on the file, used to tell what
- * files are valid
- * @return the selected file
- */
- public static File[] selectFile(Loader loader, int mode, boolean multiple, String extensions, String description, File directory)
- {
- return selectFile(loader, mode, multiple, null, extensions, description, null, directory);
- }
-
- /**
- * Opens a dialog box so that the user can search for a file
- * with the given extension and returns the filename selected.
- *
- * @param extensions the extension of the filename to be selected,
- * or "" if any filename can be used
- * @param titlePrefix the string to be put in the title, followed by : SaveAs
- * @param mode the action that will be performed on the file, used to tell what
- * files are valid
- * @param defaultFile the default file
- * @param directory the string to be put in the starting directory
- * @return the selected filename
- */
- public static File[] selectFile(Loader loader, int mode, boolean multiple, File defaultFile, String extensions, String description, String titlePrefix, File directory)
- {
- JFrame mainWindow = null;
- if (loader instanceof JFrame)
- {
- mainWindow = (JFrame) loader;
- }
- JFileChooser filePanel = new JFileChooser();
- StringBuffer windowTitle = new StringBuffer();
- if (titlePrefix != null && titlePrefix.length() > 0) windowTitle.append(titlePrefix).append(": ");
- switch (mode)
- {
- case OPEN:
- windowTitle.append("Open");
- break;
- case SAVE:
- windowTitle.append("Save");
- break;
- case SAVE_AS:
- windowTitle.append("Save As");
- break;
- case DIRECTORY:
- windowTitle.append("Choose Directory");
- break;
- }
- filePanel.setDialogTitle(windowTitle.toString());
- FileNameFilter filter = new FileNameFilter(extensions, description);
- filePanel.setFileFilter(filter);
- if (defaultFile != null) filePanel.setSelectedFile(defaultFile);
- if (directory != null) filePanel.setCurrentDirectory(directory);
- filePanel.setMultiSelectionEnabled(multiple);
- int retVal = -1;
- switch (mode)
- {
- case OPEN:
- filePanel.setDialogType(JFileChooser.OPEN_DIALOG);
- retVal = filePanel.showOpenDialog(mainWindow);
- break;
- case SAVE:
- filePanel.setDialogType(JFileChooser.SAVE_DIALOG);
- retVal = filePanel.showSaveDialog(mainWindow);
- break;
- case SAVE_AS:
- filePanel.setDialogType(JFileChooser.SAVE_DIALOG);
- retVal = filePanel.showSaveDialog(mainWindow);
- break;
- case DIRECTORY:
- filePanel.setDialogType(JFileChooser.SAVE_DIALOG);
- filePanel.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
- retVal = filePanel.showDialog(mainWindow, "Select");
- break;
- }
- if (retVal == JFileChooser.APPROVE_OPTION)
- {
- if (multiple) getInstance().files = filePanel.getSelectedFiles();
- else
- {
- getInstance().files = new File[1];
- getInstance().files[0] = filePanel.getSelectedFile();
- }
- getInstance().directory = filePanel.getCurrentDirectory();
- }
- else
- {
- getInstance().files = null;
- }
- return getInstance().files;
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/util/FileUtil.java b/java/src/javazoom/jlgui/player/amp/util/FileUtil.java
deleted file mode 100644
index 34a33ba..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/FileUtil.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * FileUtil.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.StringTokenizer;
-
-/**
- * @author Scott Pennell
- */
-public class FileUtil
-{
- private static List supportedExtensions = null;
-
- public static File[] findFilesRecursively(File directory)
- {
- if (directory.isFile())
- {
- File[] f = new File[1];
- f[0] = directory;
- return f;
- }
- List list = new ArrayList();
- addSongsRecursive(list, directory);
- return ((File[]) list.toArray(new File[list.size()]));
- }
-
- private static void addSongsRecursive(List found, File rootDir)
- {
- if (rootDir == null) return; // we do not want waste time
- File[] files = rootDir.listFiles();
- if (files == null) return;
- for (int i = 0; i < files.length; i++)
- {
- File file = new File(rootDir, files[i].getName());
- if (file.isDirectory()) addSongsRecursive(found, file);
- else
- {
- if (isMusicFile(files[i]))
- {
- found.add(file);
- }
- }
- }
- }
-
- public static boolean isMusicFile(File f)
- {
- List exts = getSupportedExtensions();
- int sz = exts.size();
- String ext;
- String name = f.getName();
- for (int i = 0; i < sz; i++)
- {
- ext = (String) exts.get(i);
- if (ext.equals(".wsz") || ext.equals(".m3u")) continue;
- if (name.endsWith(ext)) return true;
- }
- return false;
- }
-
- public static List getSupportedExtensions()
- {
- if (supportedExtensions == null)
- {
- String ext = Config.getInstance().getExtensions();
- StringTokenizer st = new StringTokenizer(ext, ",");
- supportedExtensions = new ArrayList();
- while (st.hasMoreTokens())
- supportedExtensions.add("." + st.nextElement());
- }
- return (supportedExtensions);
- }
-
- public static String getSupprtedExtensions()
- {
- List exts = getSupportedExtensions();
- StringBuffer s = new StringBuffer();
- int sz = exts.size();
- String ext;
- for (int i = 0; i < sz; i++)
- {
- ext = (String) exts.get(i);
- if (ext.equals(".wsz") || ext.equals(".m3u")) continue;
- if (i == 0) s.append(ext);
- else s.append(";").append(ext);
- }
- return s.toString();
- }
-
- public static String padString(String s, int length)
- {
- return padString(s, ' ', length);
- }
-
- public static String padString(String s, char padChar, int length)
- {
- int slen, numPads = 0;
- if (s == null)
- {
- s = "";
- numPads = length;
- }
- else if ((slen = s.length()) > length)
- {
- s = s.substring(0, length);
- }
- else if (slen < length)
- {
- numPads = length - slen;
- }
- if (numPads == 0) return s;
- char[] c = new char[numPads];
- Arrays.fill(c, padChar);
- return s + new String(c);
- }
-
- public static String rightPadString(String s, int length)
- {
- return (rightPadString(s, ' ', length));
- }
-
- public static String rightPadString(String s, char padChar, int length)
- {
- int slen, numPads = 0;
- if (s == null)
- {
- s = "";
- numPads = length;
- }
- else if ((slen = s.length()) > length)
- {
- s = s.substring(length);
- }
- else if (slen < length)
- {
- numPads = length - slen;
- }
- if (numPads == 0) return (s);
- char[] c = new char[numPads];
- Arrays.fill(c, padChar);
- return new String(c) + s;
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/util/ini/Alphabetizer.java b/java/src/javazoom/jlgui/player/amp/util/ini/Alphabetizer.java
deleted file mode 100644
index ac016a3..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ini/Alphabetizer.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Alphabetizer.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util.ini;
-
-/**
- * This class alphabetizes strings.
- *
- * @author Matt "Spiked Bat" Segur
- */
-public class Alphabetizer
-{
- public static boolean lessThan(String str1, String str2)
- {
- return compare(str1, str2) < 0;
- }
-
- public static boolean greaterThan(String str1, String str2)
- {
- return compare(str1, str2) > 0;
- }
-
- public static boolean equalTo(String str1, String str2)
- {
- return compare(str1, str2) == 0;
- }
-
- /**
- * Performs a case-insensitive comparison of the two strings.
- */
- public static int compare(String s1, String s2)
- {
- if (s1 == null && s2 == null) return 0;
- else if (s1 == null) return -1;
- else if (s2 == null) return +1;
- int len1 = s1.length();
- int len2 = s2.length();
- int len = Math.min(len1, len2);
- for (int i = 0; i < len; i++)
- {
- int comparison = compare(s1.charAt(i), s2.charAt(i));
- if (comparison != 0) return comparison;
- }
- if (len1 < len2) return -1;
- else if (len1 > len2) return +1;
- else return 0;
- }
-
- /**
- * Performs a case-insensitive comparison of the two characters.
- */
- public static int compare(char c1, char c2)
- {
- if (65 <= c1 && c1 <= 91) c1 += 32;
- if (65 <= c2 && c2 <= 91) c2 += 32;
- if (c1 < c2) return -1;
- else if (c1 > c2) return +1;
- else return 0;
- }
-}
\ No newline at end of file
diff --git a/java/src/javazoom/jlgui/player/amp/util/ini/Array.java b/java/src/javazoom/jlgui/player/amp/util/ini/Array.java
deleted file mode 100644
index 7f1ced3..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ini/Array.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Array.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util.ini;
-
-/**
- * This class represents an array of objects.
- *
- * @author Jeremy Cloud
- * @version 1.0.0
- */
-public class Array
-{
- public static Object[] copy(Object[] sors, Object[] dest)
- {
- System.arraycopy(sors, 0, dest, 0, sors.length);
- return dest;
- }
-
- public static String[] doubleArray(String[] sors)
- {
- System.out.print("** doubling string array... ");
- int new_size = (sors.length <= 8 ? 16 : sors.length << 1);
- String[] dest = new String[new_size];
- System.arraycopy(sors, 0, dest, 0, sors.length);
- System.out.println("done **.");
- return dest;
- }
-
- public static int[] doubleArray(int[] sors)
- {
- int new_size = (sors.length < 8 ? 16 : sors.length << 1);
- int[] dest = new int[new_size];
- System.arraycopy(sors, 0, dest, 0, sors.length);
- return dest;
- }
-
- public static int[] grow(int[] sors, double growth_rate)
- {
- int new_size = Math.max((int) (sors.length * growth_rate), sors.length + 1);
- int[] dest = new int[new_size];
- System.arraycopy(sors, 0, dest, 0, sors.length);
- return dest;
- }
-
- public static boolean[] grow(boolean[] sors, double growth_rate)
- {
- int new_size = Math.max((int) (sors.length * growth_rate), sors.length + 1);
- boolean[] dest = new boolean[new_size];
- System.arraycopy(sors, 0, dest, 0, sors.length);
- return dest;
- }
-
- public static Object[] grow(Object[] sors, double growth_rate)
- {
- int new_size = Math.max((int) (sors.length * growth_rate), sors.length + 1);
- Object[] dest = new Object[new_size];
- System.arraycopy(sors, 0, dest, 0, sors.length);
- return dest;
- }
-
- public static String[] grow(String[] sors, double growth_rate)
- {
- int new_size = Math.max((int) (sors.length * growth_rate), sors.length + 1);
- String[] dest = new String[new_size];
- System.arraycopy(sors, 0, dest, 0, sors.length);
- return dest;
- }
-
- /**
- * @param start - inclusive
- * @param end - exclusive
- */
- public static void shiftUp(Object[] array, int start, int end)
- {
- int count = end - start;
- if (count > 0) System.arraycopy(array, start, array, start + 1, count);
- }
-
- /**
- * @param start - inclusive
- * @param end - exclusive
- */
- public static void shiftDown(Object[] array, int start, int end)
- {
- int count = end - start;
- if (count > 0) System.arraycopy(array, start, array, start - 1, count);
- }
-
- public static void shift(Object[] array, int start, int amount)
- {
- int count = array.length - start - (amount > 0 ? amount : 0);
- System.arraycopy(array, start, array, start + amount, count);
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/util/ini/CRC32OutputStream.java b/java/src/javazoom/jlgui/player/amp/util/ini/CRC32OutputStream.java
deleted file mode 100644
index c38fb91..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ini/CRC32OutputStream.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * CRC32OutputStream.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util.ini;
-
-import java.io.OutputStream;
-import java.util.zip.CRC32;
-
-/**
- * @author Jeremy Cloud
- * @version 1.0.0
- */
-public class CRC32OutputStream extends OutputStream
-{
- private CRC32 crc;
-
- public CRC32OutputStream()
- {
- crc = new CRC32();
- }
-
- public void write(int new_byte)
- {
- crc.update(new_byte);
- }
-
- public long getValue()
- {
- return crc.getValue();
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/util/ini/Configuration.java b/java/src/javazoom/jlgui/player/amp/util/ini/Configuration.java
deleted file mode 100644
index 3a815e1..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ini/Configuration.java
+++ /dev/null
@@ -1,441 +0,0 @@
-/*
- * Configuration.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util.ini;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.PrintWriter;
-import java.net.URL;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import javazoom.jlgui.player.amp.util.Config;
-
-/**
- * A Configuration is used to save a set of configuration
- * properties. The properties can be written out to disk
- * in "name=value" form, and read back in.
- *
- * @author Jeremy Cloud
- * @version 1.2.0
- */
-public class Configuration
-{
- private File config_file = null;
- private URL config_url = null;
- private Hashtable props = new Hashtable(64);
-
- /**
- * Constructs a new Configuration object that stores
- * it's properties in the file with the given name.
- */
- public Configuration(String file_name)
- {
- // E.B - URL support
- if (Config.startWithProtocol(file_name))
- {
- try
- {
- this.config_url = new URL(file_name);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- load();
- }
- else
- {
- this.config_file = new File(file_name);
- load();
- }
- }
-
- /**
- * Constructs a new Configuration object that stores
- * it's properties in the given file.
- */
- public Configuration(File config_file)
- {
- this.config_file = config_file;
- load();
- }
-
- /**
- * Constructs a new Configuration object that stores
- * it's properties in the given file.
- */
- public Configuration(URL config_file)
- {
- this.config_url = config_file;
- load();
- }
-
- /**
- * Constructs a new Configuration object that doesn't
- * have a file associated with it.
- */
- public Configuration()
- {
- this.config_file = null;
- }
-
- /**
- * @return The config file.
- */
- public File getConfigFile()
- {
- return config_file;
- }
-
- /**
- * Adds a the property with the given name and value.
- *
- * @param name The name of the property.
- * @param value The value of the property.
- */
- public void add(String name, String value)
- {
- props.put(name, value);
- }
-
- /**
- * Adds the boolean property.
- *
- * @param name The name of the property.
- * @param value The value of the property.
- */
- public void add(String name, boolean value)
- {
- props.put(name, value ? "true" : "false");
- }
-
- /**
- * Adds the integer property.
- *
- * @param name The name of the property.
- * @param value The value of the property.
- */
- public void add(String name, int value)
- {
- props.put(name, Integer.toString(value));
- }
-
- /**
- * Adds the double property.
- *
- * @param name The name of the property.
- * @param value The value of the property.
- */
- public void add(String name, double value)
- {
- props.put(name, Double.toString(value));
- }
-
- /**
- * Returns the value of the property with the
- * given name. Null is returned if the named
- * property is not found.
- *
- * @param The name of the desired property.
- * @return The value of the property.
- */
- public String get(String name)
- {
- return (String) props.get(name);
- }
-
- /**
- * Returns the value of the property with the
- * given name. 'default_value' is returned if the
- * named property is not found.
- *
- * @param The name of the desired property.
- * @param default_value The default value of the property which is returned
- * if the property does not have a specified value.
- * @return The value of the property.
- */
- public String get(String name, String default_value)
- {
- Object value = props.get(name);
- return value != null ? (String) value : default_value;
- }
-
- /**
- * Returns the value of the property with the given name.
- * 'false' is returned if the property does not have a
- * specified value.
- *
- * @param name The name of the desired property.
- * @param return The value of the property.
- */
- public boolean getBoolean(String name)
- {
- Object value = props.get(name);
- return value != null ? value.equals("true") : false;
- }
-
- /**
- * Returns the value of the property with the given name.
- *
- * @param name The name of the desired property.
- * @param default_value The default value of the property which is returned
- * if the property does not have a specified value.
- * @param return The value of the property.
- */
- public boolean getBoolean(String name, boolean default_value)
- {
- Object value = props.get(name);
- return value != null ? value.equals("true") : default_value;
- }
-
- /**
- * Returns the value of the property with the given name.
- * '0' is returned if the property does not have a
- * specified value.
- *
- * @param name The name of the desired property.
- * @param return The value of the property.
- */
- public int getInt(String name)
- {
- try
- {
- return Integer.parseInt((String) props.get(name));
- }
- catch (Exception e)
- {
- }
- return -1;
- }
-
- /**
- * Returns the value of the property with the given name.
- *
- * @param name The name of the desired property.
- * @param default_value The default value of the property which is returned
- * if the property does not have a specified value.
- * @param return The value of the property.
- */
- public int getInt(String name, int default_value)
- {
- try
- {
- return Integer.parseInt((String) props.get(name));
- }
- catch (Exception e)
- {
- }
- return default_value;
- }
-
- /**
- * Returns the value of the property with the given name.
- * '0' is returned if the property does not have a
- * specified value.
- *
- * @param name The name of the desired property.
- * @param return The value of the property.
- */
- public double getDouble(String name)
- {
- try
- {
- return new Double((String) props.get(name)).doubleValue();
- }
- catch (Exception e)
- {
- }
- return -1d;
- }
-
- /**
- * Returns the value of the property with the given name.
- *
- * @param name The name of the desired property.
- * @param default_value The default value of the property which is returned
- * if the property does not have a specified value.
- * @param return The value of the property.
- */
- public double getDouble(String name, double default_value)
- {
- try
- {
- return new Double((String) props.get(name)).doubleValue();
- }
- catch (Exception e)
- {
- }
- return default_value;
- }
-
- /**
- * Removes the property with the given name.
- *
- * @param name The name of the property to remove.
- */
- public void remove(String name)
- {
- props.remove(name);
- }
-
- /**
- * Removes all the properties.
- */
- public void removeAll()
- {
- props.clear();
- }
-
- /**
- * Loads the property list from the configuration file.
- *
- * @return True if the file was loaded successfully, false if
- * the file does not exists or an error occurred reading
- * the file.
- */
- public boolean load()
- {
- if ((config_file == null) && (config_url == null)) return false;
- // Loads from URL.
- if (config_url != null)
- {
- try
- {
- return load(new BufferedReader(new InputStreamReader(config_url.openStream())));
- }
- catch (IOException e)
- {
- e.printStackTrace();
- return false;
- }
- }
- // Loads from file.
- else
- {
- if (!config_file.exists()) return false;
- try
- {
- return load(new BufferedReader(new FileReader(config_file)));
- }
- catch (IOException e)
- {
- e.printStackTrace();
- return false;
- }
- }
- }
-
- public boolean load(BufferedReader buffy) throws IOException
- {
- Hashtable props = this.props;
- String line = null;
- while ((line = buffy.readLine()) != null)
- {
- int eq_idx = line.indexOf('=');
- if (eq_idx > 0)
- {
- String name = line.substring(0, eq_idx).trim();
- String value = line.substring(eq_idx + 1).trim();
- props.put(name, value);
- }
- }
- buffy.close();
- return true;
- }
-
- /**
- * Saves the property list to the config file.
- *
- * @return True if the save was successful, false othewise.
- */
- public boolean save()
- {
- if (config_url != null) return false;
- try
- {
- PrintWriter out = new PrintWriter(new FileWriter(config_file));
- return save(out);
- }
- catch (IOException e)
- {
- e.printStackTrace();
- return false;
- }
- }
-
- public boolean save(PrintWriter out) throws IOException
- {
- Hashtable props = this.props;
- Enumeration names = props.keys();
- SortedStrings sorter = new SortedStrings();
- while (names.hasMoreElements())
- {
- sorter.add((String) names.nextElement());
- }
- for (int i = 0; i < sorter.stringCount(); i++)
- {
- String name = sorter.stringAt(i);
- String value = (String) props.get(name);
- out.print(name);
- out.print("=");
- out.println(value);
- }
- out.close();
- return true;
- }
-
- public void storeCRC()
- {
- add("crc", generateCRC());
- }
-
- public boolean isValidCRC()
- {
- String crc = generateCRC();
- String stored_crc = (String) props.get("crc");
- if (stored_crc == null) return false;
- return stored_crc.equals(crc);
- }
-
- private String generateCRC()
- {
- Hashtable props = this.props;
- CRC32OutputStream crc = new CRC32OutputStream();
- PrintWriter pr = new PrintWriter(crc);
- Enumeration names = props.keys();
- while (names.hasMoreElements())
- {
- String name = (String) names.nextElement();
- if (!name.equals("crc"))
- {
- pr.println((String) props.get(name));
- }
- }
- pr.flush();
- return "" + crc.getValue();
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/util/ini/SortedStrings.java b/java/src/javazoom/jlgui/player/amp/util/ini/SortedStrings.java
deleted file mode 100644
index c6aa391..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ini/SortedStrings.java
+++ /dev/null
@@ -1,338 +0,0 @@
-/*
- * SortedStrings.
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util.ini;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-
-/**
- * An object that represents an array of alpabetized Strings. Implemented
- * with an String array that grows as appropriate.
- */
-public class SortedStrings extends Alphabetizer implements Cloneable
-{
- public static final int DEFAULT_SIZE = 32;
- private String[] strings;
- private int string_count;
- private double growth_rate = 2.0;
-
- /**
- * Constructor creates a new SortedStrings object of default
- * size.
- */
- public SortedStrings()
- {
- clear();
- }
-
- /**
- * Constructor creates a new SortedStrings object of size passed.
- */
- public SortedStrings(int initial_size)
- {
- clear(initial_size);
- }
-
- /**
- * Contructor creates a new SortedStrings object using a DataInput
- * object. The first int in the DataInput object is assumed to be
- * the size wanted for the SortedStrings object.
- */
- public SortedStrings(DataInput in) throws IOException
- {
- int count = string_count = in.readInt();
- String[] arr = strings = new String[count];
- for (int i = 0; i < count; i++)
- arr[i] = in.readUTF();
- }
-
- /**
- * Contructor creates a new SortedStrings object, initializing it
- * with the String[] passed.
- */
- public SortedStrings(String[] array)
- {
- this(array.length);
- int new_size = array.length;
- for (int i = 0; i < new_size; i++)
- add(array[i]);
- }
-
- /**
- * Clones the SortedStrings object.
- */
- public Object clone()
- {
- try
- {
- SortedStrings clone = (SortedStrings) super.clone();
- clone.strings = (String[]) strings.clone();
- return clone;
- }
- catch (CloneNotSupportedException e)
- {
- return null;
- }
- }
-
- /**
- * Writes a the SortedStrings object to the DataOutput object.
- */
- public void emit(DataOutput out) throws IOException
- {
- int count = string_count;
- String[] arr = strings;
- out.writeInt(count);
- for (int i = 0; i < count; i++)
- out.writeUTF(arr[i]);
- }
-
- /**
- * Merge two sorted lists of integers. The time complexity of
- * the merge is O(n).
- */
- public SortedStrings merge(SortedStrings that)
- {
- int count1 = this.string_count;
- int count2 = that.string_count;
- String[] ints1 = this.strings;
- String[] ints2 = that.strings;
- String num1, num2;
- int i1 = 0, i2 = 0;
- SortedStrings res = new SortedStrings(count1 + count2);
- while (i1 < count1 && i2 < count2)
- {
- num1 = ints1[i1];
- num2 = ints2[i2];
- if (compare(num1, num2) < 0)
- {
- res.add(num1);
- i1++;
- }
- else if (compare(num2, num1) < 0)
- {
- res.add(num2);
- i2++;
- }
- else
- {
- res.add(num1);
- i1++;
- i2++;
- }
- }
- if (i1 < count1)
- {
- for (; i1 < count1; i1++)
- res.add(ints1[i1]);
- }
- else for (; i2 < count2; i2++)
- res.add(ints2[i2]);
- return res;
- }
-
- /**
- * Returns a SortedStrings object that has the Strings
- * from this object that are not in the one passed.
- */
- public SortedStrings diff(SortedStrings that)
- {
- int count1 = this.string_count;
- int count2 = that.string_count;
- String[] ints1 = this.strings;
- String[] ints2 = that.strings;
- String num1, num2;
- int i1 = 0, i2 = 0;
- SortedStrings res = new SortedStrings(count1);
- while (i1 < count1 && i2 < count2)
- {
- num1 = ints1[i1];
- num2 = ints2[i2];
- if (compare(num1, num2) < 0)
- {
- res.add(num1);
- i1++;
- }
- else if (compare(num2, num1) < 0) i2++;
- else
- {
- i1++;
- i2++;
- }
- }
- if (i1 < count1)
- {
- for (; i1 < count1; i1++)
- res.add(ints1[i1]);
- }
- return res;
- }
-
- /**
- * Clears the Strings from the object and creates a new one
- * of the default size.
- */
- public void clear()
- {
- clear(DEFAULT_SIZE);
- }
-
- /**
- * Clears the Strings from the object and creates a new one
- * of the size passed.
- */
- public void clear(int initial_size)
- {
- strings = new String[initial_size];
- string_count = 0;
- }
-
- /**
- * Adds the String passed to the array in its proper place -- sorted.
- */
- public void add(String num)
- {
- if (string_count == 0 || greaterThan(num, strings[string_count - 1]))
- {
- if (string_count == strings.length) strings = (String[]) Array.grow(strings, growth_rate);
- strings[string_count] = num;
- string_count++;
- }
- else insert(search(num), num);
- }
-
- /**
- * Inserts the String passed to the array at the index passed.
- */
- private void insert(int index, String num)
- {
- if (strings[index] == num) return;
- else
- {
- if (string_count == strings.length) strings = (String[]) Array.grow(strings, growth_rate);
- System.arraycopy(strings, index, strings, index + 1, string_count - index);
- strings[index] = num;
- string_count++;
- }
- }
-
- /**
- * Removes the String passed from the array.
- */
- public void remove(String num)
- {
- int index = search(num);
- if (index < string_count && equalTo(strings[index], num)) removeIndex(index);
- }
-
- /**
- * Removes the String from the beginning of the array to the
- * index passed.
- */
- public void removeIndex(int index)
- {
- if (index < string_count)
- {
- System.arraycopy(strings, index + 1, strings, index, string_count - index - 1);
- string_count--;
- }
- }
-
- /**
- * Returns true flag if the String passed is in the array.
- */
- public boolean contains(String num)
- {
- int index = search(num);
- return index < string_count && equalTo(strings[search(num)], num);
- }
-
- /**
- * Returns the number of Strings in the array.
- */
- public int stringCount()
- {
- return string_count;
- }
-
- /**
- * Returns String index of the int passed.
- */
- public int indexOf(String num)
- {
- int index = search(num);
- return index < string_count && equalTo(strings[index], num) ? index : -1;
- }
-
- /**
- * Returns the String value at the index passed.
- */
- public String stringAt(int index)
- {
- return strings[index];
- }
-
- /**
- * Returns the index where the String value passed is located
- * or where it should be sorted to if it is not present.
- */
- protected int search(String num)
- {
- String[] strings = this.strings;
- int lb = 0, ub = string_count, index;
- String index_key;
- while (true)
- {
- if (lb >= ub - 1)
- {
- if (lb < string_count && !greaterThan(num, strings[lb])) return lb;
- else return lb + 1;
- }
- index = (lb + ub) / 2;
- index_key = strings[index];
- if (greaterThan(num, index_key)) lb = index + 1;
- else if (lessThan(num, index_key)) ub = index;
- else return index;
- }
- }
-
- /**
- * Returns an String[] that contains the value in the SortedStrings
- * object.
- */
- public String[] toStringArray()
- {
- String[] array = new String[string_count];
- System.arraycopy(strings, 0, array, 0, string_count);
- return array;
- }
-
- /**
- * Returns a sorted String[] from the String[] passed.
- */
- public static String[] sort(String[] input)
- {
- SortedStrings new_strings = new SortedStrings(input);
- return new_strings.toStringArray();
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/util/ui/DevicePreference.java b/java/src/javazoom/jlgui/player/amp/util/ui/DevicePreference.java
deleted file mode 100644
index b08201f..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ui/DevicePreference.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * DevicePreference.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util.ui;
-
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.text.MessageFormat;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ResourceBundle;
-import javax.swing.Box;
-import javax.swing.BoxLayout;
-import javax.swing.ButtonGroup;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JRadioButton;
-import javax.swing.border.EmptyBorder;
-import javax.swing.border.TitledBorder;
-import javazoom.jlgui.basicplayer.BasicController;
-import javazoom.jlgui.basicplayer.BasicPlayer;
-
-public class DevicePreference extends PreferenceItem implements ActionListener
-{
- private BasicPlayer bplayer = null;
- private static DevicePreference instance = null;
-
- private DevicePreference()
- {
- }
-
- public static DevicePreference getInstance()
- {
- if (instance == null)
- {
- instance = new DevicePreference();
- }
- return instance;
- }
-
- public void loadUI()
- {
- removeAll();
- bundle = ResourceBundle.getBundle("javazoom/jlgui/player/amp/util/ui/device");
- setBorder(new TitledBorder(getResource("title")));
- BoxLayout layout = new BoxLayout(this, BoxLayout.Y_AXIS);
- setLayout(layout);
- BasicController controller = null;
- if (player != null) controller = player.getController();
- if ((controller != null) && (controller instanceof BasicPlayer))
- {
- bplayer = (BasicPlayer) controller;
- List devices = bplayer.getMixers();
- String mixer = bplayer.getMixerName();
- ButtonGroup group = new ButtonGroup();
- Iterator it = devices.iterator();
- while (it.hasNext())
- {
- String name = (String) it.next();
- JRadioButton radio = new JRadioButton(name);
- if (name.equals(mixer))
- {
- radio.setSelected(true);
- }
- else
- {
- radio.setSelected(false);
- }
- group.add(radio);
- radio.addActionListener(this);
- radio.setAlignmentX(Component.LEFT_ALIGNMENT);
- add(radio);
- }
- JPanel lineInfo = new JPanel();
- lineInfo.setLayout(new BoxLayout(lineInfo, BoxLayout.Y_AXIS));
- lineInfo.setAlignmentX(Component.LEFT_ALIGNMENT);
- lineInfo.setBorder(new EmptyBorder(4, 6, 0, 0));
- if (getResource("line.buffer.size") != null)
- {
- Object[] args = { new Integer(bplayer.getLineCurrentBufferSize()) };
- String str = MessageFormat.format(getResource("line.buffer.size"), args);
- JLabel lineBufferSizeLabel = new JLabel(str);
- lineInfo.add(lineBufferSizeLabel);
- }
- if (getResource("help") != null)
- {
- lineInfo.add(Box.createRigidArea(new Dimension(0, 30)));
- JLabel helpLabel = new JLabel(getResource("help"));
- lineInfo.add(helpLabel);
- }
- add(lineInfo);
- }
- }
-
- public void actionPerformed(ActionEvent ev)
- {
- if (bplayer != null) bplayer.setMixerName(ev.getActionCommand());
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/util/ui/EmptyPreference.java b/java/src/javazoom/jlgui/player/amp/util/ui/EmptyPreference.java
deleted file mode 100644
index 272755b..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ui/EmptyPreference.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * EmptyPreference.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util.ui;
-
-import javax.swing.border.TitledBorder;
-
-public class EmptyPreference extends PreferenceItem
-{
- private static EmptyPreference instance = null;
-
- private EmptyPreference()
- {
- }
-
- public static EmptyPreference getInstance()
- {
- if (instance == null)
- {
- instance = new EmptyPreference();
- }
- return instance;
- }
-
- public void loadUI()
- {
- if (loaded == false)
- {
- setBorder(new TitledBorder(""));
- loaded = true;
- }
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/util/ui/NodeItem.java b/java/src/javazoom/jlgui/player/amp/util/ui/NodeItem.java
deleted file mode 100644
index 9a5628e..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ui/NodeItem.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * NodeItem.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util.ui;
-
-public class NodeItem
-{
- private String name = null;
- private String impl = null;
-
- public NodeItem(String name, String impl)
- {
- super();
- this.name = name;
- this.impl = impl;
- }
-
- public String getImpl()
- {
- return impl;
- }
-
- public String toString()
- {
- return name;
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/util/ui/OutputPreference.java b/java/src/javazoom/jlgui/player/amp/util/ui/OutputPreference.java
deleted file mode 100644
index 3b1bc42..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ui/OutputPreference.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * OutputPreference.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util.ui;
-
-import java.util.ResourceBundle;
-import javax.swing.border.TitledBorder;
-
-public class OutputPreference extends PreferenceItem
-{
- private static OutputPreference instance = null;
-
- private OutputPreference()
- {
- }
-
- public static OutputPreference getInstance()
- {
- if (instance == null)
- {
- instance = new OutputPreference();
- }
- return instance;
- }
-
- public void loadUI()
- {
- if (loaded == false)
- {
- bundle = ResourceBundle.getBundle("javazoom/jlgui/player/amp/util/ui/output");
- setBorder(new TitledBorder(getResource("title")));
- loaded = true;
- }
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/util/ui/PreferenceItem.java b/java/src/javazoom/jlgui/player/amp/util/ui/PreferenceItem.java
deleted file mode 100644
index 3297e61..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ui/PreferenceItem.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * PreferenceItem.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util.ui;
-
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-import javax.swing.JFrame;
-import javax.swing.JPanel;
-import javazoom.jlgui.player.amp.PlayerUI;
-
-public abstract class PreferenceItem extends JPanel
-{
- protected PlayerUI player = null;
- protected ResourceBundle bundle = null;
- protected boolean loaded = false;
- protected JFrame parent = null;
-
- /**
- * Return I18N value of a given key.
- * @param key
- * @return
- */
- public String getResource(String key)
- {
- String value = null;
- if (key != null)
- {
- try
- {
- value = bundle.getString(key);
- }
- catch (MissingResourceException e)
- {
- }
- }
- return value;
- }
-
-
- public void setPlayer(PlayerUI player)
- {
- this.player = player;
- }
-
- public JFrame getParentFrame()
- {
- return parent;
- }
-
-
- public void setParentFrame(JFrame parent)
- {
- this.parent = parent;
- }
-
-
- public abstract void loadUI();
-}
diff --git a/java/src/javazoom/jlgui/player/amp/util/ui/Preferences.java b/java/src/javazoom/jlgui/player/amp/util/ui/Preferences.java
deleted file mode 100644
index 20d80a1..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ui/Preferences.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- * Preferences.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util.ui;
-
-import java.awt.BorderLayout;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.lang.reflect.Method;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-import javax.swing.ImageIcon;
-import javax.swing.JButton;
-import javax.swing.JFrame;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTree;
-import javax.swing.border.EmptyBorder;
-import javax.swing.event.TreeSelectionEvent;
-import javax.swing.event.TreeSelectionListener;
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.DefaultTreeCellRenderer;
-import javax.swing.tree.TreeNode;
-import javax.swing.tree.TreePath;
-import javazoom.jlgui.player.amp.PlayerUI;
-import javazoom.jlgui.player.amp.util.Config;
-
-public class Preferences extends JFrame implements TreeSelectionListener, ActionListener
-{
- private static Preferences instance = null;
- private JTree tree = null;
- private ResourceBundle bundle = null;
- private DefaultMutableTreeNode options = null;
- private DefaultMutableTreeNode filetypes = null;
- private DefaultMutableTreeNode device = null;
- private DefaultMutableTreeNode proxy = null;
- private DefaultMutableTreeNode plugins = null;
- private DefaultMutableTreeNode visual = null;
- private DefaultMutableTreeNode visuals = null;
- private DefaultMutableTreeNode output = null;
- //private DefaultMutableTreeNode drm = null;
- private DefaultMutableTreeNode skins = null;
- private DefaultMutableTreeNode browser = null;
- private JScrollPane treePane = null;
- private JScrollPane workPane = null;
- private JButton close = null;
- private PlayerUI player = null;
-
- public Preferences(PlayerUI player)
- {
- super();
- this.player = player;
- setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
- ImageIcon icon = Config.getInstance().getIconParent();
- if (icon != null) setIconImage(icon.getImage());
- }
-
- public static synchronized Preferences getInstance(PlayerUI player)
- {
- if (instance == null)
- {
- instance = new Preferences(player);
- instance.loadUI();
- }
- return instance;
- }
-
- private void loadUI()
- {
- bundle = ResourceBundle.getBundle("javazoom/jlgui/player/amp/util/ui/preferences");
- setTitle(getResource("title"));
- DefaultMutableTreeNode root = new DefaultMutableTreeNode();
- // Options
- if (getResource("tree.options") != null)
- {
- options = new DefaultMutableTreeNode(getResource("tree.options"));
- if (getResource("tree.options.device") != null)
- {
- device = new DefaultMutableTreeNode();
- device.setUserObject(new NodeItem(getResource("tree.options.device"), getResource("tree.options.device.impl")));
- options.add(device);
- }
- if (getResource("tree.options.visual") != null)
- {
- visual = new DefaultMutableTreeNode();
- visual.setUserObject(new NodeItem(getResource("tree.options.visual"), getResource("tree.options.visual.impl")));
- options.add(visual);
- }
- if (getResource("tree.options.filetypes") != null)
- {
- filetypes = new DefaultMutableTreeNode();
- filetypes.setUserObject(new NodeItem(getResource("tree.options.filetypes"), getResource("tree.options.filetypes.impl")));
- options.add(filetypes);
- }
- if (getResource("tree.options.system") != null)
- {
- proxy = new DefaultMutableTreeNode();
- proxy.setUserObject(new NodeItem(getResource("tree.options.system"), getResource("tree.options.system.impl")));
- options.add(proxy);
- }
- root.add(options);
- }
- // Plugins
- if (getResource("tree.plugins") != null)
- {
- plugins = new DefaultMutableTreeNode(getResource("tree.plugins"));
- if (getResource("tree.plugins.visualization") != null)
- {
- visuals = new DefaultMutableTreeNode();
- visuals.setUserObject(new NodeItem(getResource("tree.plugins.visualization"), getResource("tree.plugins.visualization.impl")));
- plugins.add(visuals);
- }
- if (getResource("tree.plugins.output") != null)
- {
- output = new DefaultMutableTreeNode();
- output.setUserObject(new NodeItem(getResource("tree.plugins.output"), getResource("tree.plugins.output.impl")));
- plugins.add(output);
- }
- /*if (getResource("tree.plugins.drm") != null)
- {
- drm = new DefaultMutableTreeNode();
- drm.setUserObject(new NodeItem(getResource("tree.plugins.drm"), getResource("tree.plugins.drm.impl")));
- plugins.add(drm);
- }*/
- root.add(plugins);
- }
- // Skins
- if (getResource("tree.skins") != null)
- {
- skins = new DefaultMutableTreeNode(getResource("tree.skins"));
- if (getResource("tree.skins.browser") != null)
- {
- browser = new DefaultMutableTreeNode();
- browser.setUserObject(new NodeItem(getResource("tree.skins.browser"), getResource("tree.skins.browser.impl")));
- skins.add(browser);
- }
- root.add(skins);
- }
- tree = new JTree(root);
- tree.setRootVisible(false);
- DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer();
- renderer.setLeafIcon(null);
- renderer.setClosedIcon(null);
- renderer.setOpenIcon(null);
- tree.setCellRenderer(renderer);
- tree.addTreeSelectionListener(this);
- int i = 0;
- while (i < tree.getRowCount())
- {
- tree.expandRow(i++);
- }
- tree.setBorder(new EmptyBorder(1, 4, 1, 2));
- GridBagLayout layout = new GridBagLayout();
- getContentPane().setLayout(layout);
- GridBagConstraints cnts = new GridBagConstraints();
- cnts.fill = GridBagConstraints.BOTH;
- cnts.weightx = 0.3;
- cnts.weighty = 1.0;
- cnts.gridx = 0;
- cnts.gridy = 0;
- treePane = new JScrollPane(tree);
- JPanel leftPane = new JPanel();
- leftPane.setLayout(new BorderLayout());
- leftPane.add(treePane, BorderLayout.CENTER);
- if (getResource("button.close") != null)
- {
- close = new JButton(getResource("button.close"));
- close.addActionListener(this);
- leftPane.add(close, BorderLayout.SOUTH);
- }
- getContentPane().add(leftPane, cnts);
- cnts.weightx = 1.0;
- cnts.gridx = 1;
- cnts.gridy = 0;
- workPane = new JScrollPane(new JPanel());
- getContentPane().add(workPane, cnts);
- }
-
- public void valueChanged(TreeSelectionEvent e)
- {
- DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
- if (node == null) return;
- if (node.isLeaf())
- {
- Object nodeItem = node.getUserObject();
- if ((nodeItem != null) && (nodeItem instanceof NodeItem))
- {
- PreferenceItem pane = getPreferenceItem(((NodeItem) nodeItem).getImpl());
- if (pane != null)
- {
- pane.setPlayer(player);
- pane.loadUI();
- pane.setParentFrame(this);
- workPane.setViewportView(pane);
- }
- }
- }
- }
-
- public void selectSkinBrowserPane()
- {
- TreeNode[] path = browser.getPath();
- tree.setSelectionPath(new TreePath(path));
- }
-
- public void actionPerformed(ActionEvent ev)
- {
- if (ev.getSource() == close)
- {
- if (player != null)
- {
- Config config = player.getConfig();
- config.save();
- }
- dispose();
- }
- }
-
- /**
- * Return I18N value of a given key.
- * @param key
- * @return
- */
- public String getResource(String key)
- {
- String value = null;
- if (key != null)
- {
- try
- {
- value = bundle.getString(key);
- }
- catch (MissingResourceException e)
- {
- }
- }
- return value;
- }
-
- public PreferenceItem getPreferenceItem(String impl)
- {
- PreferenceItem item = null;
- if (impl != null)
- {
- try
- {
- Class aClass = Class.forName(impl);
- Method method = aClass.getMethod("getInstance", null);
- item = (PreferenceItem) method.invoke(null, null);
- }
- catch (Exception e)
- {
- // TODO
- }
- }
- return item;
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/util/ui/SkinPreference.java b/java/src/javazoom/jlgui/player/amp/util/ui/SkinPreference.java
deleted file mode 100644
index 6c9e0e3..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ui/SkinPreference.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * SkinPreference.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util.ui;
-
-import java.awt.Dimension;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.io.File;
-import java.util.ResourceBundle;
-import javax.swing.DefaultListModel;
-import javax.swing.JButton;
-import javax.swing.JList;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
-import javax.swing.ListSelectionModel;
-import javax.swing.border.EmptyBorder;
-import javax.swing.border.TitledBorder;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-import javazoom.jlgui.player.amp.util.FileNameFilter;
-import javazoom.jlgui.player.amp.util.FileSelector;
-
-public class SkinPreference extends PreferenceItem implements ActionListener, ListSelectionListener
-{
- public static final String DEFAULTSKIN = "";
- public static final String SKINEXTENSION = "wsz";
- private DefaultListModel listModel = null;
- private JList skins = null;
- private JTextArea info = null;
- private JPanel listPane = null;
- private JPanel infoPane = null;
- private JPanel browsePane = null;
- private JButton selectSkinDir = null;
- private static SkinPreference instance = null;
-
- private SkinPreference()
- {
- listModel = new DefaultListModel();
- }
-
- public static SkinPreference getInstance()
- {
- if (instance == null)
- {
- instance = new SkinPreference();
- }
- return instance;
- }
-
- public void loadUI()
- {
- if (loaded == false)
- {
- bundle = ResourceBundle.getBundle("javazoom/jlgui/player/amp/util/ui/skin");
- setBorder(new TitledBorder(getResource("title")));
- File dir = null;
- if (player != null)
- {
- dir = new File(player.getConfig().getLastSkinDir());
- }
- loadSkins(dir);
- skins = new JList(listModel);
- skins.setBorder(new EmptyBorder(1, 2, 1, 1));
- skins.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
- skins.setLayoutOrientation(JList.VERTICAL);
- skins.setVisibleRowCount(12);
- skins.addListSelectionListener(this);
- JScrollPane listScroller = new JScrollPane(skins);
- listScroller.setPreferredSize(new Dimension(300, 140));
- listPane = new JPanel();
- listPane.add(listScroller);
- infoPane = new JPanel();
- info = new JTextArea(4, 35);
- info.setEditable(false);
- info.setCursor(null);
- JScrollPane infoScroller = new JScrollPane(info);
- infoScroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
- infoScroller.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
- infoPane.add(infoScroller);
- browsePane = new JPanel();
- selectSkinDir = new JButton(getResource("browser.directory.button"));
- selectSkinDir.addActionListener(this);
- browsePane.add(selectSkinDir);
- GridBagLayout layout = new GridBagLayout();
- setLayout(layout);
- GridBagConstraints cnts = new GridBagConstraints();
- cnts.fill = GridBagConstraints.BOTH;
- cnts.gridwidth = 1;
- cnts.weightx = 1.0;
- cnts.weighty = 0.60;
- cnts.gridx = 0;
- cnts.gridy = 0;
- add(listPane, cnts);
- cnts.gridwidth = 1;
- cnts.weightx = 1.0;
- cnts.weighty = 0.30;
- cnts.gridx = 0;
- cnts.gridy = 1;
- add(infoPane, cnts);
- cnts.weightx = 1.0;
- cnts.weighty = 0.10;
- cnts.gridx = 0;
- cnts.gridy = 2;
- add(browsePane, cnts);
- loaded = true;
- }
- }
-
- public void actionPerformed(ActionEvent ev)
- {
- if (ev.getActionCommand().equalsIgnoreCase(getResource("browser.directory.button")))
- {
- File[] file = FileSelector.selectFile(player.getLoader(), FileSelector.DIRECTORY, false, "", "Directories", new File(player.getConfig().getLastSkinDir()));
- if ((file != null) && (file[0].isDirectory()))
- {
- player.getConfig().setLastSkinDir(file[0].getAbsolutePath());
- loadSkins(file[0]);
- }
- }
- }
-
- public void valueChanged(ListSelectionEvent e)
- {
- if (e.getValueIsAdjusting() == false)
- {
- if (skins.getSelectedIndex() == -1)
- {
- }
- else
- {
- String name = (String) listModel.get(skins.getSelectedIndex());
- String filename = player.getConfig().getLastSkinDir() + name + "." + SKINEXTENSION;
- player.getSkin().setPath(filename);
- player.loadSkin();
- player.getConfig().setDefaultSkin(filename);
- String readme = player.getSkin().getReadme();
- if (readme == null) readme = "";
- info.setText(readme);
- info.setCaretPosition(0);
- }
- }
- }
-
- private void loadSkins(File dir)
- {
- listModel.clear();
- listModel.addElement(DEFAULTSKIN);
- if ((dir != null) && (dir.exists()))
- {
- File[] files = dir.listFiles(new FileNameFilter(SKINEXTENSION, "Skins", false));
- if ((files != null) && (files.length > 0))
- {
- for (int i = 0; i < files.length; i++)
- {
- String filename = files[i].getName();
- listModel.addElement(filename.substring(0, filename.length() - 4));
- }
- }
- }
- }
-
-}
diff --git a/java/src/javazoom/jlgui/player/amp/util/ui/SystemPreference.java b/java/src/javazoom/jlgui/player/amp/util/ui/SystemPreference.java
deleted file mode 100644
index 0ab6503..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ui/SystemPreference.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * SystemPreference.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util.ui;
-
-import java.awt.BorderLayout;
-import java.awt.Font;
-import java.util.Iterator;
-import java.util.Properties;
-import java.util.ResourceBundle;
-import java.util.TreeMap;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
-import javax.swing.border.EmptyBorder;
-import javax.swing.border.TitledBorder;
-
-public class SystemPreference extends PreferenceItem
-{
- private JTextArea info = null;
- private boolean loaded = false;
- private static SystemPreference instance = null;
-
- private SystemPreference()
- {
- }
-
- public static SystemPreference getInstance()
- {
- if (instance == null)
- {
- instance = new SystemPreference();
- }
- return instance;
- }
-
- public void loadUI()
- {
- if (loaded == false)
- {
- bundle = ResourceBundle.getBundle("javazoom/jlgui/player/amp/util/ui/system");
- setBorder(new TitledBorder(getResource("title")));
- setLayout(new BorderLayout());
- info = new JTextArea(16,35);
- info.setFont(new Font("Dialog", Font.PLAIN, 11));
- info.setEditable(false);
- info.setCursor(null);
- info.setBorder(new EmptyBorder(1,2,1,1));
- Properties props = System.getProperties();
- Iterator it = props.keySet().iterator();
- TreeMap map = new TreeMap();
- while (it.hasNext())
- {
- String key = (String) it.next();
- String value = props.getProperty(key);
- map.put(key, value);
- }
- it = map.keySet().iterator();
- while (it.hasNext())
- {
- String key = (String) it.next();
- String value = (String) map.get(key);
- info.append(key + "=" + value + "\r\n");
- }
- JScrollPane infoScroller = new JScrollPane(info);
- infoScroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
- infoScroller.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
- add(infoScroller, BorderLayout.CENTER);
- info.setCaretPosition(0);
- loaded = true;
- }
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/util/ui/TypePreference.java b/java/src/javazoom/jlgui/player/amp/util/ui/TypePreference.java
deleted file mode 100644
index e1f62f4..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ui/TypePreference.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * TypePreference.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util.ui;
-
-import java.awt.Dimension;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.ResourceBundle;
-import java.util.StringTokenizer;
-import javax.swing.DefaultListModel;
-import javax.swing.JList;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.ListSelectionModel;
-import javax.swing.border.EmptyBorder;
-import javax.swing.border.TitledBorder;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-
-public class TypePreference extends PreferenceItem implements ActionListener, ListSelectionListener
-{
- private DefaultListModel listModel = null;
- private JList types = null;
- private JPanel listPane = null;
- private JPanel extensionPane = null;
- private static TypePreference instance = null;
-
- private TypePreference()
- {
- listModel = new DefaultListModel();
- }
-
- public static TypePreference getInstance()
- {
- if (instance == null)
- {
- instance = new TypePreference();
- }
- return instance;
- }
-
- public void loadUI()
- {
- if (loaded == false)
- {
- bundle = ResourceBundle.getBundle("javazoom/jlgui/player/amp/util/ui/type");
- setBorder(new TitledBorder(getResource("title")));
- loadTypes();
- types = new JList(listModel);
- types.setBorder(new EmptyBorder(1, 2, 1, 1));
- types.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
- types.setLayoutOrientation(JList.VERTICAL);
- types.setVisibleRowCount(12);
- types.addListSelectionListener(this);
- JScrollPane listScroller = new JScrollPane(types);
- listScroller.setPreferredSize(new Dimension(80, 240));
- listPane = new JPanel();
- listPane.add(listScroller);
- extensionPane = new JPanel();
- GridBagLayout layout = new GridBagLayout();
- setLayout(layout);
- GridBagConstraints cnts = new GridBagConstraints();
- cnts.fill = GridBagConstraints.BOTH;
- cnts.gridwidth = 1;
- cnts.weightx = 0.30;
- cnts.weighty = 1.0;
- cnts.gridx = 0;
- cnts.gridy = 0;
- add(listPane, cnts);
- cnts.gridwidth = 1;
- cnts.weightx = 0.70;
- cnts.weighty = 1.0;
- cnts.gridx = 1;
- cnts.gridy = 0;
- add(extensionPane, cnts);
- loaded = true;
- }
- }
-
- public void actionPerformed(ActionEvent ev)
- {
- }
-
- public void valueChanged(ListSelectionEvent e)
- {
- if (e.getValueIsAdjusting() == false)
- {
- if (types.getSelectedIndex() == -1)
- {
- }
- else
- {
- }
- }
- }
-
- private void loadTypes()
- {
- String extensions = player.getConfig().getExtensions();
- StringTokenizer st = new StringTokenizer(extensions, ",");
- while (st.hasMoreTokens())
- {
- String type = st.nextToken();
- listModel.addElement(type);
- }
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/util/ui/VisualPreference.java b/java/src/javazoom/jlgui/player/amp/util/ui/VisualPreference.java
deleted file mode 100644
index 1813c2c..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ui/VisualPreference.java
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * VisualPreference.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util.ui;
-
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.FlowLayout;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.Hashtable;
-import java.util.ResourceBundle;
-import javax.swing.BoxLayout;
-import javax.swing.ButtonGroup;
-import javax.swing.JCheckBox;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JRadioButton;
-import javax.swing.JSlider;
-import javax.swing.border.TitledBorder;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import javazoom.jlgui.player.amp.visual.ui.SpectrumTimeAnalyzer;
-
-public class VisualPreference extends PreferenceItem implements ActionListener, ChangeListener
-{
- private JPanel modePane = null;
- private JPanel spectrumPane = null;
- private JPanel oscilloPane = null;
- private JRadioButton spectrumMode = null;
- private JRadioButton oscilloMode = null;
- private JRadioButton offMode = null;
- private JCheckBox peaksBox = null;
- private JSlider analyzerFalloff = null;
- private JSlider peaksFalloff = null;
- private static VisualPreference instance = null;
-
- private VisualPreference()
- {
- }
-
- public static VisualPreference getInstance()
- {
- if (instance == null)
- {
- instance = new VisualPreference();
- }
- return instance;
- }
-
- public void loadUI()
- {
- if (loaded == false)
- {
- bundle = ResourceBundle.getBundle("javazoom/jlgui/player/amp/util/ui/visual");
- setBorder(new TitledBorder(getResource("title")));
- modePane = new JPanel();
- modePane.setBorder(new TitledBorder(getResource("mode.title")));
- modePane.setLayout(new FlowLayout());
- spectrumMode = new JRadioButton(getResource("mode.spectrum"));
- spectrumMode.addActionListener(this);
- oscilloMode = new JRadioButton(getResource("mode.oscilloscope"));
- oscilloMode.addActionListener(this);
- offMode = new JRadioButton(getResource("mode.off"));
- offMode.addActionListener(this);
- SpectrumTimeAnalyzer analyzer = null;
- if (player != null)
- {
- analyzer = player.getSkin().getAcAnalyzer();
- int displayMode = SpectrumTimeAnalyzer.DISPLAY_MODE_OFF;
- if (analyzer != null)
- {
- displayMode = analyzer.getDisplayMode();
- }
- if (displayMode == SpectrumTimeAnalyzer.DISPLAY_MODE_SPECTRUM_ANALYSER)
- {
- spectrumMode.setSelected(true);
- }
- else if (displayMode == SpectrumTimeAnalyzer.DISPLAY_MODE_SCOPE)
- {
- oscilloMode.setSelected(true);
- }
- else if (displayMode == SpectrumTimeAnalyzer.DISPLAY_MODE_OFF)
- {
- offMode.setSelected(true);
- }
- }
- ButtonGroup modeGroup = new ButtonGroup();
- modeGroup.add(spectrumMode);
- modeGroup.add(oscilloMode);
- modeGroup.add(offMode);
- modePane.add(spectrumMode);
- modePane.add(oscilloMode);
- modePane.add(offMode);
- spectrumPane = new JPanel();
- spectrumPane.setLayout(new BoxLayout(spectrumPane, BoxLayout.Y_AXIS));
- peaksBox = new JCheckBox(getResource("spectrum.peaks"));
- peaksBox.setAlignmentX(Component.LEFT_ALIGNMENT);
- peaksBox.addActionListener(this);
- if ((analyzer != null) && (analyzer.isPeaksEnabled())) peaksBox.setSelected(true);
- else peaksBox.setSelected(false);
- spectrumPane.add(peaksBox);
- // Analyzer falloff.
- JLabel analyzerFalloffLabel = new JLabel(getResource("spectrum.analyzer.falloff"));
- analyzerFalloffLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
- spectrumPane.add(analyzerFalloffLabel);
- int minDecay = (int) (SpectrumTimeAnalyzer.MIN_SPECTRUM_ANALYSER_DECAY * 100);
- int maxDecay = (int) (SpectrumTimeAnalyzer.MAX_SPECTRUM_ANALYSER_DECAY * 100);
- int decay = (maxDecay + minDecay) / 2;
- if (analyzer != null)
- {
- decay = (int) (analyzer.getSpectrumAnalyserDecay() * 100);
- }
- analyzerFalloff = new JSlider(JSlider.HORIZONTAL, minDecay, maxDecay, decay);
- analyzerFalloff.setMajorTickSpacing(1);
- analyzerFalloff.setPaintTicks(true);
- analyzerFalloff.setMaximumSize(new Dimension(150, analyzerFalloff.getPreferredSize().height));
- analyzerFalloff.setAlignmentX(Component.LEFT_ALIGNMENT);
- analyzerFalloff.setSnapToTicks(true);
- analyzerFalloff.addChangeListener(this);
- spectrumPane.add(analyzerFalloff);
- // Peaks falloff.
- JLabel peaksFalloffLabel = new JLabel(getResource("spectrum.peaks.falloff"));
- peaksFalloffLabel.setAlignmentX(Component.LEFT_ALIGNMENT);
- spectrumPane.add(peaksFalloffLabel);
- int peakDelay = SpectrumTimeAnalyzer.DEFAULT_SPECTRUM_ANALYSER_PEAK_DELAY;
- int fps = SpectrumTimeAnalyzer.DEFAULT_FPS;
- if (analyzer != null)
- {
- fps = analyzer.getFps();
- peakDelay = analyzer.getPeakDelay();
- }
- peaksFalloff = new JSlider(JSlider.HORIZONTAL, 0, 4, computeSliderValue(peakDelay, fps));
- peaksFalloff.setMajorTickSpacing(1);
- peaksFalloff.setPaintTicks(true);
- peaksFalloff.setSnapToTicks(true);
- Hashtable labelTable = new Hashtable();
- labelTable.put(new Integer(0), new JLabel("Slow"));
- labelTable.put(new Integer(4), new JLabel("Fast"));
- peaksFalloff.setLabelTable(labelTable);
- peaksFalloff.setPaintLabels(true);
- peaksFalloff.setMaximumSize(new Dimension(150, peaksFalloff.getPreferredSize().height));
- peaksFalloff.setAlignmentX(Component.LEFT_ALIGNMENT);
- peaksFalloff.addChangeListener(this);
- spectrumPane.add(peaksFalloff);
- // Spectrum pane
- spectrumPane.setBorder(new TitledBorder(getResource("spectrum.title")));
- if (getResource("oscilloscope.title") != null)
- {
- oscilloPane = new JPanel();
- oscilloPane.setBorder(new TitledBorder(getResource("oscilloscope.title")));
- }
- GridBagLayout layout = new GridBagLayout();
- setLayout(layout);
- GridBagConstraints cnts = new GridBagConstraints();
- cnts.fill = GridBagConstraints.BOTH;
- cnts.gridwidth = 2;
- cnts.weightx = 2.0;
- cnts.weighty = 0.25;
- cnts.gridx = 0;
- cnts.gridy = 0;
- add(modePane, cnts);
- cnts.gridwidth = 1;
- cnts.weightx = 1.0;
- cnts.weighty = 1.0;
- cnts.gridx = 0;
- cnts.gridy = 1;
- add(spectrumPane, cnts);
- cnts.weightx = 1.0;
- cnts.weighty = 1.0;
- cnts.gridx = 1;
- cnts.gridy = 1;
- if (oscilloPane != null) add(oscilloPane, cnts);
- if (analyzer == null)
- {
- disablePane(modePane);
- disablePane(spectrumPane);
- disablePane(oscilloPane);
- }
- loaded = true;
- }
- }
-
- private void disablePane(JPanel pane)
- {
- if (pane != null)
- {
- Component[] cpns = pane.getComponents();
- if (cpns != null)
- {
- for (int i = 0; i < cpns.length; i++)
- {
- cpns[i].setEnabled(false);
- }
- }
- }
- }
-
- public void actionPerformed(ActionEvent ev)
- {
- if (player != null)
- {
- SpectrumTimeAnalyzer analyzer = player.getSkin().getAcAnalyzer();
- if (analyzer != null)
- {
- if (ev.getSource().equals(spectrumMode))
- {
- analyzer.setDisplayMode(SpectrumTimeAnalyzer.DISPLAY_MODE_SPECTRUM_ANALYSER);
- analyzer.startDSP(null);
- }
- else if (ev.getSource().equals(oscilloMode))
- {
- analyzer.setDisplayMode(SpectrumTimeAnalyzer.DISPLAY_MODE_SCOPE);
- analyzer.startDSP(null);
- }
- else if (ev.getSource().equals(offMode))
- {
- analyzer.setDisplayMode(SpectrumTimeAnalyzer.DISPLAY_MODE_OFF);
- analyzer.closeDSP();
- analyzer.repaint();
- }
- else if (ev.getSource().equals(peaksBox))
- {
- if (peaksBox.isSelected()) analyzer.setPeaksEnabled(true);
- else analyzer.setPeaksEnabled(false);
- }
- }
- }
- }
-
- public void stateChanged(ChangeEvent ce)
- {
- if (player != null)
- {
- SpectrumTimeAnalyzer analyzer = player.getSkin().getAcAnalyzer();
- if (analyzer != null)
- {
- if (ce.getSource() == analyzerFalloff)
- {
- if (!analyzerFalloff.getValueIsAdjusting())
- {
- analyzer.setSpectrumAnalyserDecay(analyzerFalloff.getValue() * 1.0f / 100.0f);
- }
- }
- else if (ce.getSource() == peaksFalloff)
- {
- if (!peaksFalloff.getValueIsAdjusting())
- {
- analyzer.setPeakDelay(computeDelay(peaksFalloff.getValue(), analyzer.getFps()));
- }
- }
- }
- }
- }
-
- private int computeDelay(int slidervalue, int fps)
- {
- float p = SpectrumTimeAnalyzer.DEFAULT_SPECTRUM_ANALYSER_PEAK_DELAY_FPS_RATIO;
- float n = SpectrumTimeAnalyzer.DEFAULT_SPECTRUM_ANALYSER_PEAK_DELAY_FPS_RATIO_RANGE;
- int delay = Math.round(((-n * slidervalue * 1.0f / 2.0f) + p + n) * fps);
- return delay;
- }
-
- private int computeSliderValue(int delay, int fps)
- {
- float p = SpectrumTimeAnalyzer.DEFAULT_SPECTRUM_ANALYSER_PEAK_DELAY_FPS_RATIO;
- float n = SpectrumTimeAnalyzer.DEFAULT_SPECTRUM_ANALYSER_PEAK_DELAY_FPS_RATIO_RANGE;
- int value = (int) Math.round((((p - (delay * 1.0 / fps * 1.0f)) * 2 / n) + 2));
- return value;
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/util/ui/VisualizationPreference.java b/java/src/javazoom/jlgui/player/amp/util/ui/VisualizationPreference.java
deleted file mode 100644
index 9c02fa8..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ui/VisualizationPreference.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * VisualizationPreference.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.util.ui;
-
-import java.util.ResourceBundle;
-import javax.swing.border.TitledBorder;
-
-public class VisualizationPreference extends PreferenceItem
-{
- private static VisualizationPreference instance = null;
-
- private VisualizationPreference()
- {
- }
-
- public static VisualizationPreference getInstance()
- {
- if (instance == null)
- {
- instance = new VisualizationPreference();
- }
- return instance;
- }
-
- public void loadUI()
- {
- if (loaded == false)
- {
- bundle = ResourceBundle.getBundle("javazoom/jlgui/player/amp/util/ui/visualization");
- setBorder(new TitledBorder(getResource("title")));
- loaded = true;
- }
- }
-}
diff --git a/java/src/javazoom/jlgui/player/amp/util/ui/device.properties b/java/src/javazoom/jlgui/player/amp/util/ui/device.properties
deleted file mode 100644
index 279243a..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ui/device.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-title=JavaSound Device
-line.buffer.size=Line buffer size : {0} bytes
-help=Note : Device update will occur on player restart only.
-
-
-
diff --git a/java/src/javazoom/jlgui/player/amp/util/ui/output.properties b/java/src/javazoom/jlgui/player/amp/util/ui/output.properties
deleted file mode 100644
index c54c46a..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ui/output.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-title=Output plugins
-
diff --git a/java/src/javazoom/jlgui/player/amp/util/ui/preferences.properties b/java/src/javazoom/jlgui/player/amp/util/ui/preferences.properties
deleted file mode 100644
index 3787d34..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ui/preferences.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-title=Preferences
-
-tree.options=Options
-tree.options.device=Device
-tree.options.device.impl=javazoom.jlgui.player.amp.util.ui.DevicePreference
-tree.options.visual=Visual
-tree.options.visual.impl=javazoom.jlgui.player.amp.util.ui.VisualPreference
-tree.options.system=System
-tree.options.system.impl=javazoom.jlgui.player.amp.util.ui.SystemPreference
-tree.options.filetypes=File Types
-tree.options.filetypes.impl=javazoom.jlgui.player.amp.util.ui.TypePreference
-
-#tree.plugins=Plugins
-#tree.plugins.visualization=Visualization
-#tree.plugins.visualization.impl=javazoom.jlgui.player.amp.util.ui.VisualizationPreference
-
-#tree.plugins.output=Output
-#tree.plugins.output.impl=javazoom.jlgui.player.amp.util.ui.OutputPreference
-
-#tree.plugins.drm=DRM
-#tree.plugins.drm.impl=javazoom.jlgui.player.amp.util.ui.EmptyPreference
-
-tree.skins=Skins
-tree.skins.browser=Browser
-tree.skins.browser.impl=javazoom.jlgui.player.amp.util.ui.SkinPreference
-
-button.close=Close
diff --git a/java/src/javazoom/jlgui/player/amp/util/ui/skin.properties b/java/src/javazoom/jlgui/player/amp/util/ui/skin.properties
deleted file mode 100644
index 6433f43..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ui/skin.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-title=Skins
-
-browser.directory.button=Set skins directory ...
-
diff --git a/java/src/javazoom/jlgui/player/amp/util/ui/system.properties b/java/src/javazoom/jlgui/player/amp/util/ui/system.properties
deleted file mode 100644
index a0f7dd4..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ui/system.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-title=System properties
-
-
diff --git a/java/src/javazoom/jlgui/player/amp/util/ui/type.properties b/java/src/javazoom/jlgui/player/amp/util/ui/type.properties
deleted file mode 100644
index 061309d..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ui/type.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-title=Supported File types
-
diff --git a/java/src/javazoom/jlgui/player/amp/util/ui/visual.properties b/java/src/javazoom/jlgui/player/amp/util/ui/visual.properties
deleted file mode 100644
index be5fe0c..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ui/visual.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-title=Built-in visual options
-
-mode.title=Mode
-mode.spectrum=Spectrum analyzer
-mode.oscilloscope=Oscilloscope
-mode.off=Off
-mode.refresh.rate=50
-
-spectrum.title=Spectrum analyzer
-spectrum.peaks=Peaks
-spectrum.analyzer.falloff=Analyzer falloff :
-spectrum.peaks.falloff=Peaks falloff :
-
-#oscilloscope.title=Oscilloscope
-
diff --git a/java/src/javazoom/jlgui/player/amp/util/ui/visualization.properties b/java/src/javazoom/jlgui/player/amp/util/ui/visualization.properties
deleted file mode 100644
index 7c1585b..0000000
--- a/java/src/javazoom/jlgui/player/amp/util/ui/visualization.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-title=Visualization plugins
-
diff --git a/java/src/javazoom/jlgui/player/amp/visual/ui/SpectrumTimeAnalyzer.java b/java/src/javazoom/jlgui/player/amp/visual/ui/SpectrumTimeAnalyzer.java
deleted file mode 100644
index 294dc82..0000000
--- a/java/src/javazoom/jlgui/player/amp/visual/ui/SpectrumTimeAnalyzer.java
+++ /dev/null
@@ -1,775 +0,0 @@
-/*
- * SpectrumTimeAnalyzer.
- *
- * JavaZOOM : jlgui@javazoom.net
- * http://www.javazoom.net
- *
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
-package javazoom.jlgui.player.amp.visual.ui;
-
-import java.awt.Color;
-import java.awt.Cursor;
-import java.awt.Graphics;
-import java.awt.Image;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.io.BufferedReader;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.StringTokenizer;
-import javax.sound.sampled.SourceDataLine;
-import javax.swing.JPanel;
-import javazoom.jlgui.player.amp.skin.AbsoluteConstraints;
-import kj.dsp.KJDigitalSignalProcessingAudioDataConsumer;
-import kj.dsp.KJDigitalSignalProcessor;
-import kj.dsp.KJFFT;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public class SpectrumTimeAnalyzer extends JPanel implements KJDigitalSignalProcessor
-{
- private static Log log = LogFactory.getLog(SpectrumTimeAnalyzer.class);
- public static final int DISPLAY_MODE_SCOPE = 0;
- public static final int DISPLAY_MODE_SPECTRUM_ANALYSER = 1;
- public static final int DISPLAY_MODE_OFF = 2;
- public static final int DEFAULT_WIDTH = 256;
- public static final int DEFAULT_HEIGHT = 128;
- public static final int DEFAULT_FPS = 50;
- public static final int DEFAULT_SPECTRUM_ANALYSER_FFT_SAMPLE_SIZE = 512;
- public static final int DEFAULT_SPECTRUM_ANALYSER_BAND_COUNT = 19;
- public static final float DEFAULT_SPECTRUM_ANALYSER_DECAY = 0.05f;
- public static final int DEFAULT_SPECTRUM_ANALYSER_PEAK_DELAY = 20;
- public static final float DEFAULT_SPECTRUM_ANALYSER_PEAK_DELAY_FPS_RATIO = 0.4f;
- public static final float DEFAULT_SPECTRUM_ANALYSER_PEAK_DELAY_FPS_RATIO_RANGE = 0.1f;
- public static final float MIN_SPECTRUM_ANALYSER_DECAY = 0.02f;
- public static final float MAX_SPECTRUM_ANALYSER_DECAY = 0.08f;
- public static final Color DEFAULT_BACKGROUND_COLOR = new Color(0, 0, 128);
- public static final Color DEFAULT_SCOPE_COLOR = new Color(255, 192, 0);
- public static final float DEFAULT_VU_METER_DECAY = 0.02f;
- private Image bi;
- private int displayMode = DISPLAY_MODE_SCOPE;
- private Color scopeColor = DEFAULT_SCOPE_COLOR;
- private Color[] spectrumAnalyserColors = getDefaultSpectrumAnalyserColors();
- private KJDigitalSignalProcessingAudioDataConsumer dsp = null;
- private boolean dspStarted = false;
- private Color peakColor = null;
- private int[] peaks = new int[DEFAULT_SPECTRUM_ANALYSER_BAND_COUNT];
- private int[] peaksDelay = new int[DEFAULT_SPECTRUM_ANALYSER_BAND_COUNT];
- private int peakDelay = DEFAULT_SPECTRUM_ANALYSER_PEAK_DELAY;
- private boolean peaksEnabled = true;
- private List visColors = null;
- private int barOffset = 1;
- private int width;
- private int height;
- private int height_2;
- // -- Spectrum analyser variables.
- private KJFFT fft;
- private float[] old_FFT;
- private int saFFTSampleSize;
- private int saBands;
- private float saColorScale;
- private float saMultiplier;
- private float saDecay = DEFAULT_SPECTRUM_ANALYSER_DECAY;
- private float sad;
- private SourceDataLine m_line = null;
- // -- VU Meter
- private float oldLeft;
- private float oldRight;
- // private float vuAverage;
- // private float vuSamples;
- private float vuDecay = DEFAULT_VU_METER_DECAY;
- private float vuColorScale;
- // -- FPS calulations.
- private long lfu = 0;
- private int fc = 0;
- private int fps = DEFAULT_FPS;
- private boolean showFPS = false;
-
- private AbsoluteConstraints constraints = null;
-
- // private Runnable PAINT_SYNCHRONIZER = new AWTPaintSynchronizer();
- public SpectrumTimeAnalyzer()
- {
- setOpaque(false);
- initialize();
- }
-
- public void setConstraints(AbsoluteConstraints cnts)
- {
- constraints = cnts;
- }
-
- public AbsoluteConstraints getConstraints()
- {
- return constraints;
- }
-
- public boolean isPeaksEnabled()
- {
- return peaksEnabled;
- }
-
- public void setPeaksEnabled(boolean peaksEnabled)
- {
- this.peaksEnabled = peaksEnabled;
- }
-
- public int getFps()
- {
- return fps;
- }
-
- public void setFps(int fps)
- {
- this.fps = fps;
- }
-
- /**
- * Starts DSP.
- * @param line
- */
- public void startDSP(SourceDataLine line)
- {
- if (displayMode == DISPLAY_MODE_OFF) return;
- if (line != null) m_line = line;
- if (dsp == null)
- {
- dsp = new KJDigitalSignalProcessingAudioDataConsumer(2048, fps);
- dsp.add(this);
- }
- if ((dsp != null) && (m_line != null))
- {
- if (dspStarted == true)
- {
- stopDSP();
- }
- dsp.start(m_line);
- dspStarted = true;
- log.debug("DSP started");
- }
- }
-
- /**
- * Stop DSP.
- */
- public void stopDSP()
- {
- if (dsp != null)
- {
- dsp.stop();
- dspStarted = false;
- log.debug("DSP stopped");
- }
- }
-
- /**
- * Close DSP
- */
- public void closeDSP()
- {
- if (dsp != null)
- {
- stopDSP();
- dsp = null;
- log.debug("DSP closed");
- }
- }
-
- /**
- * Setup DSP.
- * @param line
- */
- public void setupDSP(SourceDataLine line)
- {
- if (dsp != null)
- {
- int channels = line.getFormat().getChannels();
- if (channels == 1) dsp.setChannelMode(KJDigitalSignalProcessingAudioDataConsumer.CHANNEL_MODE_MONO);
- else dsp.setChannelMode(KJDigitalSignalProcessingAudioDataConsumer.CHANNEL_MODE_STEREO);
- int bits = line.getFormat().getSampleSizeInBits();
- if (bits == 8) dsp.setSampleType(KJDigitalSignalProcessingAudioDataConsumer.SAMPLE_TYPE_EIGHT_BIT);
- else dsp.setSampleType(KJDigitalSignalProcessingAudioDataConsumer.SAMPLE_TYPE_SIXTEEN_BIT);
- }
- }
-
- /**
- * Write PCM data to DSP.
- * @param pcmdata
- */
- public void writeDSP(byte[] pcmdata)
- {
- if ((dsp != null) && (dspStarted == true)) dsp.writeAudioData(pcmdata);
- }
-
- /**
- * Return DSP.
- * @return
- */
- public KJDigitalSignalProcessingAudioDataConsumer getDSP()
- {
- return dsp;
- }
-
- /**
- * Set visual colors from skin.
- * @param viscolor
- */
- public void setVisColor(String viscolor)
- {
- ArrayList visColors = new ArrayList();
- viscolor = viscolor.toLowerCase();
- ByteArrayInputStream in = new ByteArrayInputStream(viscolor.getBytes());
- BufferedReader bin = new BufferedReader(new InputStreamReader(in));
- try
- {
- String line = null;
- while ((line = bin.readLine()) != null)
- {
- visColors.add(getColor(line));
- }
- Color[] colors = new Color[visColors.size()];
- visColors.toArray(colors);
- Color[] specColors = new Color[15];
- System.arraycopy(colors, 2, specColors, 0, 15);
- List specList = Arrays.asList(specColors);
- Collections.reverse(specList);
- specColors = (Color[]) specList.toArray(specColors);
- setSpectrumAnalyserColors(specColors);
- setBackground((Color) visColors.get(0));
- if (visColors.size()>23) setPeakColor((Color) visColors.get(23));
- if (visColors.size()>18) setScopeColor((Color) visColors.get(18));
- }
- catch (IOException ex)
- {
- log.warn("Cannot parse viscolors", ex);
- }
- finally
- {
- try
- {
- if (bin != null) bin.close();
- }
- catch (IOException e)
- {
- }
- }
- }
-
- /**
- * Set visual peak color.
- * @param c
- */
- public void setPeakColor(Color c)
- {
- peakColor = c;
- }
-
- /**
- * Set peak falloff delay.
- * @param framestowait
- */
- public void setPeakDelay(int framestowait)
- {
- int min = (int) Math.round((DEFAULT_SPECTRUM_ANALYSER_PEAK_DELAY_FPS_RATIO - DEFAULT_SPECTRUM_ANALYSER_PEAK_DELAY_FPS_RATIO_RANGE) * fps);
- int max = (int) Math.round((DEFAULT_SPECTRUM_ANALYSER_PEAK_DELAY_FPS_RATIO + DEFAULT_SPECTRUM_ANALYSER_PEAK_DELAY_FPS_RATIO_RANGE) * fps);
- if ((framestowait >= min) && (framestowait <= max))
- {
- peakDelay = framestowait;
- }
- else
- {
- peakDelay = (int) Math.round(DEFAULT_SPECTRUM_ANALYSER_PEAK_DELAY_FPS_RATIO * fps);
- }
- }
-
- /**
- * Return peak falloff delay
- * @return int framestowait
- */
- public int getPeakDelay()
- {
- return peakDelay;
- }
-
- /**
- * Convert string to color.
- * @param linecolor
- * @return
- */
- public Color getColor(String linecolor)
- {
- Color color = Color.BLACK;
- StringTokenizer st = new StringTokenizer(linecolor, ",");
- int red = 0, green = 0, blue = 0;
- try
- {
- if (st.hasMoreTokens()) red = Integer.parseInt(st.nextToken().trim());
- if (st.hasMoreTokens()) green = Integer.parseInt(st.nextToken().trim());
- if (st.hasMoreTokens())
- {
- String blueStr = st.nextToken().trim();
- if (blueStr.length() > 3) blueStr = (blueStr.substring(0, 3)).trim();
- blue = Integer.parseInt(blueStr);
- }
- color = new Color(red, green, blue);
- }
- catch (NumberFormatException e)
- {
- log.debug("Cannot parse viscolor : "+e.getMessage());
- }
- return color;
- }
-
- private void computeColorScale()
- {
- saColorScale = ((float) spectrumAnalyserColors.length / height) * barOffset * 1.0f;
- vuColorScale = ((float) spectrumAnalyserColors.length / (width - 32)) * 2.0f;
- }
-
- private void computeSAMultiplier()
- {
- saMultiplier = (saFFTSampleSize / 2) / saBands;
- }
-
- private void drawScope(Graphics pGrp, float[] pSample)
- {
- pGrp.setColor(scopeColor);
- int wLas = (int) (pSample[0] * (float) height_2) + height_2;
- int wSt = 2;
- for (int a = wSt, c = 0; c < width; a += wSt, c++)
- {
- int wAs = (int) (pSample[a] * (float) height_2) + height_2;
- pGrp.drawLine(c, wLas, c + 1, wAs);
- wLas = wAs;
- }
- }
-
- private void drawSpectrumAnalyser(Graphics pGrp, float[] pSample, float pFrrh)
- {
- float c = 0;
- float[] wFFT = fft.calculate(pSample);
- float wSadfrr = (saDecay * pFrrh);
- float wBw = ((float) width / (float) saBands);
- for (int a = 0, bd = 0; bd < saBands; a += saMultiplier, bd++)
- {
- float wFs = 0;
- // -- Average out nearest bands.
- for (int b = 0; b < saMultiplier; b++)
- {
- wFs += wFFT[a + b];
- }
- // -- Log filter.
- wFs = (wFs * (float) Math.log(bd + 2));
- if (wFs > 1.0f)
- {
- wFs = 1.0f;
- }
- // -- Compute SA decay...
- if (wFs >= (old_FFT[a] - wSadfrr))
- {
- old_FFT[a] = wFs;
- }
- else
- {
- old_FFT[a] -= wSadfrr;
- if (old_FFT[a] < 0)
- {
- old_FFT[a] = 0;
- }
- wFs = old_FFT[a];
- }
- drawSpectrumAnalyserBar(pGrp, (int) c, height, (int) wBw - 1, (int) (wFs * height), bd);
- c += wBw;
- }
- }
-
- private void drawVUMeter(Graphics pGrp, float[] pLeft, float[] pRight, float pFrrh)
- {
- if (displayMode == DISPLAY_MODE_OFF) return;
- float wLeft = 0.0f;
- float wRight = 0.0f;
- float wSadfrr = (vuDecay * pFrrh);
- for (int a = 0; a < pLeft.length; a++)
- {
- wLeft += Math.abs(pLeft[a]);
- wRight += Math.abs(pRight[a]);
- }
- wLeft = ((wLeft * 2.0f) / (float) pLeft.length);
- wRight = ((wRight * 2.0f) / (float) pRight.length);
- if (wLeft > 1.0f)
- {
- wLeft = 1.0f;
- }
- if (wRight > 1.0f)
- {
- wRight = 1.0f;
- }
- // vuAverage += ( ( wLeft + wRight ) / 2.0f );
- // vuSamples++;
- //
- // if ( vuSamples > 128 ) {
- // vuSamples /= 2.0f;
- // vuAverage /= 2.0f;
- // }
- if (wLeft >= (oldLeft - wSadfrr))
- {
- oldLeft = wLeft;
- }
- else
- {
- oldLeft -= wSadfrr;
- if (oldLeft < 0)
- {
- oldLeft = 0;
- }
- }
- if (wRight >= (oldRight - wSadfrr))
- {
- oldRight = wRight;
- }
- else
- {
- oldRight -= wSadfrr;
- if (oldRight < 0)
- {
- oldRight = 0;
- }
- }
- int wHeight = (height >> 1) - 24;
- drawVolumeMeterBar(pGrp, 16, 16, (int) (oldLeft * (float) (width - 32)), wHeight);
- // drawVolumeMeterBar( pGrp, 16, wHeight + 22, (int)( ( vuAverage / vuSamples ) * (float)( width - 32 ) ), 4 );
- drawVolumeMeterBar(pGrp, 16, wHeight + 32, (int) (oldRight * (float) (width - 32)), wHeight);
- // pGrp.fillRect( 16, 16, (int)( oldLeft * (float)( width - 32 ) ), wHeight );
- // pGrp.fillRect( 16, 64, (int)( oldRight * (float)( width - 32 ) ), wHeight );
- }
-
- private void drawSpectrumAnalyserBar(Graphics pGraphics, int pX, int pY, int pWidth, int pHeight, int band)
- {
- float c = 0;
- for (int a = pY; a >= pY - pHeight; a -= barOffset)
- {
- c += saColorScale;
- if (c < spectrumAnalyserColors.length)
- {
- pGraphics.setColor(spectrumAnalyserColors[(int) c]);
- }
- pGraphics.fillRect(pX, a, pWidth, 1);
- }
- if ((peakColor != null) && (peaksEnabled == true))
- {
- pGraphics.setColor(peakColor);
- if (pHeight > peaks[band])
- {
- peaks[band] = pHeight;
- peaksDelay[band] = peakDelay;
- }
- else
- {
- peaksDelay[band]--;
- if (peaksDelay[band] < 0) peaks[band]--;
- if (peaks[band] < 0) peaks[band] = 0;
- }
- pGraphics.fillRect(pX, pY - peaks[band], pWidth, 1);
- }
- }
-
- private void drawVolumeMeterBar(Graphics pGraphics, int pX, int pY, int pWidth, int pHeight)
- {
- float c = 0;
- for (int a = pX; a <= pX + pWidth; a += 2)
- {
- c += vuColorScale;
- if (c < 256.0f)
- {
- pGraphics.setColor(spectrumAnalyserColors[(int) c]);
- }
- pGraphics.fillRect(a, pY, 1, pHeight);
- }
- }
-
- private synchronized Image getDoubleBuffer()
- {
- if (bi == null || (bi.getWidth(null) != getSize().width || bi.getHeight(null) != getSize().height))
- {
- width = getSize().width;
- height = getSize().height;
- height_2 = height >> 1;
- computeColorScale();
- bi = getGraphicsConfiguration().createCompatibleVolatileImage(width, height);
- }
- return bi;
- }
-
- public static Color[] getDefaultSpectrumAnalyserColors()
- {
- Color[] wColors = new Color[256];
- for (int a = 0; a < 128; a++)
- {
- wColors[a] = new Color(0, (a >> 1) + 192, 0);
- }
- for (int a = 0; a < 64; a++)
- {
- wColors[a + 128] = new Color(a << 2, 255, 0);
- }
- for (int a = 0; a < 64; a++)
- {
- wColors[a + 192] = new Color(255, 255 - (a << 2), 0);
- }
- return wColors;
- }
-
- /**
- * @return Returns the current display mode, DISPLAY_MODE_SCOPE or DISPLAY_MODE_SPECTRUM_ANALYSER.
- */
- public int getDisplayMode()
- {
- return displayMode;
- }
-
- /**
- * @return Returns the current number of bands displayed by the spectrum analyser.
- */
- public int getSpectrumAnalyserBandCount()
- {
- return saBands;
- }
-
- /**
- * @return Returns the decay rate of the spectrum analyser's bands.
- */
- public float getSpectrumAnalyserDecay()
- {
- return saDecay;
- }
-
- /**
- * @return Returns the color the scope is rendered in.
- */
- public Color getScopeColor()
- {
- return scopeColor;
- }
-
- /**
- * @return Returns the color scale used to render the spectrum analyser bars.
- */
- public Color[] getSpectrumAnalyserColors()
- {
- return spectrumAnalyserColors;
- }
-
- private void initialize()
- {
- setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
- setBackground(DEFAULT_BACKGROUND_COLOR);
- prepareDisplayToggleListener();
- setSpectrumAnalyserBandCount(DEFAULT_SPECTRUM_ANALYSER_BAND_COUNT);
- setSpectrumAnalyserFFTSampleSize(DEFAULT_SPECTRUM_ANALYSER_FFT_SAMPLE_SIZE);
- }
-
- /**
- * @return Returns 'true' if "Frames Per Second" are being calculated and displayed.
- */
- public boolean isShowingFPS()
- {
- return showFPS;
- }
-
- public void paintComponent(Graphics pGraphics)
- {
- if (displayMode == DISPLAY_MODE_OFF) return;
- if (dspStarted)
- {
- pGraphics.drawImage(getDoubleBuffer(), 0, 0, null);
- }
- else
- {
- super.paintComponent(pGraphics);
- }
- }
-
- private void prepareDisplayToggleListener()
- {
- setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
- addMouseListener(new MouseAdapter()
- {
- public void mouseClicked(MouseEvent pEvent)
- {
- if (pEvent.getButton() == MouseEvent.BUTTON1)
- {
- if (displayMode + 1 > 1)
- {
- displayMode = 0;
- }
- else
- {
- displayMode++;
- }
- }
- }
- });
- }
-
- /* (non-Javadoc)
- * @see kj.dsp.KJDigitalSignalProcessor#process(float[], float[], float)
- */
- public synchronized void process(float[] pLeft, float[] pRight, float pFrameRateRatioHint)
- {
- if (displayMode == DISPLAY_MODE_OFF) return;
- Graphics wGrp = getDoubleBuffer().getGraphics();
- wGrp.setColor(getBackground());
- wGrp.fillRect(0, 0, getSize().width, getSize().height);
- switch (displayMode)
- {
- case DISPLAY_MODE_SCOPE:
- drawScope(wGrp, stereoMerge(pLeft, pRight));
- break;
- case DISPLAY_MODE_SPECTRUM_ANALYSER:
- drawSpectrumAnalyser(wGrp, stereoMerge(pLeft, pRight), pFrameRateRatioHint);
- break;
- case DISPLAY_MODE_OFF:
- drawVUMeter(wGrp, pLeft, pRight, pFrameRateRatioHint);
- break;
- }
- // -- Show FPS if necessary.
- if (showFPS)
- {
- // -- Calculate FPS.
- if (System.currentTimeMillis() >= lfu + 1000)
- {
- lfu = System.currentTimeMillis();
- fps = fc;
- fc = 0;
- }
- fc++;
- wGrp.setColor(Color.yellow);
- wGrp.drawString("FPS: " + fps + " (FRRH: " + pFrameRateRatioHint + ")", 0, height - 1);
- }
- if (getGraphics() != null) getGraphics().drawImage(getDoubleBuffer(), 0, 0, null);
- // repaint();
- // try {
- // EventQueue.invokeLater( new AWTPaintSynchronizer() );
- // } catch ( Exception pEx ) {
- // // -- Ignore exception.
- // pEx.printStackTrace();
- // }
- }
-
- /**
- * Sets the current display mode.
- *
- * @param pMode Must be either DISPLAY_MODE_SCOPE or DISPLAY_MODE_SPECTRUM_ANALYSER.
- */
- public synchronized void setDisplayMode(int pMode)
- {
- displayMode = pMode;
- }
-
- /**
- * Sets the color of the scope.
- *
- * @param pColor
- */
- public synchronized void setScopeColor(Color pColor)
- {
- scopeColor = pColor;
- }
-
- /**
- * When 'true' is passed as a parameter, will overlay the "Frames Per Seconds"
- * achieved by the component.
- *
- * @param pState
- */
- public synchronized void setShowFPS(boolean pState)
- {
- showFPS = pState;
- }
-
- /**
- * Sets the numbers of bands rendered by the spectrum analyser.
- *
- * @param pCount Cannot be more than half the "FFT sample size".
- */
- public synchronized void setSpectrumAnalyserBandCount(int pCount)
- {
- saBands = pCount;
- peaks = new int[saBands];
- peaksDelay = new int[saBands];
- computeSAMultiplier();
- }
-
- /**
- * Sets the spectrum analyser band decay rate.
- *
- * @param pDecay Must be a number between 0.0 and 1.0 exclusive.
- */
- public synchronized void setSpectrumAnalyserDecay(float pDecay)
- {
- if ((pDecay >= MIN_SPECTRUM_ANALYSER_DECAY) && (pDecay <= MAX_SPECTRUM_ANALYSER_DECAY))
- {
- saDecay = pDecay;
- }
- else saDecay = DEFAULT_SPECTRUM_ANALYSER_DECAY;
- }
-
- /**
- * Sets the spectrum analyser color scale.
- *
- * @param pColors Any amount of colors may be used. Must not be null.
- */
- public synchronized void setSpectrumAnalyserColors(Color[] pColors)
- {
- spectrumAnalyserColors = pColors;
- computeColorScale();
- }
-
- /**
- * Sets the FFT sample size to be just for calculating the spectrum analyser
- * values. The default is 512.
- *
- * @param pSize Cannot be more than the size of the sample provided by the DSP.
- */
- public synchronized void setSpectrumAnalyserFFTSampleSize(int pSize)
- {
- saFFTSampleSize = pSize;
- fft = new KJFFT(saFFTSampleSize);
- old_FFT = new float[saFFTSampleSize];
- computeSAMultiplier();
- }
-
- private float[] stereoMerge(float[] pLeft, float[] pRight)
- {
- for (int a = 0; a < pLeft.length; a++)
- {
- pLeft[a] = (pLeft[a] + pRight[a]) / 2.0f;
- }
- return pLeft;
- }
-
- /*public void update(Graphics pGraphics)
- {
- // -- Prevent AWT from clearing background.
- paint(pGraphics);
- }*/
-}
diff --git a/java/src/mimis/Application.java b/java/src/mimis/Application.java
index d27f488..29c9d71 100644
--- a/java/src/mimis/Application.java
+++ b/java/src/mimis/Application.java
@@ -1,6 +1,7 @@
package mimis;
import mimis.event.EventHandler;
+import mimis.exception.worker.DeactivateException;
import mimis.manager.Titled;
public abstract class Application extends EventHandler implements Titled, Exitable {
@@ -16,10 +17,14 @@ public abstract class Application extends EventHandler implements Titled, Exitab
return title;
}
- public void exit() {
+ public void stop() {
if (active()) {
- deactivate();
+ try {
+ deactivate();
+ } catch (DeactivateException e) {
+ log.error(e);
+ }
}
- stop();
+ super.stop();
}
}
\ No newline at end of file
diff --git a/java/src/mimis/Client.java b/java/src/mimis/Client.java
index b5866f1..b458197 100644
--- a/java/src/mimis/Client.java
+++ b/java/src/mimis/Client.java
@@ -6,7 +6,6 @@ import mimis.device.jintellitype.JIntellitypeDevice;
import mimis.device.lirc.LircDevice;
import mimis.device.network.NetworkDevice;
import mimis.device.panel.PanelDevice;
-import mimis.device.player.PlayerDevice;
import mimis.device.wiimote.WiimoteDevice;
import mimis.event.EventRouter;
import mimis.event.router.GlobalRouter;
@@ -36,7 +35,6 @@ public class Client {
new WiimoteDevice(),
new PanelDevice(),
new JIntellitypeDevice(),
- new PlayerDevice(),
new RumblepadDevice(),
new Extreme3DDevice(),
new NetworkDevice()};
diff --git a/java/src/mimis/Device.java b/java/src/mimis/Device.java
index cfa5766..46c5ccc 100644
--- a/java/src/mimis/Device.java
+++ b/java/src/mimis/Device.java
@@ -4,6 +4,7 @@ import mimis.event.EventHandler;
import mimis.event.Task;
import mimis.event.task.Continuous;
import mimis.event.task.Stopper;
+import mimis.exception.worker.DeactivateException;
import mimis.macro.Sequence;
import mimis.macro.SequenceListener;
import mimis.macro.State;
@@ -23,8 +24,11 @@ public abstract class Device extends EventHandler implements Titled, Exitable {
public Device(String title) {
this.title = title;
- active = false;
+ }
+
+ public void start() {
sequenceListener = new SequenceListener(this);
+ super.start();
}
/* Register macro's */
@@ -84,9 +88,13 @@ public abstract class Device extends EventHandler implements Titled, Exitable {
return title;
}
- public void exit() {
+ public void stop() {
if (active()) {
- deactivate();
+ try {
+ deactivate();
+ } catch (DeactivateException e) {
+ log.error(e);
+ }
}
stop();
}
diff --git a/java/src/mimis/Exitable.java b/java/src/mimis/Exitable.java
index 86d5ea6..8ead9d4 100644
--- a/java/src/mimis/Exitable.java
+++ b/java/src/mimis/Exitable.java
@@ -1,5 +1,5 @@
package mimis;
public interface Exitable {
- public void exit();
+ public void stop();
}
diff --git a/java/src/mimis/GUI.java b/java/src/mimis/GUI.java
index 5a1d398..244eee6 100644
--- a/java/src/mimis/GUI.java
+++ b/java/src/mimis/GUI.java
@@ -72,7 +72,7 @@ public class GUI extends JFrame {
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
log.debug("Window closing");
exit();
- mimis.exit();
+ mimis.stop();
}
}
diff --git a/java/src/mimis/Main.java b/java/src/mimis/Main.java
index 5f154b2..b04a679 100644
--- a/java/src/mimis/Main.java
+++ b/java/src/mimis/Main.java
@@ -12,10 +12,10 @@ import mimis.device.jintellitype.JIntellitypeDevice;
import mimis.device.lirc.LircDevice;
import mimis.device.network.NetworkDevice;
import mimis.device.panel.PanelDevice;
-import mimis.device.player.PlayerDevice;
import mimis.device.wiimote.WiimoteDevice;
import mimis.event.EventRouter;
import mimis.event.router.LocalRouter;
+import mimis.exception.worker.ActivateException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -42,7 +42,6 @@ public class Main {
new WiimoteDevice(),
new PanelDevice(),
new JIntellitypeDevice(),
- new PlayerDevice(),
new RumblepadDevice(),
new Extreme3DDevice(),
new NetworkDevice()};
@@ -51,7 +50,11 @@ public class Main {
public void start() {
log.debug("Main");
Mimis mimis = new Mimis(eventRouter, applicationArray, deviceArray);
- mimis.activate();
+ try {
+ mimis.activate();
+ } catch (ActivateException e) {
+ log.fatal(e);
+ }
}
public static void main(String[] args) {
diff --git a/java/src/mimis/Manager.java b/java/src/mimis/Manager.java
index cee411d..7a972e9 100644
--- a/java/src/mimis/Manager.java
+++ b/java/src/mimis/Manager.java
@@ -33,7 +33,7 @@ public class Manager extends Worker {
public void stop() {
super.stop();
for (T manageable : manageableArray) {
- manageable.exit();
+ manageable.stop();
}
super.stop();
}
diff --git a/java/src/mimis/Mimis.java b/java/src/mimis/Mimis.java
index 4d90d58..33af2ea 100644
--- a/java/src/mimis/Mimis.java
+++ b/java/src/mimis/Mimis.java
@@ -2,13 +2,13 @@ package mimis;
import mimis.event.EventHandler;
import mimis.event.EventRouter;
+import mimis.exception.worker.ActivateException;
import mimis.util.ArrayCycle;
import mimis.value.Action;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-
public class Mimis extends EventHandler {
protected Log log = LogFactory.getLog(getClass());
@@ -19,11 +19,11 @@ public class Mimis extends EventHandler {
protected Manager applicationManager;
protected Manager deviceManager;
-
+
public Mimis(EventRouter eventRouter) {
this(eventRouter, new Application[0], new Device[0]);
}
-
+
public Mimis(EventRouter eventRouter, Application[] applicationArray) {
this(eventRouter, applicationArray, new Device[0]);
}
@@ -36,20 +36,20 @@ public class Mimis extends EventHandler {
EventHandler.initialise(eventRouter);
applicationManager = new Manager(applicationArray);
deviceManager = new Manager(deviceArray);
-
+
this.applicationArray = applicationArray;
this.deviceArray = deviceArray;
applicationCycle = new ArrayCycle(applicationArray);
}
- public void activate() {
+ public void activate() throws ActivateException {
log.debug("Activate managers");
applicationManager.activate();
- deviceManager.start();
-
+ deviceManager.activate();
+
log.debug("Create gui");
gui = new GUI(this, applicationManager, deviceManager);
-
+
if (applicationCycle.size() > 0) {
log.debug("Initialise application cycle");
eventRouter.set(applicationCycle.current());
@@ -57,15 +57,14 @@ public class Mimis extends EventHandler {
super.activate(false);
}
- public void exit() {
+ public void stop() {
log.debug("Stop event router");
eventRouter.stop();
-
+
log.debug("Stop managers");
applicationManager.stop();
- deviceManager.stop();
-
- stop();
+ deviceManager.stop();
+ super.stop();
}
protected void action(Action action) {
@@ -80,7 +79,7 @@ public class Mimis extends EventHandler {
System.out.println(applicationCycle.current());
break;
case EXIT:
- exit();
+ stop();
break;
}
}
diff --git a/java/src/mimis/Worker.java b/java/src/mimis/Worker.java
index ea0a030..13bfaad 100644
--- a/java/src/mimis/Worker.java
+++ b/java/src/mimis/Worker.java
@@ -1,5 +1,8 @@
package mimis;
+import mimis.exception.worker.ActivateException;
+import mimis.exception.worker.DeactivateException;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -31,7 +34,11 @@ public abstract class Worker implements Runnable {
public void stop() {
log.trace("Stop");
if (active()) {
- deactivate();
+ try {
+ deactivate();
+ } catch (DeactivateException e) {
+ log.error(e);
+ }
}
running = false;
synchronized (this) {
@@ -57,7 +64,7 @@ public abstract class Worker implements Runnable {
return active;
}
- public void activate() {
+ public void activate() throws ActivateException {
activate(THREAD);
}
@@ -71,7 +78,7 @@ public abstract class Worker implements Runnable {
}
}
- public void deactivate() {
+ public void deactivate() throws DeactivateException {
active = false;
}
diff --git a/java/src/mimis/application/cmd/CMDApplication.java b/java/src/mimis/application/cmd/CMDApplication.java
index 3ef6454..de38840 100644
--- a/java/src/mimis/application/cmd/CMDApplication.java
+++ b/java/src/mimis/application/cmd/CMDApplication.java
@@ -3,6 +3,8 @@ package mimis.application.cmd;
import java.io.IOException;
import mimis.Application;
+import mimis.exception.worker.ActivateException;
+import mimis.exception.worker.DeactivateException;
import mimis.util.Native;
import mimis.util.VBScript;
@@ -20,7 +22,7 @@ public abstract class CMDApplication extends Application {
this.title = title;
}
- public void activate() {
+ public void activate() throws ActivateException {
String key = String.format("%s\\%s", REGISTRY, program);
// Check of naam is gevonden in register
String path = Native.getValue(key);
@@ -29,8 +31,7 @@ public abstract class CMDApplication extends Application {
command = Native.replaceVariables(command);
process = Runtime.getRuntime().exec(command);
} catch (IOException e) {
- e.printStackTrace();
- //throw new ApplicationInitialiseException();
+ throw new ActivateException();
}
super.activate();
}
@@ -39,11 +40,11 @@ public abstract class CMDApplication extends Application {
try {
return active = VBScript.isRunning(program);
} catch (IOException e) {
- return false;
+ return active = false;
}
}
- public void deactivate() {
+ public void deactivate() throws DeactivateException {
if (process != null) {
process.destroy();
}
diff --git a/java/src/mimis/application/cmd/windows/WindowsApplication.java b/java/src/mimis/application/cmd/windows/WindowsApplication.java
index b9776d8..5231cb7 100644
--- a/java/src/mimis/application/cmd/windows/WindowsApplication.java
+++ b/java/src/mimis/application/cmd/windows/WindowsApplication.java
@@ -1,6 +1,7 @@
package mimis.application.cmd.windows;
import mimis.application.cmd.CMDApplication;
+import mimis.exception.worker.ActivateException;
import mimis.util.Windows;
import mimis.value.Command;
import mimis.value.Key;
@@ -21,15 +22,16 @@ public abstract class WindowsApplication extends CMDApplication {
handle = -1;
}
- public void initialise() {
+ public void activate() throws ActivateException {
handle = Windows.findWindow(name, null);
if (handle < 1) {
- super.initialise();
+ super.activate();
sleep(START_SLEEP);
handle = Windows.findWindow(name, null);
}
+ active = handle > 0;
if (handle < 1) {
- //throw new ApplicationInitialiseException();
+ throw new ActivateException();
}
}
diff --git a/java/src/mimis/application/cmd/windows/gomplayer/GomPlayerApplication.java b/java/src/mimis/application/cmd/windows/gomplayer/GomPlayerApplication.java
index 776c7c2..9a3d47b 100644
--- a/java/src/mimis/application/cmd/windows/gomplayer/GomPlayerApplication.java
+++ b/java/src/mimis/application/cmd/windows/gomplayer/GomPlayerApplication.java
@@ -13,7 +13,7 @@ public class GomPlayerApplication extends WindowsApplication {
}
public void action(Action action) {
- System.out.println("GomPlayerApplication: " + action);
+ log.trace("GomPlayerApplication: " + action);
switch (action) {
case PLAY:
command(0x800C);
diff --git a/java/src/mimis/application/cmd/windows/winamp/WinampApplication.java b/java/src/mimis/application/cmd/windows/winamp/WinampApplication.java
index 9a91cb8..738eb78 100644
--- a/java/src/mimis/application/cmd/windows/winamp/WinampApplication.java
+++ b/java/src/mimis/application/cmd/windows/winamp/WinampApplication.java
@@ -40,7 +40,7 @@ public class WinampApplication extends WindowsApplication {
}
public void action(Action action) {
- System.out.println("WinampApplication: " + action);
+ log.trace("WinampApplication: " + action);
switch (action) {
case PLAY:
System.out.println(user(0, IPC_ISPLAYING));
diff --git a/java/src/mimis/application/cmd/windows/wmp/WMPApplication.java b/java/src/mimis/application/cmd/windows/wmp/WMPApplication.java
index 560d75b..09e1482 100644
--- a/java/src/mimis/application/cmd/windows/wmp/WMPApplication.java
+++ b/java/src/mimis/application/cmd/windows/wmp/WMPApplication.java
@@ -13,8 +13,7 @@ public class WMPApplication extends WindowsApplication {
}
public void action(Action action) {
- System.out.println("WMPApplication: " + action);
- System.out.println(handle);
+ log.trace("WMPApplication: " + action);
switch (action) {
case PLAY:
command(18808);
diff --git a/java/src/mimis/application/itunes/iTunesApplication.java b/java/src/mimis/application/itunes/iTunesApplication.java
index b496d8c..61c1ded 100644
--- a/java/src/mimis/application/itunes/iTunesApplication.java
+++ b/java/src/mimis/application/itunes/iTunesApplication.java
@@ -1,7 +1,8 @@
package mimis.application.itunes;
import mimis.Application;
-import mimis.event.Feedback;
+import mimis.exception.worker.ActivateException;
+import mimis.exception.worker.DeactivateException;
import mimis.value.Action;
import com.dt.iTunesController.ITCOMDisabledReason;
@@ -23,12 +24,8 @@ public class iTunesApplication extends Application implements iTunesEventsInterf
super(TITLE);
iTunes = new iTunes();
}
-
- /*public boolean active() {
- return active;
- }*/
-
- public void activate() {
+
+ public void activate() throws ActivateException {
synchronized (iTunes) {
iTunes.connect();
iTunes.addEventHandler(this);
@@ -37,31 +34,29 @@ public class iTunesApplication extends Application implements iTunesEventsInterf
}
public boolean active() {
- //log.info("Check iTunes");
try {
- iTunes.getCurrentTrack();
+ iTunes.getMute();
active = true;
} catch (Exception e) {
- //log.fatal(e);
active = false;
}
- //log.info(active);
return active;
}
- public void deactivate() {
+ public void deactivate() throws DeactivateException {
try {
synchronized (iTunes) {
iTunes.quit();
}
} catch (Exception e) {
- log.info("Unexpected deactivation exception", e);
+ throw new DeactivateException();
+ } finally {
+ super.deactivate();
}
- super.deactivate();
}
-
+
protected void action(Action action) {
- System.out.println("iTunesApplication: " + action);
+ log.trace("iTunesApplication: " + action);
switch (action) {
case PLAY:
iTunes.playPause();
@@ -108,20 +103,19 @@ public class iTunesApplication extends Application implements iTunesEventsInterf
return iTunes.getSoundVolume();
}
- /* iTunesEventInterface => naar eigen class? */
public void onDatabaseChangedEvent(int[][] deletedObjectIDs, int[][] changedObjectIDs) {}
public void onPlayerPlayEvent(ITTrack iTrack) {
if (active) {
- System.out.println("iTunes play");
- eventRouter.add(new Feedback());
+ log.trace("iTunesEvent: play");
}
}
+
public void onPlayerStopEvent(ITTrack iTrack) {
if (active) {
- System.out.println("iTunes stop");
- eventRouter.add(new Feedback());
+ log.trace("iTunesEvent: stop");
}
}
+
public void onPlayerPlayingTrackChangedEvent(ITTrack iTrack) {}
public void onCOMCallsDisabledEvent(ITCOMDisabledReason reason) {}
public void onCOMCallsEnabledEvent() {}
diff --git a/java/src/mimis/application/mpc/MPCApplication.java b/java/src/mimis/application/mpc/MPCApplication.java
index f95f2f2..040dc2f 100644
--- a/java/src/mimis/application/mpc/MPCApplication.java
+++ b/java/src/mimis/application/mpc/MPCApplication.java
@@ -13,8 +13,7 @@ public class MPCApplication extends WindowsApplication {
}
public void action(Action action) {
- System.out.println("MPCApplication: " + action);
- System.out.println(handle);
+ log.trace("MPCApplication: " + action);
switch (action) {
case PLAY:
command(889);
diff --git a/java/src/mimis/application/vlc/VLCApplication.java b/java/src/mimis/application/vlc/VLCApplication.java
index 7ce2258..2f88953 100644
--- a/java/src/mimis/application/vlc/VLCApplication.java
+++ b/java/src/mimis/application/vlc/VLCApplication.java
@@ -8,7 +8,6 @@ import java.net.URL;
import mimis.application.cmd.CMDApplication;
import mimis.value.Action;
-
public class VLCApplication extends CMDApplication {
protected final static String PROGRAM = "vlc.exe";
protected final static String TITLE = "VLC media player";
@@ -27,19 +26,24 @@ public class VLCApplication extends CMDApplication {
}
public void command(String command) {
- String request = "http://" + HOST + ":" + PORT + "/requests/status.xml?command=" + command;
- try {
- int response = ((HttpURLConnection)(new URL(request)).openConnection()).getResponseCode();
- System.out.printf("Response: %d\n", response);
+ //String request = "http://" + HOST + ":" + PORT + "/requests/status.xml?command=" + command;
+ String request = String.format("http://%s:%d/requests/status.xml?command=%s", HOST, PORT, command);
+ try {
+ // Todo: check response voor 200, status ok
+ //int response = ((HttpURLConnection)(new URL(request)).openConnection()).getResponseCode();
+ URL url = new URL(request);
+ HttpURLConnection httpUrlConnection = (HttpURLConnection) url.openConnection();
+ int response = httpUrlConnection.getResponseCode();
+ log.debug("Response: " + response);
} catch (MalformedURLException e) {
- e.printStackTrace();
+ log.error(e);
} catch (IOException e) {
- e.printStackTrace();
+ log.error(e);
}
}
public void action(Action action) {
- System.out.println("VLCApplication: " + action);
+ log.trace("VLCApplication: " + action);
switch (action) {
case PLAY:
command("pl_pause");
@@ -92,8 +96,7 @@ public class VLCApplication extends CMDApplication {
}
protected int toggleMute() {
- muted =! muted;
- return muted ? 0 : volume;
+ return (muted = !muted) ? 0 : volume;
}
public String title() {
diff --git a/java/src/mimis/device/javainput/JavaInputDevice.java b/java/src/mimis/device/javainput/JavaInputDevice.java
index 2619934..5045ed3 100644
--- a/java/src/mimis/device/javainput/JavaInputDevice.java
+++ b/java/src/mimis/device/javainput/JavaInputDevice.java
@@ -5,17 +5,18 @@ import mimis.Device;
import mimis.exception.ButtonException;
import mimis.exception.button.UnknownButtonException;
import mimis.exception.button.UnknownDirectionException;
-import mimis.exception.device.DeviceInitialiseException;
import mimis.exception.device.DeviceNotFoundException;
+import mimis.exception.worker.ActivateException;
+import mimis.exception.worker.DeactivateException;
import mimis.macro.state.Press;
import mimis.macro.state.Release;
+
import de.hardcode.jxinput.JXInputDevice;
import de.hardcode.jxinput.JXInputManager;
import de.hardcode.jxinput.event.JXInputAxisEvent;
import de.hardcode.jxinput.event.JXInputButtonEvent;
import de.hardcode.jxinput.event.JXInputDirectionalEvent;
-
public abstract class JavaInputDevice extends Device {
public JavaInputDevice(String title) {
super(title);
@@ -24,30 +25,28 @@ public abstract class JavaInputDevice extends Device {
protected JavaInputListener javaInputListener;
protected Button previousDirectionalButton;
- public void activate(String name) throws DeviceInitialiseException {
+ public void activate(String name) throws ActivateException {
try {
javaInputListener = new JavaInputListener(this, getDevice(name));
- javaInputListener.start();
} catch (DeviceNotFoundException e) {
- throw new DeviceInitialiseException();
- }
+ throw new ActivateException();
+ }
+ javaInputListener.activate();
}
- public void deactivate() {
- javaInputListener.exit();
+ public void deactivate() throws DeactivateException {
+ javaInputListener.deactivate();
}
public void processEvent(JXInputAxisEvent event) {
- //System.out.println(event);
+ log.trace("JXInputAxisEvent: " + event);
}
public void processEvent(JXInputButtonEvent event) throws ButtonException {
Button button = getButton(event);
if (event.getButton().getState()) {
- System.out.println("Press: " + button);
add(new Press(button));
} else {
- System.out.println("Release: " + button);
add(new Release(button));
}
}
@@ -56,11 +55,9 @@ public abstract class JavaInputDevice extends Device {
Button button = getButton(event);
if (event.getDirectional().isCentered()) {
if (previousDirectionalButton != null) {
- System.out.println("Release: " + previousDirectionalButton);
add(new Release(previousDirectionalButton));
}
} else {
- System.out.println("Press: " + button);
add(new Press(button));
previousDirectionalButton = button;
}
diff --git a/java/src/mimis/device/javainput/JavaInputListener.java b/java/src/mimis/device/javainput/JavaInputListener.java
index 8dc3e5c..a59161d 100644
--- a/java/src/mimis/device/javainput/JavaInputListener.java
+++ b/java/src/mimis/device/javainput/JavaInputListener.java
@@ -3,6 +3,7 @@ package mimis.device.javainput;
import java.util.LinkedList;
import java.util.Queue;
+import mimis.Worker;
import mimis.exception.ButtonException;
@@ -19,10 +20,7 @@ import de.hardcode.jxinput.event.JXInputDirectionalEvent;
import de.hardcode.jxinput.event.JXInputDirectionalEventListener;
import de.hardcode.jxinput.event.JXInputEventManager;
-public class JavaInputListener implements Runnable, JXInputAxisEventListener, JXInputButtonEventListener, JXInputDirectionalEventListener {
- protected static final int SLEEP = 100;
-
- protected boolean run;
+public class JavaInputListener extends Worker implements Runnable, JXInputAxisEventListener, JXInputButtonEventListener, JXInputDirectionalEventListener {
protected JavaInputDevice javaInputDevice;
protected JXInputDevice jxinputDevice;
protected Queue axisEventQueue;
@@ -71,40 +69,20 @@ public class JavaInputListener implements Runnable, JXInputAxisEventListener, JX
directionalEventQueue.add(event);
}
- public void start() {
- new Thread(this).start();
- }
-
- public void run() {
- run = true;
- while (run) {
- JXInputManager.updateFeatures();
- boolean sleep = true;
- if (!axisEventQueue.isEmpty()) {
- javaInputDevice.processEvent(axisEventQueue.poll());
- sleep = false;
- }
- if (!buttonEventQueue.isEmpty()) {
- try {
- javaInputDevice.processEvent(buttonEventQueue.poll());
- } catch (ButtonException e) {}
- sleep = false;
- }
- if (!directionalEventQueue.isEmpty()) {
- try {
- javaInputDevice.processEvent(directionalEventQueue.poll());
- } catch (ButtonException e) {}
- sleep = false;
- }
- if (sleep) {
- try {
- Thread.sleep(SLEEP);
- } catch (InterruptedException e) {}
- }
+ public void work() {
+ JXInputManager.updateFeatures();
+ if (!axisEventQueue.isEmpty()) {
+ javaInputDevice.processEvent(axisEventQueue.poll());
+ } else if (!buttonEventQueue.isEmpty()) {
+ try {
+ javaInputDevice.processEvent(buttonEventQueue.poll());
+ } catch (ButtonException e) {}
+ } else if (!directionalEventQueue.isEmpty()) {
+ try {
+ javaInputDevice.processEvent(directionalEventQueue.poll());
+ } catch (ButtonException e) {}
+ } else {
+ sleep();
}
}
-
- public void exit() {
- run = false;
- }
}
diff --git a/java/src/mimis/device/javainput/extreme3d/Extreme3DDevice.java b/java/src/mimis/device/javainput/extreme3d/Extreme3DDevice.java
index 6a58b7d..69ac8ab 100644
--- a/java/src/mimis/device/javainput/extreme3d/Extreme3DDevice.java
+++ b/java/src/mimis/device/javainput/extreme3d/Extreme3DDevice.java
@@ -23,7 +23,8 @@ public class Extreme3DDevice extends JavaInputDevice {
super(NAME);
}
- public void initialise() {
+ public void start() {
+ super.start();
try {
add(
new Press(Extreme3DButton.TWELVE),
@@ -36,9 +37,13 @@ public class Extreme3DDevice extends JavaInputDevice {
new Release(Extreme3DButton.ONE)),
new Task(Target.MIMIS, Action.EXIT));
} catch (MacroException e) {
- e.printStackTrace();
+ log.error(e);
}
}
+
+ public void initialise() {
+
+ }
protected Button getButton(JXInputButtonEvent event) throws UnknownButtonException {
return Extreme3DButton.create(event);
diff --git a/java/src/mimis/device/javainput/rumblepad/RumblepadDevice.java b/java/src/mimis/device/javainput/rumblepad/RumblepadDevice.java
index 3d33d17..de9c75e 100644
--- a/java/src/mimis/device/javainput/rumblepad/RumblepadDevice.java
+++ b/java/src/mimis/device/javainput/rumblepad/RumblepadDevice.java
@@ -22,7 +22,8 @@ public class RumblepadDevice extends JavaInputDevice {
super(NAME);
}
- public void initialise(){
+ public void start() {
+ super.start();
add(
new Press(RumblepadButton.ONE),
new Task(Target.APPLICATION, Action.PLAY));
diff --git a/java/src/mimis/device/jintellitype/JIntellitypeDevice.java b/java/src/mimis/device/jintellitype/JIntellitypeDevice.java
index 757e660..37d8ff5 100644
--- a/java/src/mimis/device/jintellitype/JIntellitypeDevice.java
+++ b/java/src/mimis/device/jintellitype/JIntellitypeDevice.java
@@ -29,7 +29,8 @@ public class JIntellitypeDevice extends Device implements HotkeyListener, Intell
Hotkey.initialise(hotkeyList, jit);
}
- public void initialise() {
+ public void start() {
+ super.start();
jit.addHotKeyListener(this);
jit.addIntellitypeListener(this);
add(
@@ -67,23 +68,27 @@ public class JIntellitypeDevice extends Device implements HotkeyListener, Intell
}
public void onIntellitype(int command) {
- try {
+ if (active) {
+ try {
CommandButton commandButton = CommandButton.create(command);
add(new Press(commandButton));
add(new Release(commandButton));
- } catch (UnknownButtonException e) {
- e.printStackTrace();
+ } catch (UnknownButtonException e) {
+ log.error(e);
+ }
}
}
public void onHotKey(int id) {
- Hotkey hotkey = hotkeyList.get(id);
- add(new Press(hotkey));
- add(new Release(hotkey));
+ if (active) {
+ Hotkey hotkey = hotkeyList.get(id);
+ add(new Press(hotkey));
+ add(new Release(hotkey));
+ }
}
- public void exit() {
- super.exit();
+ public void stop() {
+ super.stop();
jit.removeHotKeyListener(this);
jit.removeIntellitypeListener(this);
jit.cleanUp();
diff --git a/java/src/mimis/device/lirc/LircDevice.java b/java/src/mimis/device/lirc/LircDevice.java
index 1e12f23..b9a1b40 100644
--- a/java/src/mimis/device/lirc/LircDevice.java
+++ b/java/src/mimis/device/lirc/LircDevice.java
@@ -6,6 +6,8 @@ import mimis.Button;
import mimis.Device;
import mimis.device.lirc.button.DenonRC176;
import mimis.device.lirc.button.PhiliphsRCLE011Button;
+import mimis.exception.worker.ActivateException;
+import mimis.exception.worker.DeactivateException;
import mimis.macro.state.Press;
import mimis.macro.state.Release;
import mimis.util.Multiplexer;
@@ -31,13 +33,13 @@ public class LircDevice extends Device implements LircButtonListener, SignalList
lircService.add(this);
}
- public void activate() {
+ public void activate() throws ActivateException {
multiplexer.start();
lircService.activate();
super.activate();
}
- public void deactivate() {
+ public void deactivate() throws DeactivateException {
multiplexer.deactivate();
lircService.deactivate();
super.deactivate();
diff --git a/java/src/mimis/device/lirc/LircService.java b/java/src/mimis/device/lirc/LircService.java
index 0f4c4ac..9cfaa64 100644
--- a/java/src/mimis/device/lirc/LircService.java
+++ b/java/src/mimis/device/lirc/LircService.java
@@ -15,6 +15,8 @@ import java.util.Scanner;
import mimis.Worker;
import mimis.exception.button.UnknownButtonException;
+import mimis.exception.worker.ActivateException;
+import mimis.exception.worker.DeactivateException;
public class LircService extends Worker {
public static final String IP = "127.0.0.1";
@@ -50,7 +52,7 @@ public class LircService extends Worker {
lircButtonListenerList.remove(lircButtonListener);
}
- public void activate() {
+ public void activate() throws ActivateException {
try {
socket = new Socket(ip, port);
@@ -60,22 +62,25 @@ public class LircService extends Worker {
outputStream = socket.getOutputStream();
printWriter = new PrintWriter(outputStream);
} catch (UnknownHostException e) {
- e.printStackTrace();
+ log.info(e);
+ throw new ActivateException();
} catch (IOException e) {
- e.printStackTrace();
+ log.info(e);
+ throw new ActivateException();
}
super.activate();
}
- public void deactivate() {
+ public void deactivate() throws DeactivateException {
try {
inputStream.close();
outputStream.close();
socket.close();
} catch (IOException e) {
- //e.printStackTrace();
+ log.error(e);
+ } finally {
+ super.deactivate();
}
- super.deactivate();
}
public void work() {
@@ -83,13 +88,13 @@ public class LircService extends Worker {
String string = bufferedReader.readLine();
try {
LircButton lircButton = parseButton(new Scanner(string));
- //log.debug(String.format("Lirc button: %s", lircButton));
+ log.trace("LircButton: " + lircButton);
for (LircButtonListener lircbuttonListener : lircButtonListenerList) {
lircbuttonListener.add(lircButton);
}
} catch (UnknownButtonException e) {}
} catch (IOException e) {
- e.printStackTrace();
+ log.error(e);
}
}
@@ -99,7 +104,7 @@ public class LircService extends Worker {
scanner.next();
String code = scanner.next();
String remote = scanner.next();
- //log.debug(String.format("%s: %s", remote, code));
+ //log.debug(String.format("%s: %s", remote, code));
LircButton[] buttonArray = buttonMap.get(remote);
if (buttonArray != null) {
for (LircButton button : buttonArray) {
@@ -108,12 +113,9 @@ public class LircService extends Worker {
}
}
}
- } catch (InputMismatchException e) {}
+ } catch (InputMismatchException e) {
+ log.error(e);
+ }
throw new UnknownButtonException();
}
-
- public static void main(String[] args) {
- new LircDevice().activate();
- while (true);
- }
}
diff --git a/java/src/mimis/device/network/NetworkDevice.java b/java/src/mimis/device/network/NetworkDevice.java
index 6210678..e4433e5 100644
--- a/java/src/mimis/device/network/NetworkDevice.java
+++ b/java/src/mimis/device/network/NetworkDevice.java
@@ -11,11 +11,11 @@ import mimis.Device;
import mimis.Event;
import mimis.Worker;
import mimis.event.Feedback;
+import mimis.exception.worker.ActivateException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-
public class NetworkDevice extends Device {
protected static final String TITLE = "Network";
public static final int PORT = 6789;
@@ -34,12 +34,12 @@ public class NetworkDevice extends Device {
this(PORT);
}
- public void activate() {
+ public void activate() throws ActivateException {
try {
server = new Server(port);
server.start();
} catch (IOException e) {
- //throw new DeviceInitialiseException();
+ throw new ActivateException();
}
}
@@ -63,16 +63,16 @@ public class NetworkDevice extends Device {
public Server(int port) throws IOException {
serverSocket = new ServerSocket(port);
clientList = new ArrayList();
- System.out.println("Server started");
+ log.trace("Server started");
}
public void work() {
- System.out.println("Server is waiting for clients");
+ log.trace("Server is waiting for clients");
try {
Socket socket = serverSocket.accept();
Client client = new Client(socket);
client.start();
- System.out.println("Client connected");
+ log.trace("Client connected");
} catch (IOException e) {}
}
@@ -102,10 +102,9 @@ public class NetworkDevice extends Device {
do {
object = objectInputStream.readObject();
if (object instanceof Event) {
- log.debug("event binnen!");
+ log.trace(object);
eventRouter.add((Event) object);
}
- log.debug("iets te lezen!");
} while (object != null);
} catch (IOException e) {
e.printStackTrace();
@@ -115,10 +114,10 @@ public class NetworkDevice extends Device {
}
public void stop() {
- System.out.println("stoppen");
try {
disconnect();
} catch (IOException e) {
+ log.error(e);
} finally {
clientList.remove(this);
}
diff --git a/java/src/mimis/device/player/PlayerDevice.java b/java/src/mimis/device/player/PlayerDevice.java
deleted file mode 100644
index 5b34224..0000000
--- a/java/src/mimis/device/player/PlayerDevice.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package mimis.device.player;
-
-import mimis.Device;
-import javazoom.jlgui.player.amp.StandalonePlayer;
-
-public class PlayerDevice extends Device {
- protected static final String TITLE = "Player";
-
- StandalonePlayer standalonePlayer;
-
- public PlayerDevice() {
- super(TITLE);
- }
-
- public void initialise() {
- standalonePlayer = new StandalonePlayer();
- standalonePlayer.loadUI();
- //standalonePlayer.loadJS();
- //standalonePlayer.loadPlaylist();
- //standalonePlayer.
- System.out.println("niets!");
- }
-}
diff --git a/java/src/mimis/device/wiimote/WiimoteDevice.java b/java/src/mimis/device/wiimote/WiimoteDevice.java
index cf17974..15f8565 100644
--- a/java/src/mimis/device/wiimote/WiimoteDevice.java
+++ b/java/src/mimis/device/wiimote/WiimoteDevice.java
@@ -181,8 +181,8 @@ public class WiimoteDevice extends Device implements GestureListener {
wiimote.deactivateMotionSensing();
}
- public void exit() {
+ public void stop() {
wiimoteService.exit();
- super.exit();
+ super.stop();
}
}
diff --git a/java/src/mimis/exception/ExitException.java b/java/src/mimis/exception/ExitException.java
new file mode 100644
index 0000000..e371fd0
--- /dev/null
+++ b/java/src/mimis/exception/ExitException.java
@@ -0,0 +1,5 @@
+package mimis.exception;
+
+public class ExitException extends Exception {
+ protected static final long serialVersionUID = 1L;
+}
diff --git a/java/src/mimis/exception/worker/ActivateException.java b/java/src/mimis/exception/worker/ActivateException.java
new file mode 100644
index 0000000..dbee795
--- /dev/null
+++ b/java/src/mimis/exception/worker/ActivateException.java
@@ -0,0 +1,7 @@
+package mimis.exception.worker;
+
+import mimis.exception.WorkerException;
+
+public class ActivateException extends WorkerException {
+ protected static final long serialVersionUID = 1L;
+}
diff --git a/java/src/mimis/exception/worker/DeactivateException.java b/java/src/mimis/exception/worker/DeactivateException.java
new file mode 100644
index 0000000..883cca1
--- /dev/null
+++ b/java/src/mimis/exception/worker/DeactivateException.java
@@ -0,0 +1,7 @@
+package mimis.exception.worker;
+
+import mimis.exception.WorkerException;
+
+public class DeactivateException extends WorkerException {
+ protected static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/java/src/mimis/manager/SelectButton.java b/java/src/mimis/manager/SelectButton.java
index 3ce8601..e149e70 100644
--- a/java/src/mimis/manager/SelectButton.java
+++ b/java/src/mimis/manager/SelectButton.java
@@ -6,11 +6,13 @@ import javax.swing.Action;
import javax.swing.JToggleButton;
import mimis.Worker;
+import mimis.exception.worker.ActivateException;
+import mimis.exception.worker.DeactivateException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-
+// Eventueel handigere knoppen gebruiken ivm terugtogglen
public class SelectButton extends JToggleButton implements ItemListener {
protected Log log = LogFactory.getLog(getClass());
@@ -32,10 +34,20 @@ public class SelectButton extends JToggleButton imple
int state = itemEvent.getStateChange();
if (state == ItemEvent.SELECTED) {
System.out.println("Selected");
- activatable.activate();
+ try {
+ activatable.activate();
+ } catch (ActivateException e) {
+ // Het knopje moet worden terug getoggled
+ log.error(e);
+ }
} else {
System.out.println("Deselected");
- activatable.deactivate();
+ try {
+ activatable.deactivate();
+ } catch (DeactivateException e) {
+ // Het knopje moet worden terug getoggled
+ log.error(e);
+ }
}
}
diff --git a/java/src/mimis/util/Multiplexer.java b/java/src/mimis/util/Multiplexer.java
index f850cfa..5cd92ed 100644
--- a/java/src/mimis/util/Multiplexer.java
+++ b/java/src/mimis/util/Multiplexer.java
@@ -1,6 +1,8 @@
package mimis.util;
import mimis.Worker;
+import mimis.exception.worker.ActivateException;
+import mimis.exception.worker.DeactivateException;
import mimis.util.multiplexer.SignalListener;
import mimis.value.Signal;
@@ -25,7 +27,11 @@ public class Multiplexer extends Worker {
signalListener.add(Signal.BEGIN, object);
this.object = object;
end = true;
- activate();
+ try {
+ activate();
+ } catch (ActivateException e) {
+ log.error(e);
+ }
} else if (this.object.equals(object)) {
end = false;
synchronized (this) {
@@ -49,7 +55,11 @@ public class Multiplexer extends Worker {
if (end) {
signalListener.add(Signal.END, object);
object = null;
- deactivate();
+ try {
+ deactivate();
+ } catch (DeactivateException e) {
+ log.error(e);
+ }
}
end = !end;
}