From da352de418202e26a0a4ab559a634a363500e14a Mon Sep 17 00:00:00 2001 From: mdb Date: Thu, 12 Jul 2001 23:06:55 +0000 Subject: [PATCH] Cleaned things up, split primary UI so that we can add better playlist management. git-svn-id: https://samskivert.googlecode.com/svn/trunk@170 6335cc39-0255-0410-8fd6-9bcaacd3b74c --- .../src/java/robodj/chooser/BrowsePanel.java | 35 ++++++++++++ .../src/java/robodj/chooser/ChooserFrame.java | 42 +++++---------- .../src/java/robodj/chooser/EntryList.java | 8 +-- .../java/robodj/chooser/PlaylistPanel.java | 53 +++++++++++++++++++ .../src/java/robodj/util/ServerControl.java | 11 ++-- 5 files changed, 115 insertions(+), 34 deletions(-) create mode 100644 projects/robodj/src/java/robodj/chooser/BrowsePanel.java create mode 100644 projects/robodj/src/java/robodj/chooser/PlaylistPanel.java diff --git a/projects/robodj/src/java/robodj/chooser/BrowsePanel.java b/projects/robodj/src/java/robodj/chooser/BrowsePanel.java new file mode 100644 index 00000000..5de43ca1 --- /dev/null +++ b/projects/robodj/src/java/robodj/chooser/BrowsePanel.java @@ -0,0 +1,35 @@ +// +// $Id: BrowsePanel.java,v 1.1 2001/07/12 23:06:55 mdb Exp $ + +package robodj.chooser; + +// import java.awt.*; +// import java.awt.event.ActionEvent; +// import java.awt.event.ActionListener; +import javax.swing.*; + +// import com.samskivert.swing.*; +import robodj.repository.*; + +public class BrowsePanel extends JTabbedPane +{ + public BrowsePanel () + { + EntryList elist; + Category[] cats = Chooser.model.getCategories(); + + // create a tab for each category + for (int i = 0; i < cats.length; i++) { + elist = new EntryList(cats[i].categoryid); + String tip = "Browse entries in '" + cats[i].name + "' category."; + addTab(cats[i].name, null, elist, tip); + } + + // and add one for uncategorized entries + elist = new EntryList(-1); + addTab("Uncategorized", null, elist, + "Browse uncategorized entries."); + + setSelectedIndex(0); + } +} diff --git a/projects/robodj/src/java/robodj/chooser/ChooserFrame.java b/projects/robodj/src/java/robodj/chooser/ChooserFrame.java index f00f2b02..dd137f10 100644 --- a/projects/robodj/src/java/robodj/chooser/ChooserFrame.java +++ b/projects/robodj/src/java/robodj/chooser/ChooserFrame.java @@ -1,5 +1,5 @@ // -// $Id: ChooserFrame.java,v 1.3 2001/07/12 22:31:04 mdb Exp $ +// $Id: ChooserFrame.java,v 1.4 2001/07/12 23:06:55 mdb Exp $ package robodj.chooser; @@ -31,24 +31,15 @@ public class ChooserFrame // give ourselves a wee bit of a border top.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); - // the top of the UI is the playlist manager section + // the top of the UI is the browser and the playlist manager JTabbedPane tpane = new JTabbedPane(); - EntryList elist; - Category[] cats = Chooser.model.getCategories(); + BrowsePanel bpanel = new BrowsePanel(); + String tip = "Browse and select tunes to play."; + tpane.addTab("Browse", null, bpanel, tip); - // create a tab for each category - for (int i = 0; i < cats.length; i++) { - elist = new EntryList(cats[i].categoryid); - String tip = "Browse entries in '" + cats[i].name + "' category."; - tpane.addTab(cats[i].name, null, elist, tip); - } - - // and add one for uncategorized entries - elist = new EntryList(-1); - tpane.addTab("Uncategorized", null, elist, - "Browse uncategorized entries."); - - tpane.setSelectedIndex(0); + PlaylistPanel ppanel = new PlaylistPanel(); + tip = "View and manipulate the playlist."; + tpane.addTab("Playlist", null, ppanel, tip); top.add(tpane); // the bottom is the control bar @@ -57,8 +48,7 @@ public class ChooserFrame JPanel cbar = new JPanel(bgl); // add some fake control buttons for now - cbar.add(createControlButton("Play", "play")); - cbar.add(createControlButton("Pause", "pause")); + cbar.add(_pause = createControlButton("Pause", "pause")); cbar.add(createControlButton("Stop", "stop")); cbar.add(createControlButton("Skip", "skip")); cbar.add(createControlButton("Clear", "clear")); @@ -88,9 +78,13 @@ public class ChooserFrame } else if (cmd.equals("pause")) { Chooser.scontrol.pause(); + _pause.setLabel("Play"); + _pause.setActionCommand("play"); } else if (cmd.equals("play")) { Chooser.scontrol.play(); + _pause.setLabel("Pause"); + _pause.setActionCommand("Pause"); } else if (cmd.equals("clear")) { Chooser.scontrol.clear(); @@ -106,13 +100,5 @@ public class ChooserFrame } } - protected Component makeTextPanel (String text) - { - JPanel panel = new JPanel(false); - JLabel filler = new JLabel(text); - filler.setHorizontalAlignment(JLabel.CENTER); - panel.setLayout(new GridLayout(1, 1)); - panel.add(filler); - return panel; - } + protected JButton _pause; } diff --git a/projects/robodj/src/java/robodj/chooser/EntryList.java b/projects/robodj/src/java/robodj/chooser/EntryList.java index 9de25201..f7f732fa 100644 --- a/projects/robodj/src/java/robodj/chooser/EntryList.java +++ b/projects/robodj/src/java/robodj/chooser/EntryList.java @@ -1,5 +1,5 @@ // -// $Id: EntryList.java,v 1.2 2001/06/07 08:37:47 mdb Exp $ +// $Id: EntryList.java,v 1.3 2001/07/12 23:06:55 mdb Exp $ package robodj.chooser; @@ -66,7 +66,9 @@ public class EntryList } else if (name.equals("readAndPlay")) { for (int i = 0; i < _entry.songs.length; i++) { - Chooser.scontrol.append(_entry.songs[i].location); + Chooser.scontrol.append(_entry.songs[i].entryid, + _entry.songs[i].songid, + _entry.songs[i].location); } } else if (name.equals("readSongs")) { @@ -259,7 +261,7 @@ public class EntryList } else if (cmd.equals("play")) { JButton src = (JButton)e.getSource(); Song song = (Song)src.getClientProperty("song"); - Chooser.scontrol.append(song.location); + Chooser.scontrol.append(song.entryid, song.songid, song.location); } else if (cmd.equals("up")) { // re-read the category beacuse this entry may have been diff --git a/projects/robodj/src/java/robodj/chooser/PlaylistPanel.java b/projects/robodj/src/java/robodj/chooser/PlaylistPanel.java new file mode 100644 index 00000000..a1e3d651 --- /dev/null +++ b/projects/robodj/src/java/robodj/chooser/PlaylistPanel.java @@ -0,0 +1,53 @@ +// +// $Id: PlaylistPanel.java,v 1.1 2001/07/12 23:06:55 mdb Exp $ + +package robodj.chooser; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.*; + +import com.samskivert.swing.*; + +public class PlaylistPanel + extends JPanel + implements ActionListener +{ + public PlaylistPanel () + { + GroupLayout gl = new VGroupLayout(GroupLayout.STRETCH); + gl.setOffAxisPolicy(GroupLayout.STRETCH); + setLayout(gl); + + // create the pane that will hold the buttons + gl = new VGroupLayout(GroupLayout.NONE); + gl.setJustification(GroupLayout.TOP); + _bpanel = new JPanel(gl); + + // give ourselves a wee bit of a border + _bpanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + + // put it into a scrolling pane + JScrollPane bscroll = new JScrollPane(_bpanel); + add(bscroll); + + // add our navigation button + _clearbut = new JButton("Clear"); + _clearbut.setActionCommand("clear"); + _clearbut.addActionListener(this); + add(_clearbut, GroupLayout.FIXED); + } + + public void actionPerformed (ActionEvent e) + { + String cmd = e.getActionCommand(); + if (cmd.equals("...")) { + + } else if (cmd.equals("clear")) { + Chooser.scontrol.clear(); + } + } + + protected JPanel _bpanel; + protected JButton _clearbut; +} diff --git a/projects/robodj/src/java/robodj/util/ServerControl.java b/projects/robodj/src/java/robodj/util/ServerControl.java index 4e198964..a9cf988a 100644 --- a/projects/robodj/src/java/robodj/util/ServerControl.java +++ b/projects/robodj/src/java/robodj/util/ServerControl.java @@ -1,5 +1,5 @@ // -// $Id: ServerControl.java,v 1.1 2001/06/05 16:42:17 mdb Exp $ +// $Id: ServerControl.java,v 1.2 2001/07/12 23:06:55 mdb Exp $ package robodj.util; @@ -52,9 +52,14 @@ public class ServerControl sendCommand("SKIP"); } - public void append (String trackPath) + public void append (int eid, int sid, String trackPath) { - sendCommand("APPEND " + trackPath); + sendCommand("APPEND " + eid + " " + sid + " " + trackPath); + } + + public void remove (int sid) + { + sendCommand("REMOVE " + sid); } public String[] getPlaylist ()