GUI knoppen gemaakt. Er is een probleem dat applicaties die al gestart zijn voordat mimis start niet afgesloten kunnen worden.

This commit is contained in:
Bram Veenboer
2011-06-06 13:25:20 +00:00
parent b20ccd4fbf
commit 073bf12cc4
4 changed files with 31 additions and 14 deletions

View File

@@ -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;

View File

@@ -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<T extends Worker & Titled & Exitable> 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<T> button = buttonMap.get(manageable);
button.setPressed(active);
}
long after = Calendar.getInstance().getTimeInMillis();
int sleep = INTERVAL - (int) (after - before);

View File

@@ -97,6 +97,6 @@ public abstract class Worker implements Runnable {
}
}
}
protected abstract void work();
}

View File

@@ -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<T extends Worker & Titled> extends JButton implements ActionListener {
public class SelectButton<T extends Worker & Titled> extends JToggleButton implements MouseListener {
protected Log log = LogFactory.getLog(getClass());
protected static final long serialVersionUID = 1L;
@@ -21,22 +24,35 @@ public class SelectButton<T extends Worker & Titled> 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();
}
}
}