/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is the Kowari Metadata Store.
*
* The Initial Developer of the Original Code is Plugged In Software Pty
* Ltd (http://www.pisoftware.com, mailto:info@pisoftware.com). Portions
* created by Plugged In Software Pty Ltd are Copyright (C) 2001,2002
* Plugged In Software Pty Ltd. All Rights Reserved.
*
* Contributor(s): N/A.
*
* [NOTE: The text of this Exhibit A may differ slightly from the text
* of the notices in the Source Code files of the Original Code. You
* should use the text of this Exhibit A rather than the text found in the
* Original Code Source Code for Your Modifications.]
*
*/
package org.mulgara.demo.mp3.swing.results;
// Java 2 standard packages
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;
// Logging
import org.apache.log4j.Logger;
// Local packages
import org.mulgara.demo.mp3.*;
import org.mulgara.demo.mp3.swing.ExceptionHandler;
import org.mulgara.demo.mp3.swing.results.list.Mp3FileListRenderer;
/**
* List of Mp3's to display.
*
* @created 2004-12-07
*
* @author <a href="mailto:robert.turner@tucanatech.com">Robert Turner</a>
*
* @version $Revision: 1.3 $
*
* @modified $Date: 2005/01/05 04:58:08 $
*
* @maintenanceAuthor $Author: newmana $
*
* @company <A href="mailto:info@PIsoftware.com">Plugged In Software</A>
*
* @copyright ©2001 <a href="http://www.pisoftware.com/">Plugged In
* Software Pty Ltd</a>
*
* @licence <a href="{@docRoot}/../../LICENCE">Mozilla Public License v1.1</a>
*/
public class Mp3List extends JList {
/**
* Logger. This is named after the class.
*/
private final static Logger log = Logger.getLogger(Mp3List.class.getName());
/** Graph used to store list items */
private DefaultListModel model = null;
/** Renders the Mp3Files */
private Mp3FileListRenderer renderer = null;
/** Action to be executed when an Mp3 is selected from the list */
private Action mp3SelectAction = null;
/**
* Default constructor
*/
public Mp3List() {
setup();
}
/**
* Initializes and sets up componentes
*/
private void setup () {
//instantiate
model = new DefaultListModel();
renderer = new Mp3FileListRenderer();
//initialize
addListener();
//add
setModel(model);
setCellRenderer(renderer);
}
/**
* Removes all components and re-draws
*/
private void redraw() {
invalidate();
removeAll();
setup();
repaint();
revalidate();
}
/**
* Lists all the Mp3's from the Iterator.
* @param mp3s Mp3Iterator
* @throws Exception
*/
public void display(Mp3Iterator mp3s) throws Exception {
if (mp3s == null) {
throw new IllegalArgumentException("Mp3Iterator is null");
}
model.removeAllElements();
Mp3File current = null;
while (mp3s.hasNext()) {
current = mp3s.nextMp3();
model.addElement(current);
}
}
/**
* Returns the currently selected Mp3File (first selected if multiple
* selections are made).
* @throws Exception
* @return Mp3File
*/
public Mp3File getSelectedFile() throws Exception {
return (Mp3File) getSelectedValue();
}
/**
* Returns all the currently selected Mp3Files.
* @throws Exception
* @return Mp3File
*/
public Iterator getSelectedFiles() throws Exception {
List playList = new ArrayList();
Object [] values = getSelectedValues();
if (values != null) {
playList = Arrays.asList(values);
}
return playList.iterator();
}
/**
* Sets the action to be executed when a mp3 is selected from the results.
* @param action Action
* @throws IllegalArgumentException
*/
public void setMp3SelectAction(Action action) throws IllegalArgumentException {
if (action == null) {
throw new IllegalArgumentException("Action is null");
}
mp3SelectAction = action;
}
/**
* Adds a Listener to the Mp3List
*/
private void addListener() {
addListSelectionListener(new ListSelectionListener() {
/** display selected file info
* @param e ListSelectionEvent
*/
public void valueChanged(ListSelectionEvent e) {
try {
mp3SelectAction.actionPerformed(null);
} catch (Exception exception) {
ExceptionHandler.handleException(exception);
}
}
});
}
}