Verder gewerkt aan PanelDevice. Feedback moet algemeen worden voor Devices.

This commit is contained in:
Bram Veenboer
2011-03-06 13:05:36 +00:00
parent b38f9541d5
commit d8e79c3363
9 changed files with 211 additions and 169 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -52,7 +52,7 @@ public class Main extends EventListener {
} }
public void initialise() throws DeviceInitialiseException { public void initialise() throws DeviceInitialiseException {
//add(new JIntellitypeDevice()); add(new JIntellitypeDevice());
//add(new PlayerDevice()); //add(new PlayerDevice());
add(new RumblepadDevice()); add(new RumblepadDevice());
//add(new WiimoteDevice()); //add(new WiimoteDevice());

View File

@@ -1,35 +1,40 @@
package pm.device.panel; package pm.device.panel;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.net.URL; import java.net.URL;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.JTextField; import javax.swing.JScrollBar;
import javax.swing.event.ChangeEvent; import javax.swing.JScrollPane;
import javax.swing.event.ChangeListener; 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 { public class Panel extends JFrame implements HoldButtonListener {
protected static final long serialVersionUID = 1L; protected static final long serialVersionUID = 1L;
protected final static String TITLE = "MIMIS Panel Device"; protected final static String TITLE = "MIMIS Panel Device";
protected PanelButtonListener panelButtonListener; protected PanelButtonListener panelButtonListener;
protected ClassLoader classLoader; protected ClassLoader classLoader;
protected JButton previousButton; protected JTextArea feedbackArea;
protected JButton rewindButton; protected JScrollPane scrollPane;
protected JButton stopButton;
protected JButton pauseButton; protected HoldButton previousButton;
protected JButton playButton; protected HoldButton rewindButton;
protected JButton forwardButton; protected HoldButton stopButton;
protected JButton nextButton; protected ToggleButton playPauseToggleButton;
protected JButton volumeDownButton; protected HoldButton forwardButton;
protected JButton muteButton; protected HoldButton nextButton;
protected JButton volumeUpButton; protected HoldButton volumeDownButton;
protected boolean setPositionValue; protected ToggleButton muteToggleButton;
protected HoldButton volumeUpButton;
protected HoldButton repeatButton;
protected HoldButton shuffleButton;
Panel(PanelButtonListener panelButtonListener) { Panel(PanelButtonListener panelButtonListener) {
super(TITLE); super(TITLE);
@@ -50,107 +55,109 @@ public class Panel extends JFrame implements ChangeListener, HoldButtonListener
return new ImageIcon(getResource(name)); return new ImageIcon(getResource(name));
} }
protected JButton getButton(String name, String text) { protected HoldButton getButton(String name, String text) {
JButton button = (JButton) new HoldButton(this); HoldButton button = new HoldButton(this);
button.setIcon(getImageIcon(name)); button.setIcon(getImageIcon(name));
button.setToolTipText(text); 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; return button;
} }
protected void createControls() { protected void createControls() {
previousButton = getButton("icons/previous.png", "Go to previous track"); previousButton = getButton("icons/previous.png", "Go to previous track");
rewindButton = getButton("icons/rewind.png", "Skip backward"); rewindButton = getButton("icons/rewind.png", "Skip backward");
stopButton = getButton("icons/stop.png", "Stop"); playPauseToggleButton = getToggleButton("icons/play.png", "icons/pause.png", "Play/pause");//getButton("icons/play.png", "Play/pause");
pauseButton = getButton("icons/pause.png", "Play/pause");
playButton = getButton("icons/play.png", "Play/pause");
forwardButton = getButton("icons/forward.png", "Skip forward"); forwardButton = getButton("icons/forward.png", "Skip forward");
nextButton = getButton("icons/next.png", "Go to next track"); nextButton = getButton("icons/next.png", "Go to next track");
volumeDownButton = getButton("icons/volumeDown.png", "Decrease volume"); volumeDownButton = getButton("icons/volumeDown.png", "Decrease volume");
muteButton = getButton("icons/mute.png", "Toggle Mute"); muteToggleButton = getToggleButton("icons/mute.png", "icons/unmute.png", "Toggle Mute");
volumeUpButton = getButton("icons/volumeUp.png", "Increase volume"); volumeUpButton = getButton("icons/volumeUp.png", "Increase volume");
repeatButton = getButton("icons/repeat.png", "Repeat");
shuffleButton = getButton("icons/shuffle.png", "Shuffle");
} }
protected void layoutControls() { protected void layoutControls() {
//setLayout(new BorderLayout()); setLayout(new BorderLayout());
layoutFeedbackPanel();
layoutControlPanel();
}
protected void layoutFeedbackPanel() {
//JPanel positionPanel = new JPanel();
/* Feedback panel */
JPanel feedbackPanel = new JPanel(); JPanel feedbackPanel = new JPanel();
JTextField feedbackField = new JTextField("Hier komt allerlei feedback te staan!", 64); feedbackArea = new JTextArea(10, 32);
feedbackField.setEditable(false); feedbackArea.setEditable(false);
feedbackPanel.add(feedbackField); feedbackPanel.add(feedbackArea);
add(feedbackPanel, BorderLayout.NORTH); scrollPane = new JScrollPane();
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scrollPane.getViewport().add(feedbackArea);
feedbackPanel.add(scrollPane);
/* Control panel */ 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());
}
protected void layoutControlPanel() {
JPanel controlPanel = new JPanel(); JPanel controlPanel = new JPanel();
controlPanel.setLayout(new BorderLayout());
controlPanel.add(previousButton); JPanel upperControlPanel = new JPanel();
controlPanel.add(rewindButton); controlPanel.add(upperControlPanel, BorderLayout.NORTH);
controlPanel.add(stopButton); upperControlPanel.add(previousButton);
controlPanel.add(pauseButton); upperControlPanel.add(rewindButton);
controlPanel.add(playButton); upperControlPanel.add(playPauseToggleButton);
controlPanel.add(forwardButton); upperControlPanel.add(forwardButton);
controlPanel.add(nextButton); upperControlPanel.add(nextButton);
controlPanel.add(volumeDownButton);
controlPanel.add(muteButton); JPanel lowerControlPanel = new JPanel();
controlPanel.add(volumeUpButton); controlPanel.add(lowerControlPanel, BorderLayout.SOUTH);
lowerControlPanel.add(repeatButton);
lowerControlPanel.add(volumeDownButton);
lowerControlPanel.add(muteToggleButton);
lowerControlPanel.add(volumeUpButton);
lowerControlPanel.add(shuffleButton);
add(controlPanel, BorderLayout.CENTER); add(controlPanel, BorderLayout.CENTER);
/* TODO: zorg dat de knoppen 4x3 of 3x4 staan, voeg shuffle en repeat toe
JPanel controlPanel = new JPanel();
JPanel seekPanel = new JPanel();
seekPanel.add(previousButton);
seekPanel.add(rewindButton);
seekPanel.add(forwardButton);
seekPanel.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);
controlPanel.add(seekPanel);
controlPanel.add(modePanel);
controlPanel.add(volumePanel);
add(controlPanel, BorderLayout.CENTER);
*/
} }
/* Listeners */ /* 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) { public void buttonPressed(HoldButton button) {
if (button.equals(previousButton)) { if (button.equals(previousButton)) {
panelButtonListener.buttonPressed(PanelButton.PREVIOUS); panelButtonListener.buttonPressed(PanelButton.PREVIOUS);
} else if (button.equals(rewindButton)) { } else if (button.equals(rewindButton)) {
panelButtonListener.buttonPressed(PanelButton.REWIND); panelButtonListener.buttonPressed(PanelButton.REWIND);
} else if (button.equals(stopButton)) { } else if (button.equals(playPauseToggleButton)) {
panelButtonListener.buttonPressed(PanelButton.STOP);
} else if (button.equals(pauseButton)) {
panelButtonListener.buttonPressed(PanelButton.PAUSE);
} else if (button.equals(playButton)) {
panelButtonListener.buttonPressed(PanelButton.PLAY); panelButtonListener.buttonPressed(PanelButton.PLAY);
} else if (button.equals(forwardButton)) { } else if (button.equals(forwardButton)) {
panelButtonListener.buttonPressed(PanelButton.FORWARD); panelButtonListener.buttonPressed(PanelButton.FORWARD);
@@ -158,10 +165,14 @@ public class Panel extends JFrame implements ChangeListener, HoldButtonListener
panelButtonListener.buttonPressed(PanelButton.NEXT); panelButtonListener.buttonPressed(PanelButton.NEXT);
} else if (button.equals(volumeDownButton)) { } else if (button.equals(volumeDownButton)) {
panelButtonListener.buttonPressed(PanelButton.VOLUME_DOWN); panelButtonListener.buttonPressed(PanelButton.VOLUME_DOWN);
} else if (button.equals(muteButton)) { } else if (button.equals(muteToggleButton)) {
panelButtonListener.buttonPressed(PanelButton.MUTE); panelButtonListener.buttonPressed(PanelButton.MUTE);
} else if (button.equals(volumeUpButton)) { } else if (button.equals(volumeUpButton)) {
panelButtonListener.buttonPressed(PanelButton.VOLUME_UP); panelButtonListener.buttonPressed(PanelButton.VOLUME_UP);
} else if (button.equals(repeatButton)) {
panelButtonListener.buttonPressed(PanelButton.REPEAT);
} else if (button.equals(shuffleButton)) {
panelButtonListener.buttonPressed(PanelButton.SHUFFLE);
} }
} }
@@ -170,52 +181,35 @@ public class Panel extends JFrame implements ChangeListener, HoldButtonListener
panelButtonListener.buttonReleased(PanelButton.PREVIOUS); panelButtonListener.buttonReleased(PanelButton.PREVIOUS);
} else if (button.equals(rewindButton)) { } else if (button.equals(rewindButton)) {
panelButtonListener.buttonReleased(PanelButton.REWIND); panelButtonListener.buttonReleased(PanelButton.REWIND);
} else if (button.equals(stopButton)) { } else if (button.equals(playPauseToggleButton)) {
panelButtonListener.buttonReleased(PanelButton.STOP);
} else if (button.equals(pauseButton)) {
panelButtonListener.buttonReleased(PanelButton.PAUSE);
} else if (button.equals(playButton)) {
panelButtonListener.buttonReleased(PanelButton.PLAY); panelButtonListener.buttonReleased(PanelButton.PLAY);
playPauseToggleButton.toggle();
} else if (button.equals(forwardButton)) { } else if (button.equals(forwardButton)) {
panelButtonListener.buttonReleased(PanelButton.FORWARD); panelButtonListener.buttonReleased(PanelButton.FORWARD);
} else if (button.equals(nextButton)) { } else if (button.equals(nextButton)) {
panelButtonListener.buttonReleased(PanelButton.NEXT); panelButtonListener.buttonReleased(PanelButton.NEXT);
} else if (button.equals(volumeDownButton)) { } else if (button.equals(volumeDownButton)) {
panelButtonListener.buttonReleased(PanelButton.VOLUME_DOWN); panelButtonListener.buttonReleased(PanelButton.VOLUME_DOWN);
} else if (button.equals(muteButton)) { } else if (button.equals(muteToggleButton)) {
panelButtonListener.buttonReleased(PanelButton.MUTE); panelButtonListener.buttonReleased(PanelButton.MUTE);
muteToggleButton.toggle();
} else if (button.equals(volumeUpButton)) { } else if (button.equals(volumeUpButton)) {
panelButtonListener.buttonReleased(PanelButton.VOLUME_UP); 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 /* Feedback */
public void updateTime(long millis) { public void addFeedback(String format, Object... args) {
String s = String.format( feedbackArea.append(String.format(format, args));
"%02d:%02d:%02d", JScrollBar scrollBar = scrollPane.getVerticalScrollBar();
TimeUnit.MILLISECONDS.toHours(millis), scrollBar.setValue(scrollBar.getMaximum());
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);
} }
public void updatePosition(int value) { public void clearFeedback() {
positionProgressBar.setValue(value); feedbackArea.setText("");
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);
}
*/
} }

View File

@@ -12,5 +12,7 @@ public enum PanelButton implements Button {
NEXT, NEXT,
VOLUME_DOWN, VOLUME_DOWN,
MUTE, MUTE,
VOLUME_UP; VOLUME_UP,
REPEAT,
SHUFFLE;
} }

View File

@@ -7,6 +7,12 @@ public class ArrayCycle<E> extends ArrayList<E> {
protected int index = 0; protected int index = 0;
public ArrayCycle(E... elementArary) {
for (E element : elementArary) {
add(element);
}
}
public E current() { public E current() {
return this.get(index); return this.get(index);
} }

View File

@@ -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<ImageIcon> imageIconCycle;
public CycleButton(HoldButtonListener holdButtonListener, ArrayCycle<ImageIcon> imageIconCycle) {
super(holdButtonListener);
this.imageIconCycle = imageIconCycle;
cycle();
}
public void cycle() {
setIcon(imageIconCycle.current());
imageIconCycle.next();
}
}

View File

@@ -1,4 +1,4 @@
package pm.device.panel; package pm.util.swing;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.MouseListener; import java.awt.event.MouseListener;

View File

@@ -1,4 +1,4 @@
package pm.device.panel; package pm.util.swing;
public interface HoldButtonListener { public interface HoldButtonListener {
public void buttonPressed(HoldButton button); public void buttonPressed(HoldButton button);

View File

@@ -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<ImageIcon>(firstImageIcon, secondImageIcon));
}
public void toggle() {
cycle();
}
}