source: src/main/java/genius/gui/panels/CheckboxPanel.java@ 345

Last change on this file since 345 was 155, checked in by Tim Baarslag, 6 years ago

Fixed refactor TODO of createExperimentalOutcomeComparisonUserModel

Made fixed seed a checkbox

User guide fixes

File size: 1.6 KB
Line 
1package genius.gui.panels;
2
3import java.awt.BorderLayout;
4import java.awt.Checkbox;
5import java.awt.event.ItemEvent;
6import java.awt.event.ItemListener;
7
8import javax.swing.JLabel;
9import javax.swing.JPanel;
10
11import genius.core.listener.Listener;
12
13/**
14 * Panel showing a checkbox with a title and value. This panel supports a
15 * BooleanModel (you can't with the default {@link Checkbox}).
16 */
17@SuppressWarnings("serial")
18public class CheckboxPanel extends JPanel {
19
20 private JLabel label;
21 private Checkbox box;
22 private BooleanModel model;
23
24 /**
25 *
26 * @param text
27 * the text for the label
28 * @param boolModel
29 * the boolean model
30 */
31 public CheckboxPanel(final String text, final BooleanModel boolModel) {
32 this.model = boolModel;
33
34 setLayout(new BorderLayout());
35 label = new JLabel(text);
36 box = new Checkbox("", boolModel.getValue());
37 enable1();
38
39 // connect the box to the model,
40 box.addItemListener(new ItemListener() {
41
42 @Override
43 public void itemStateChanged(ItemEvent e) {
44 if (box.getState() != model.getValue()) {
45 model.setValue(box.getState());
46 enable1();
47 }
48 }
49 });
50
51 // and the model to the box
52 model.addListener(new Listener<Boolean>() {
53
54 @Override
55 public void notifyChange(Boolean data) {
56 // FIXME invokeLater
57 box.setState(data);
58 enable1();
59 }
60 });
61
62 add(box, BorderLayout.WEST);
63 add(label, BorderLayout.CENTER);
64 }
65
66 /**
67 * Update enabled-ness of panel. Just calling enable() doesn nothing?
68 */
69 private void enable1() {
70 boolean enabled = !model.isLocked();
71 box.setEnabled(enabled);
72 label.setEnabled(enabled);
73 }
74
75}
Note: See TracBrowser for help on using the repository browser.