package org.lysty.ui;
import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.AbstractAction;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JPopupMenu;
public class SleepMenu extends JPopupMenu {
protected static final int MINS_TO_MILIS = 60000;
public SleepMenu(final PlayPanelListener listener) {
final JCheckBoxMenuItem mnu10Mins = new JCheckBoxMenuItem("10 Mins");
mnu10Mins.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (mnu10Mins.isSelected()) {
listener.setTimer(10 * MINS_TO_MILIS);
}
}
});
final JCheckBoxMenuItem mnu20Mins = new JCheckBoxMenuItem("20 Mins");
mnu20Mins.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (mnu20Mins.isSelected())
listener.setTimer(20 * MINS_TO_MILIS);
}
});
final JCheckBoxMenuItem mnu30Mins = new JCheckBoxMenuItem("30 Mins");
mnu30Mins.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (mnu30Mins.isSelected())
listener.setTimer(30 * MINS_TO_MILIS);
}
});
final JCheckBoxMenuItem mnu40Mins = new JCheckBoxMenuItem("40 Mins");
mnu40Mins.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (mnu40Mins.isSelected())
listener.setTimer(40 * MINS_TO_MILIS);
}
});
final JCheckBoxMenuItem mnu60Mins = new JCheckBoxMenuItem("1 Hour");
mnu60Mins.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (mnu60Mins.isSelected())
listener.setTimer(60 * MINS_TO_MILIS);
mnu60Mins.setSelected(true);
}
});
JCheckBoxMenuItem mnuCancel = new JCheckBoxMenuItem(new AbstractAction(
"No Sleep") {
@Override
public void actionPerformed(ActionEvent e) {
listener.cancelTimer();
}
});
ButtonGroup group = new ButtonGroup();
group.add(mnuCancel);
group.add(mnu10Mins);
group.add(mnu20Mins);
group.add(mnu30Mins);
group.add(mnu40Mins);
group.add(mnu60Mins);
add(mnuCancel);
add(mnu10Mins);
add(mnu20Mins);
add(mnu30Mins);
add(mnu40Mins);
add(mnu60Mins);
}
}