diff --git a/java/src/mimis/GUI.java b/java/src/mimis/GUI.java index 1173966..a619d10 100644 --- a/java/src/mimis/GUI.java +++ b/java/src/mimis/GUI.java @@ -8,6 +8,7 @@ import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JToggleButton; import javax.swing.SwingConstants; import javax.swing.WindowConstants; @@ -55,7 +56,7 @@ public class GUI extends JFrame { protected JPanel createManagerPanel(Manager manager, String title) { JPanel panel = new JPanel(new GridLayout(0, 1)); panel.add(new JLabel(title, SwingConstants.CENTER)); - for (JButton button : manager.getButtons()) { + for (JToggleButton button : manager.getButtons()) { panel.add(button); } return panel; diff --git a/java/src/mimis/Manager.java b/java/src/mimis/Manager.java index 0192eb6..99444fd 100644 --- a/java/src/mimis/Manager.java +++ b/java/src/mimis/Manager.java @@ -4,8 +4,9 @@ import java.util.Calendar; import java.util.HashMap; import java.util.Map; -import javax.swing.JButton; +import javax.swing.JToggleButton; +import mimis.exception.worker.ActivateException; import mimis.manager.Exitable; import mimis.manager.SelectButton; import mimis.manager.Titled; @@ -41,17 +42,16 @@ public class Manager extends Worker { } } - protected JButton[] getButtons() { - return buttonMap.values().toArray(new JButton[]{}); + protected JToggleButton[] getButtons() { + return buttonMap.values().toArray(new JToggleButton[]{}); } protected void work() { long before = Calendar.getInstance().getTimeInMillis(); for (T manageable : manageableArray) { boolean active = manageable.active(); - //buttonMap.get(manageable).getModel().setArmed(active); - - buttonMap.get(manageable).getModel().setPressed(active); + SelectButton button = buttonMap.get(manageable); + button.setPressed(active); } long after = Calendar.getInstance().getTimeInMillis(); int sleep = INTERVAL - (int) (after - before); diff --git a/java/src/mimis/Worker.java b/java/src/mimis/Worker.java index 0809283..4d41517 100644 --- a/java/src/mimis/Worker.java +++ b/java/src/mimis/Worker.java @@ -97,6 +97,6 @@ public abstract class Worker implements Runnable { } } } - + protected abstract void work(); } diff --git a/java/src/mimis/manager/SelectButton.java b/java/src/mimis/manager/SelectButton.java index 82ec9c6..08c2a34 100644 --- a/java/src/mimis/manager/SelectButton.java +++ b/java/src/mimis/manager/SelectButton.java @@ -1,16 +1,19 @@ package mimis.manager; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; + import javax.swing.Action; -import javax.swing.JButton; +import javax.swing.JToggleButton; + import mimis.Worker; import mimis.exception.worker.ActivateException; import mimis.exception.worker.DeactivateException; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -public class SelectButton extends JButton implements ActionListener { +public class SelectButton extends JToggleButton implements MouseListener { protected Log log = LogFactory.getLog(getClass()); protected static final long serialVersionUID = 1L; @@ -21,22 +24,35 @@ public class SelectButton extends JButton implements this.activatable = activatable; setText(activatable.title()); setFocusable(false); - addActionListener(this); + addMouseListener(this); } - public void actionPerformed(ActionEvent event) { + public void mouseClicked(MouseEvent event) { if (activatable.active()) { try { + log.trace("Uit"); activatable.deactivate(); } catch (DeactivateException e) { log.error(e); } } else { try { + log.trace("Aan"); activatable.activate(); } catch (ActivateException e) { log.error(e); } } } + + public void mouseEntered(MouseEvent e) {} + public void mouseExited(MouseEvent e) {} + public void mousePressed(MouseEvent e) {} + public void mouseReleased(MouseEvent e) {} + + public void setPressed(boolean pressed) { + if (!isSelected() && pressed || isSelected() && !pressed) { + doClick(); + } + } }