Added ability to pop back to previous panels. Only the first two panels
are wired up properly to support this. I may do so for later panels if it seems useful. git-svn-id: https://samskivert.googlecode.com/svn/trunk@637 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
+11
-2
@@ -1,10 +1,19 @@
|
||||
RoboDJ 1.2 (March 02, 2002)
|
||||
RoboDJ 1.2 (March 03, 2002)
|
||||
|
||||
NEW FEATURES
|
||||
|
||||
* (importer) Added support for adding ID3 tags to MP3 files after
|
||||
they are encoded.
|
||||
|
||||
* (chooser) Gave the UI a major facelift:
|
||||
- added icons for most buttons;
|
||||
- fixed layout to work more nicely;
|
||||
- made controls reflect actual state of the music daemon (paused
|
||||
versus playing, etc.).
|
||||
|
||||
* (importer) Added ability to back up from the CDDB panel to the
|
||||
"insert CD" panel.
|
||||
|
||||
RoboDJ 1.1 (February 22, 2002)
|
||||
|
||||
NEW FEATURES
|
||||
@@ -19,4 +28,4 @@ RoboDJ 1.0 (February 21, 2002)
|
||||
|
||||
INITIAL RELEASE
|
||||
|
||||
$Id: NEWS,v 1.1 2002/03/03 06:21:19 mdb Exp $
|
||||
$Id: NEWS,v 1.2 2002/03/03 21:17:03 mdb Exp $
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
robodj (1.2-2) unstable; urgency=low
|
||||
|
||||
* Upstream release updated with more features.
|
||||
|
||||
-- Michael Bayne <mdb@samskivert.com> Sun, 3 Mar 2002 12:59:12 -0800
|
||||
|
||||
robodj (1.2-1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//
|
||||
// $Id: CDDBLookupPanel.java,v 1.4 2001/06/10 21:32:23 mdb Exp $
|
||||
// $Id: CDDBLookupPanel.java,v 1.5 2002/03/03 21:17:03 mdb Exp $
|
||||
|
||||
package robodj.importer;
|
||||
|
||||
@@ -54,31 +54,26 @@ public class CDDBLookupPanel
|
||||
add(_spanel);
|
||||
}
|
||||
|
||||
public void wasAddedToFrame (ImporterFrame frame)
|
||||
public void wasAddedToFrame (ImporterFrame frame, boolean popped)
|
||||
{
|
||||
// keep this for later
|
||||
_frame = frame;
|
||||
|
||||
frame.addControlButton("Cancel", "cancel", this);
|
||||
frame.addControlButton("Back", "back", this);
|
||||
_next = frame.addControlButton("Next...", "next", this);
|
||||
_next.setEnabled(false);
|
||||
_next.setEnabled(popped);
|
||||
|
||||
// create our info task and set it a running
|
||||
Task infoTask = new Task()
|
||||
{
|
||||
public Object invoke ()
|
||||
throws Exception
|
||||
{
|
||||
Ripper ripper = new CDParanoiaRipper();
|
||||
return ripper.getTrackInfo();
|
||||
}
|
||||
|
||||
public boolean abort ()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
};
|
||||
TaskMaster.invokeTask("getinfo", infoTask, this);
|
||||
// if we are being shown for the first time...
|
||||
if (!popped) {
|
||||
// create our info task and set it a running
|
||||
TaskMaster.invokeTask("getinfo", new TaskAdapter() {
|
||||
public Object invoke () throws Exception {
|
||||
Ripper ripper = new CDParanoiaRipper();
|
||||
return ripper.getTrackInfo();
|
||||
}
|
||||
}, this);
|
||||
}
|
||||
}
|
||||
|
||||
public void taskCompleted (String name, Object result)
|
||||
@@ -141,6 +136,10 @@ public class CDDBLookupPanel
|
||||
if (cmd.equals("cancel")) {
|
||||
System.exit(0);
|
||||
|
||||
} else if (cmd.equals("back")) {
|
||||
// pop back to the last panel
|
||||
_frame.popPanel();
|
||||
|
||||
} else if (cmd.equals("next")) {
|
||||
extractEntryAndContinue();
|
||||
|
||||
@@ -175,7 +174,7 @@ public class CDDBLookupPanel
|
||||
}
|
||||
|
||||
// create the rip panel and pass the entry and info along
|
||||
_frame.setPanel(new RipPanel(_info, entry));
|
||||
_frame.pushPanel(new RipPanel(_info, entry));
|
||||
}
|
||||
|
||||
protected boolean validate (String value, String errmsg)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//
|
||||
// $Id: FinishedPanel.java,v 1.3 2001/06/07 08:42:09 mdb Exp $
|
||||
// $Id: FinishedPanel.java,v 1.4 2002/03/03 21:17:03 mdb Exp $
|
||||
|
||||
package robodj.importer;
|
||||
|
||||
@@ -52,7 +52,7 @@ public class FinishedPanel
|
||||
_entry = entry;
|
||||
}
|
||||
|
||||
public void wasAddedToFrame (ImporterFrame frame)
|
||||
public void wasAddedToFrame (ImporterFrame frame, boolean popped)
|
||||
{
|
||||
frame.addControlButton("Exit", "exit", this);
|
||||
frame.addControlButton("Another", "import", this);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//
|
||||
// $Id: Importer.java,v 1.9 2002/01/17 18:22:53 mdb Exp $
|
||||
// $Id: Importer.java,v 1.10 2002/03/03 21:17:03 mdb Exp $
|
||||
|
||||
package robodj.importer;
|
||||
|
||||
@@ -68,7 +68,7 @@ public class Importer
|
||||
// create our frame and first panel
|
||||
ImporterFrame frame = new ImporterFrame();
|
||||
InsertCDPanel panel = new InsertCDPanel();
|
||||
frame.setPanel(panel);
|
||||
frame.pushPanel(panel);
|
||||
|
||||
// center the frame in the screen and show it
|
||||
frame.setSize(640, 480);
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
//
|
||||
// $Id: ImporterFrame.java,v 1.7 2002/03/03 06:32:12 mdb Exp $
|
||||
// $Id: ImporterFrame.java,v 1.8 2002/03/03 21:17:03 mdb Exp $
|
||||
|
||||
package robodj.importer;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.ArrayList;
|
||||
import javax.swing.*;
|
||||
|
||||
import com.samskivert.swing.*;
|
||||
@@ -41,10 +42,25 @@ public class ImporterFrame extends JFrame
|
||||
getContentPane().add(_top, BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears out the panel stack and pushes the specified panel onto the
|
||||
* fresh stack.
|
||||
*/
|
||||
public void setPanel (ImporterPanel panel)
|
||||
{
|
||||
// clear out any old panel
|
||||
_panels.clear();
|
||||
pushPanel(panel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Pushes the specified panel onto the stack (removing the previous
|
||||
* panel and keeping it around in case we want to go back to it.
|
||||
*/
|
||||
public void pushPanel (ImporterPanel panel)
|
||||
{
|
||||
// push the current panel onto the stack
|
||||
if (_panel != null) {
|
||||
_panels.add(_panel);
|
||||
_top.remove(_panel);
|
||||
}
|
||||
|
||||
@@ -56,11 +72,40 @@ public class ImporterFrame extends JFrame
|
||||
_panel = panel;
|
||||
_top.add(_panel, 0);
|
||||
// let the panel know that it was added
|
||||
_panel.wasAddedToFrame(this);
|
||||
_panel.wasAddedToFrame(this, false);
|
||||
}
|
||||
|
||||
// and lay out the new panel
|
||||
validate();
|
||||
repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
* Pops back to the previous panel on the stack.
|
||||
*/
|
||||
public void popPanel ()
|
||||
{
|
||||
// remove the old panel
|
||||
if (_panel != null) {
|
||||
_top.remove(_panel);
|
||||
}
|
||||
|
||||
// clear out old control buttons
|
||||
clearControlButtons();
|
||||
|
||||
// now pop the last panel from the stack
|
||||
int pcount = _panels.size();
|
||||
if (pcount > 0) {
|
||||
_panel = (ImporterPanel)_panels.get(pcount-1);
|
||||
_panels.remove(pcount-1);
|
||||
_top.add(_panel, 0);
|
||||
// let the panel know that it was added
|
||||
_panel.wasAddedToFrame(this, true);
|
||||
}
|
||||
|
||||
// and lay out the new panel
|
||||
validate();
|
||||
repaint();
|
||||
}
|
||||
|
||||
public JButton addControlButton (String label, String command,
|
||||
@@ -72,7 +117,7 @@ public class ImporterFrame extends JFrame
|
||||
_buttonPanel.add(abutton);
|
||||
// swing doesn't automatically validate after adding/removing
|
||||
// children
|
||||
_buttonPanel.revalidate();
|
||||
_buttonPanel.validate();
|
||||
return abutton;
|
||||
}
|
||||
|
||||
@@ -81,10 +126,12 @@ public class ImporterFrame extends JFrame
|
||||
_buttonPanel.removeAll();
|
||||
// swing doesn't automatically validate after adding/removing
|
||||
// children
|
||||
_buttonPanel.revalidate();
|
||||
_buttonPanel.validate();
|
||||
}
|
||||
|
||||
protected ImporterPanel _panel;
|
||||
protected JPanel _top;
|
||||
protected JPanel _buttonPanel;
|
||||
|
||||
protected ArrayList _panels = new ArrayList();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//
|
||||
// $Id: ImporterPanel.java,v 1.1 2000/12/10 07:02:09 mdb Exp $
|
||||
// $Id: ImporterPanel.java,v 1.2 2002/03/03 21:17:03 mdb Exp $
|
||||
|
||||
package robodj.importer;
|
||||
|
||||
@@ -20,6 +20,10 @@ public abstract class ImporterPanel extends JPanel
|
||||
/**
|
||||
* When an importer panel is added to the importer frame, it is
|
||||
* notified so that it can create the appropriate control buttons.
|
||||
*
|
||||
* @param frame a reference to the importer frame.
|
||||
* @param popped if true, this panel was popped from the stack rather
|
||||
* than added to the frame for the first time.
|
||||
*/
|
||||
public abstract void wasAddedToFrame (ImporterFrame frame);
|
||||
public abstract void wasAddedToFrame (ImporterFrame frame, boolean popped);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//
|
||||
// $Id: InsertCDPanel.java,v 1.2 2001/03/21 00:41:03 mdb Exp $
|
||||
// $Id: InsertCDPanel.java,v 1.3 2002/03/03 21:17:03 mdb Exp $
|
||||
|
||||
package robodj.importer;
|
||||
|
||||
@@ -33,7 +33,7 @@ public class InsertCDPanel
|
||||
setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
|
||||
}
|
||||
|
||||
public void wasAddedToFrame (ImporterFrame frame)
|
||||
public void wasAddedToFrame (ImporterFrame frame, boolean popped)
|
||||
{
|
||||
frame.addControlButton("Cancel", "cancel", this);
|
||||
frame.addControlButton("Next...", "next", this);
|
||||
@@ -49,7 +49,7 @@ public class InsertCDPanel
|
||||
System.exit(0);
|
||||
|
||||
} else if (cmd.equals("next")) {
|
||||
_frame.setPanel(new CDDBLookupPanel());
|
||||
_frame.pushPanel(new CDDBLookupPanel());
|
||||
|
||||
} else {
|
||||
System.out.println("Unknown action event: " + cmd);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
//
|
||||
// $Id: RipPanel.java,v 1.6 2002/03/03 06:04:56 mdb Exp $
|
||||
// $Id: RipPanel.java,v 1.7 2002/03/03 21:17:03 mdb Exp $
|
||||
|
||||
package robodj.importer;
|
||||
|
||||
@@ -350,7 +350,7 @@ public class RipPanel
|
||||
protected Ripper.TrackInfo[] _info;
|
||||
}
|
||||
|
||||
public void wasAddedToFrame (ImporterFrame frame)
|
||||
public void wasAddedToFrame (ImporterFrame frame, boolean popped)
|
||||
{
|
||||
// keep this for later
|
||||
_frame = frame;
|
||||
@@ -358,11 +358,13 @@ public class RipPanel
|
||||
// add our next and cancel buttons
|
||||
_cancel = frame.addControlButton("Cancel", "cancel", this);
|
||||
_next = frame.addControlButton("Next...", "next", this);
|
||||
_next.setEnabled(false);
|
||||
_next.setEnabled(popped);
|
||||
|
||||
// create our info task and set it a running
|
||||
Task ripTask = new RipperTask(_info, _entry);
|
||||
TaskMaster.invokeTask("convert", ripTask, this);
|
||||
if (!popped) {
|
||||
// create our info task and set it a running
|
||||
Task ripTask = new RipperTask(_info, _entry);
|
||||
TaskMaster.invokeTask("convert", ripTask, this);
|
||||
}
|
||||
}
|
||||
|
||||
public void taskCompleted (String name, Object result)
|
||||
@@ -398,7 +400,7 @@ public class RipPanel
|
||||
System.exit(0);
|
||||
|
||||
} else if (cmd.equals("next")) {
|
||||
_frame.setPanel(new FinishedPanel(_entry));
|
||||
_frame.pushPanel(new FinishedPanel(_entry));
|
||||
|
||||
} else {
|
||||
System.out.println("Unknown action event: " + cmd);
|
||||
|
||||
Reference in New Issue
Block a user