Verder gewerkt aan PanelDevice. Feedback moet algemeen worden voor Devices.
This commit is contained in:
BIN
java/resource/icons/unmute.png
Normal file
BIN
java/resource/icons/unmute.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.3 KiB |
@@ -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());
|
||||
|
||||
@@ -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("");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,5 +12,7 @@ public enum PanelButton implements Button {
|
||||
NEXT,
|
||||
VOLUME_DOWN,
|
||||
MUTE,
|
||||
VOLUME_UP;
|
||||
VOLUME_UP,
|
||||
REPEAT,
|
||||
SHUFFLE;
|
||||
}
|
||||
|
||||
@@ -7,6 +7,12 @@ public class ArrayCycle<E> extends ArrayList<E> {
|
||||
|
||||
protected int index = 0;
|
||||
|
||||
public ArrayCycle(E... elementArary) {
|
||||
for (E element : elementArary) {
|
||||
add(element);
|
||||
}
|
||||
}
|
||||
|
||||
public E current() {
|
||||
return this.get(index);
|
||||
}
|
||||
|
||||
22
java/src/pm/util/swing/CycleButton.java
Normal file
22
java/src/pm/util/swing/CycleButton.java
Normal 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();
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package pm.device.panel;
|
||||
package pm.util.swing;
|
||||
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseListener;
|
||||
@@ -1,4 +1,4 @@
|
||||
package pm.device.panel;
|
||||
package pm.util.swing;
|
||||
|
||||
public interface HoldButtonListener {
|
||||
public void buttonPressed(HoldButton button);
|
||||
18
java/src/pm/util/swing/ToggleButton.java
Normal file
18
java/src/pm/util/swing/ToggleButton.java
Normal 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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user