From d8e79c33631bebf46e10bc1ca84a8b603ba3158c Mon Sep 17 00:00:00 2001 From: Bram Veenboer Date: Sun, 6 Mar 2011 13:05:36 +0000 Subject: [PATCH] Verder gewerkt aan PanelDevice. Feedback moet algemeen worden voor Devices. --- java/resource/icons/unmute.png | Bin 0 -> 3413 bytes java/src/pm/Main.java | 2 +- java/src/pm/device/panel/Panel.java | 324 +++++++++--------- java/src/pm/device/panel/PanelButton.java | 4 +- java/src/pm/util/ArrayCycle.java | 6 + java/src/pm/util/swing/CycleButton.java | 22 ++ .../panel => util/swing}/HoldButton.java | 2 +- .../swing}/HoldButtonListener.java | 2 +- java/src/pm/util/swing/ToggleButton.java | 18 + 9 files changed, 211 insertions(+), 169 deletions(-) create mode 100644 java/resource/icons/unmute.png create mode 100644 java/src/pm/util/swing/CycleButton.java rename java/src/pm/{device/panel => util/swing}/HoldButton.java (93%) rename java/src/pm/{device/panel => util/swing}/HoldButtonListener.java (82%) create mode 100644 java/src/pm/util/swing/ToggleButton.java diff --git a/java/resource/icons/unmute.png b/java/resource/icons/unmute.png new file mode 100644 index 0000000000000000000000000000000000000000..c76c3d64b371985cc54f95d8c091941977b00eb3 GIT binary patch literal 3413 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 literal 0 HcmV?d00001 diff --git a/java/src/pm/Main.java b/java/src/pm/Main.java index 6f33feb..c4f0720 100644 --- a/java/src/pm/Main.java +++ b/java/src/pm/Main.java @@ -52,7 +52,7 @@ public class Main extends EventListener { } public void initialise() throws DeviceInitialiseException { - //add(new JIntellitypeDevice()); + add(new JIntellitypeDevice()); //add(new PlayerDevice()); add(new RumblepadDevice()); //add(new WiimoteDevice()); diff --git a/java/src/pm/device/panel/Panel.java b/java/src/pm/device/panel/Panel.java index d43a2f3..2abd75d 100644 --- a/java/src/pm/device/panel/Panel.java +++ b/java/src/pm/device/panel/Panel.java @@ -1,156 +1,163 @@ package pm.device.panel; import java.awt.BorderLayout; -import java.awt.FlowLayout; import java.net.URL; import javax.swing.ImageIcon; -import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; -import javax.swing.JTextField; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; +import javax.swing.JScrollBar; +import javax.swing.JScrollPane; +import javax.swing.JTextArea; +import javax.swing.ScrollPaneConstants; +import pm.util.swing.HoldButton; +import pm.util.swing.HoldButtonListener; +import pm.util.swing.ToggleButton; -public class Panel extends JFrame implements ChangeListener, HoldButtonListener { - protected static final long serialVersionUID = 1L; +public class Panel extends JFrame implements HoldButtonListener { + protected static final long serialVersionUID = 1L; protected final static String TITLE = "MIMIS Panel Device"; protected PanelButtonListener panelButtonListener; - protected ClassLoader classLoader; + protected ClassLoader classLoader; - protected JButton previousButton; - protected JButton rewindButton; - protected JButton stopButton; - protected JButton pauseButton; - protected JButton playButton; - protected JButton forwardButton; - protected JButton nextButton; - protected JButton volumeDownButton; - protected JButton muteButton; - protected JButton volumeUpButton; - protected boolean setPositionValue; + protected JTextArea feedbackArea; + protected JScrollPane scrollPane; - Panel(PanelButtonListener panelButtonListener) { - super(TITLE); - this.panelButtonListener = panelButtonListener; - classLoader = getClass().getClassLoader(); - createControls(); - layoutControls(); - pack(); - setResizable(false); - setVisible(true); - } + protected HoldButton previousButton; + protected HoldButton rewindButton; + protected HoldButton stopButton; + protected ToggleButton playPauseToggleButton; + protected HoldButton forwardButton; + protected HoldButton nextButton; + protected HoldButton volumeDownButton; + protected ToggleButton muteToggleButton; + protected HoldButton volumeUpButton; + protected HoldButton repeatButton; + protected HoldButton shuffleButton; - protected URL getResource(String name) { - return classLoader.getResource(name); - } + Panel(PanelButtonListener panelButtonListener) { + super(TITLE); + this.panelButtonListener = panelButtonListener; + classLoader = getClass().getClassLoader(); + createControls(); + layoutControls(); + pack(); + setResizable(false); + setVisible(true); + } - protected ImageIcon getImageIcon(String name) { - return new ImageIcon(getResource(name)); - } + protected URL getResource(String name) { + return classLoader.getResource(name); + } - protected JButton getButton(String name, String text) { - JButton button = (JButton) new HoldButton(this); - button.setIcon(getImageIcon(name)); - button.setToolTipText(text); - return button; - } + protected ImageIcon getImageIcon(String name) { + return new ImageIcon(getResource(name)); + } - protected void createControls() { - previousButton = getButton("icons/previous.png", "Go to previous track"); - rewindButton = getButton("icons/rewind.png", "Skip backward"); - stopButton = getButton("icons/stop.png", "Stop"); - pauseButton = getButton("icons/pause.png", "Play/pause"); - playButton = getButton("icons/play.png", "Play/pause"); - forwardButton = getButton("icons/forward.png", "Skip forward"); - nextButton = getButton("icons/next.png", "Go to next track"); + protected HoldButton getButton(String name, String text) { + HoldButton button = new HoldButton(this); + button.setIcon(getImageIcon(name)); + button.setToolTipText(text); + button.setFocusPainted(false); + return button; + } + + protected ToggleButton getToggleButton(String firstName, String secondName, String text) { + ImageIcon firstImageIcon = getImageIcon(firstName); + ImageIcon secondImageIcon = getImageIcon(secondName); + ToggleButton button = new ToggleButton(this, firstImageIcon, secondImageIcon); + button.setToolTipText(text); + button.setFocusPainted(false); + return button; + } + + protected void createControls() { + previousButton = getButton("icons/previous.png", "Go to previous track"); + rewindButton = getButton("icons/rewind.png", "Skip backward"); + playPauseToggleButton = getToggleButton("icons/play.png", "icons/pause.png", "Play/pause");//getButton("icons/play.png", "Play/pause"); + forwardButton = getButton("icons/forward.png", "Skip forward"); + nextButton = getButton("icons/next.png", "Go to next track"); volumeDownButton = getButton("icons/volumeDown.png", "Decrease volume"); - muteButton = getButton("icons/mute.png", "Toggle Mute"); - volumeUpButton = getButton("icons/volumeUp.png", "Increase volume"); - } + muteToggleButton = getToggleButton("icons/mute.png", "icons/unmute.png", "Toggle Mute"); + volumeUpButton = getButton("icons/volumeUp.png", "Increase volume"); + repeatButton = getButton("icons/repeat.png", "Repeat"); + shuffleButton = getButton("icons/shuffle.png", "Shuffle"); + } - protected void layoutControls() { - //setLayout(new BorderLayout()); - - - //JPanel positionPanel = new JPanel(); - - /* Feedback panel */ - JPanel feedbackPanel = new JPanel(); - JTextField feedbackField = new JTextField("Hier komt allerlei feedback te staan!", 64); - feedbackField.setEditable(false); - feedbackPanel.add(feedbackField); - - add(feedbackPanel, BorderLayout.NORTH); - - /* Control panel */ - JPanel controlPanel = new JPanel(); + protected void layoutControls() { + setLayout(new BorderLayout()); + layoutFeedbackPanel(); + layoutControlPanel(); + } + + protected void layoutFeedbackPanel() { + JPanel feedbackPanel = new JPanel(); + feedbackArea = new JTextArea(10, 32); + feedbackArea.setEditable(false); + feedbackPanel.add(feedbackArea); + + scrollPane = new JScrollPane(); + scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); + scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); + scrollPane.getViewport().add(feedbackArea); + feedbackPanel.add(scrollPane); + + add(feedbackPanel, BorderLayout.SOUTH); + + feedbackArea.append("Hier komt allerlei feedback te staan!\n"); + feedbackArea.append("Hier komt allerlei feedback te staan!\n"); + feedbackArea.append("Hier komt allerlei feedback te staan!\n"); + feedbackArea.append("Hier komt allerlei feedback te staan!\n"); + feedbackArea.append("Hier komt allerlei feedback te staan!\n"); + feedbackArea.append("Hier komt allerlei feedback te staan!\n"); + feedbackArea.append("Hier komt allerlei feedback te staan!\n"); + feedbackArea.append("Hier komt allerlei feedback te staan!\n"); + feedbackArea.append("Hier komt allerlei feedback te staan!\n"); + feedbackArea.append("Hier komt allerlei feedback te staan!\n"); + feedbackArea.append("Hier komt allerlei feedback te staan!\n"); + feedbackArea.append("Hier komt allerlei feedback te staan!\n"); + feedbackArea.append("Hier komt allerlei feedback te staan!\n"); + feedbackArea.append("Hier komt allerlei feedback te staan!\n"); + feedbackArea.append("Hier komt allerlei feedback te staan!\n"); + feedbackArea.append("Hier komt allerlei feedback te staan!\n"); + feedbackArea.append("Hier komt allerlei feedback te staan!\n"); + + + JScrollBar scrollBar = scrollPane.getVerticalScrollBar(); + scrollBar.setValue(scrollBar.getMaximum()); + } - controlPanel.add(previousButton); - controlPanel.add(rewindButton); - controlPanel.add(stopButton); - controlPanel.add(pauseButton); - controlPanel.add(playButton); - controlPanel.add(forwardButton); - controlPanel.add(nextButton); - controlPanel.add(volumeDownButton); - controlPanel.add(muteButton); - controlPanel.add(volumeUpButton); - - add(controlPanel, BorderLayout.CENTER); - /* TODO: zorg dat de knoppen 4x3 of 3x4 staan, voeg shuffle en repeat toe + protected void layoutControlPanel() { JPanel controlPanel = new JPanel(); + controlPanel.setLayout(new BorderLayout()); - JPanel seekPanel = new JPanel(); - seekPanel.add(previousButton); - seekPanel.add(rewindButton); - seekPanel.add(forwardButton); - seekPanel.add(nextButton); + JPanel upperControlPanel = new JPanel(); + controlPanel.add(upperControlPanel, BorderLayout.NORTH); + upperControlPanel.add(previousButton); + upperControlPanel.add(rewindButton); + upperControlPanel.add(playPauseToggleButton); + upperControlPanel.add(forwardButton); + upperControlPanel.add(nextButton); - JPanel modePanel = new JPanel(); - controlPanel.add(stopButton); - controlPanel.add(pauseButton); - controlPanel.add(playButton); - - JPanel volumePanel = new JPanel(); - controlPanel.add(volumeDownButton); - controlPanel.add(muteButton); - controlPanel.add(volumeUpButton); + JPanel lowerControlPanel = new JPanel(); + controlPanel.add(lowerControlPanel, BorderLayout.SOUTH); + lowerControlPanel.add(repeatButton); + lowerControlPanel.add(volumeDownButton); + lowerControlPanel.add(muteToggleButton); + lowerControlPanel.add(volumeUpButton); + lowerControlPanel.add(shuffleButton); - controlPanel.add(seekPanel); - controlPanel.add(modePanel); - controlPanel.add(volumePanel); - add(controlPanel, BorderLayout.CENTER); - */ - } + } - /* Listeners */ - public void stateChanged(ChangeEvent event) { - /* Wordt niet meer gebruikt - Object source = event.getSource(); - if (positionSlider.equals(source)) { - if (!setPositionValue) { - float positionValue = (float) positionSlider.getValue() / 100.0f; - System.out.println(positionValue); - } - } else if (volumeSlider.equals(source)) { - - } - */ - } - - public void buttonPressed(HoldButton button) { - if (button.equals(previousButton)) { - panelButtonListener.buttonPressed(PanelButton.PREVIOUS); - } else if (button.equals(rewindButton)) { - panelButtonListener.buttonPressed(PanelButton.REWIND); - } else if (button.equals(stopButton)) { - panelButtonListener.buttonPressed(PanelButton.STOP); - } else if (button.equals(pauseButton)) { - panelButtonListener.buttonPressed(PanelButton.PAUSE); - } else if (button.equals(playButton)) { + /* Listeners */ + public void buttonPressed(HoldButton button) { + if (button.equals(previousButton)) { + panelButtonListener.buttonPressed(PanelButton.PREVIOUS); + } else if (button.equals(rewindButton)) { + panelButtonListener.buttonPressed(PanelButton.REWIND); + } else if (button.equals(playPauseToggleButton)) { panelButtonListener.buttonPressed(PanelButton.PLAY); } else if (button.equals(forwardButton)) { panelButtonListener.buttonPressed(PanelButton.FORWARD); @@ -158,64 +165,51 @@ public class Panel extends JFrame implements ChangeListener, HoldButtonListener panelButtonListener.buttonPressed(PanelButton.NEXT); } else if (button.equals(volumeDownButton)) { panelButtonListener.buttonPressed(PanelButton.VOLUME_DOWN); - } else if (button.equals(muteButton)) { + } else if (button.equals(muteToggleButton)) { panelButtonListener.buttonPressed(PanelButton.MUTE); } else if (button.equals(volumeUpButton)) { panelButtonListener.buttonPressed(PanelButton.VOLUME_UP); + } else if (button.equals(repeatButton)) { + panelButtonListener.buttonPressed(PanelButton.REPEAT); + } else if (button.equals(shuffleButton)) { + panelButtonListener.buttonPressed(PanelButton.SHUFFLE); } - } + } - public void buttonReleased(HoldButton button) { - if (button.equals(previousButton)) { + public void buttonReleased(HoldButton button) { + if (button.equals(previousButton)) { panelButtonListener.buttonReleased(PanelButton.PREVIOUS); } else if (button.equals(rewindButton)) { panelButtonListener.buttonReleased(PanelButton.REWIND); - } else if (button.equals(stopButton)) { - panelButtonListener.buttonReleased(PanelButton.STOP); - } else if (button.equals(pauseButton)) { - panelButtonListener.buttonReleased(PanelButton.PAUSE); - } else if (button.equals(playButton)) { + } else if (button.equals(playPauseToggleButton)) { panelButtonListener.buttonReleased(PanelButton.PLAY); + playPauseToggleButton.toggle(); } else if (button.equals(forwardButton)) { panelButtonListener.buttonReleased(PanelButton.FORWARD); } else if (button.equals(nextButton)) { panelButtonListener.buttonReleased(PanelButton.NEXT); } else if (button.equals(volumeDownButton)) { panelButtonListener.buttonReleased(PanelButton.VOLUME_DOWN); - } else if (button.equals(muteButton)) { + } else if (button.equals(muteToggleButton)) { panelButtonListener.buttonReleased(PanelButton.MUTE); + muteToggleButton.toggle(); } else if (button.equals(volumeUpButton)) { panelButtonListener.buttonReleased(PanelButton.VOLUME_UP); + } else if (button.equals(repeatButton)) { + panelButtonListener.buttonReleased(PanelButton.REPEAT); + } else if (button.equals(shuffleButton)) { + panelButtonListener.buttonReleased(PanelButton.SHUFFLE); } - } + } - /* Update, is niet meer nodig? Alle informatie wordt in het TextField geprint - public void updateTime(long millis) { - String s = String.format( - "%02d:%02d:%02d", - TimeUnit.MILLISECONDS.toHours(millis), - TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)), - TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))); - timeLabel.setText(s); - } + /* Feedback */ + public void addFeedback(String format, Object... args) { + feedbackArea.append(String.format(format, args)); + JScrollBar scrollBar = scrollPane.getVerticalScrollBar(); + scrollBar.setValue(scrollBar.getMaximum()); + } - public void updatePosition(int value) { - positionProgressBar.setValue(value); - setPositionValue = true; - positionSlider.setValue(value); - setPositionValue = false; - } - - public void updateChapter(int chapter, int chapterCount) { - String s = chapterCount != -1 ? (chapter + 1) + "/" + chapterCount - : "-"; - chapterLabel.setText(s); - chapterLabel.invalidate(); - validate(); - } - - public void updateVolume(int value) { - volumeSlider.setValue(value); - } - */ + public void clearFeedback() { + feedbackArea.setText(""); + } } diff --git a/java/src/pm/device/panel/PanelButton.java b/java/src/pm/device/panel/PanelButton.java index deffba5..0154b26 100644 --- a/java/src/pm/device/panel/PanelButton.java +++ b/java/src/pm/device/panel/PanelButton.java @@ -12,5 +12,7 @@ public enum PanelButton implements Button { NEXT, VOLUME_DOWN, MUTE, - VOLUME_UP; + VOLUME_UP, + REPEAT, + SHUFFLE; } diff --git a/java/src/pm/util/ArrayCycle.java b/java/src/pm/util/ArrayCycle.java index af91eb2..7a5372d 100644 --- a/java/src/pm/util/ArrayCycle.java +++ b/java/src/pm/util/ArrayCycle.java @@ -7,6 +7,12 @@ public class ArrayCycle extends ArrayList { protected int index = 0; + public ArrayCycle(E... elementArary) { + for (E element : elementArary) { + add(element); + } + } + public E current() { return this.get(index); } diff --git a/java/src/pm/util/swing/CycleButton.java b/java/src/pm/util/swing/CycleButton.java new file mode 100644 index 0000000..68c12a4 --- /dev/null +++ b/java/src/pm/util/swing/CycleButton.java @@ -0,0 +1,22 @@ +package pm.util.swing; + +import javax.swing.ImageIcon; + +import pm.util.ArrayCycle; + +public class CycleButton extends HoldButton { + protected static final long serialVersionUID = 1L; + + protected ArrayCycle imageIconCycle; + + public CycleButton(HoldButtonListener holdButtonListener, ArrayCycle imageIconCycle) { + super(holdButtonListener); + this.imageIconCycle = imageIconCycle; + cycle(); + } + + public void cycle() { + setIcon(imageIconCycle.current()); + imageIconCycle.next(); + } +} diff --git a/java/src/pm/device/panel/HoldButton.java b/java/src/pm/util/swing/HoldButton.java similarity index 93% rename from java/src/pm/device/panel/HoldButton.java rename to java/src/pm/util/swing/HoldButton.java index 8abc9ce..d66f963 100644 --- a/java/src/pm/device/panel/HoldButton.java +++ b/java/src/pm/util/swing/HoldButton.java @@ -1,4 +1,4 @@ -package pm.device.panel; +package pm.util.swing; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; diff --git a/java/src/pm/device/panel/HoldButtonListener.java b/java/src/pm/util/swing/HoldButtonListener.java similarity index 82% rename from java/src/pm/device/panel/HoldButtonListener.java rename to java/src/pm/util/swing/HoldButtonListener.java index fe21235..46cab12 100644 --- a/java/src/pm/device/panel/HoldButtonListener.java +++ b/java/src/pm/util/swing/HoldButtonListener.java @@ -1,4 +1,4 @@ -package pm.device.panel; +package pm.util.swing; public interface HoldButtonListener { public void buttonPressed(HoldButton button); diff --git a/java/src/pm/util/swing/ToggleButton.java b/java/src/pm/util/swing/ToggleButton.java new file mode 100644 index 0000000..9efe7b4 --- /dev/null +++ b/java/src/pm/util/swing/ToggleButton.java @@ -0,0 +1,18 @@ +package pm.util.swing; + +import javax.swing.ImageIcon; +import javax.swing.JButton; + +import pm.util.ArrayCycle; + +public class ToggleButton extends CycleButton { + protected static final long serialVersionUID = 1L; + + public ToggleButton(HoldButtonListener holdButtonListener, ImageIcon firstImageIcon, ImageIcon secondImageIcon) { + super(holdButtonListener, new ArrayCycle(firstImageIcon, secondImageIcon)); + } + + public void toggle() { + cycle(); + } +}