source: src/main/java/genius/gui/deadline/DeadlinePanel.java@ 3

Last change on this file since 3 was 1, checked in by Wouter Pasman, 7 years ago

Initial import : Genius 9.0.0

File size: 2.0 KB
Line 
1package genius.gui.deadline;
2
3import java.awt.BorderLayout;
4import java.awt.Component;
5import java.awt.Dimension;
6import java.awt.event.ActionEvent;
7import java.awt.event.ActionListener;
8
9import javax.swing.JComboBox;
10import javax.swing.JLabel;
11import javax.swing.JPanel;
12import javax.swing.JSpinner;
13import javax.swing.SpinnerNumberModel;
14import javax.swing.event.ChangeEvent;
15import javax.swing.event.ChangeListener;
16
17import genius.core.DeadlineType;
18import genius.core.listener.Listener;
19
20/**
21 * panel allowing user to set the deadline.
22 *
23 * @author W.Pasman
24 *
25 */
26@SuppressWarnings("serial")
27public class DeadlinePanel extends JPanel {
28 private final SpinnerNumberModel valuemodel = new SpinnerNumberModel(180, 1, 10000, 10);
29 private JSpinner spinner = new JSpinner(valuemodel);
30 private JComboBox<DeadlineType> combobox = new JComboBox<DeadlineType>(DeadlineType.values());
31 private JLabel label = new JLabel("Deadline");
32 private DeadlineModel model;
33
34 public DeadlinePanel(final DeadlineModel model) {
35 if (model == null)
36 throw new NullPointerException("model");
37 this.model = model;
38 setLayout(new BorderLayout());
39 add(label, BorderLayout.WEST);
40 add(spinner, BorderLayout.CENTER);
41 add(combobox, BorderLayout.EAST);
42 setMaximumSize(new Dimension(Short.MAX_VALUE, 30));
43 setAlignmentX(Component.RIGHT_ALIGNMENT);
44
45 syncWithModel();
46
47 spinner.addChangeListener(new ChangeListener() {
48 @Override
49 public void stateChanged(ChangeEvent e) {
50 model.setValue((Integer) valuemodel.getValue());
51 }
52 });
53 combobox.addActionListener(new ActionListener() {
54 @Override
55 public void actionPerformed(ActionEvent e) {
56 model.setType((DeadlineType) combobox.getSelectedItem());
57 }
58 });
59
60 model.addListener(new Listener<DeadlineModel>() {
61
62 @Override
63 public void notifyChange(DeadlineModel data) {
64 syncWithModel();
65 }
66
67 });
68 }
69
70 /**
71 * Sync panel with the model.
72 */
73 private void syncWithModel() {
74 spinner.setValue(model.getDeadline().getValue());
75 combobox.setSelectedItem(model.getDeadline().getType());
76 }
77
78}
Note: See TracBrowser for help on using the repository browser.