Merge branch 'documentation/JAL-3407_2.11.1_release' into releases/Release_2_11_1_Branch
[jalview.git] / src / jalview / gui / JalviewBooleanRadioButtons.java
1 package jalview.gui;
2
3 import java.awt.Font;
4 import java.awt.event.ActionListener;
5
6 import javax.swing.AbstractButton;
7 import javax.swing.ButtonGroup;
8 import javax.swing.JRadioButton;
9
10 public class JalviewBooleanRadioButtons extends AbstractButton
11 {
12   private static final Font LABEL_FONT = JvSwingUtils.getLabelFont();
13
14   private ButtonGroup buttonGroup = new ButtonGroup();
15
16   private JRadioButton buttonTrue = new JRadioButton();
17
18   private JRadioButton buttonFalse = new JRadioButton();
19
20   public JalviewBooleanRadioButtons(boolean value, String trueLabel,
21           String falseLabel)
22   {
23     init();
24     this.setLabels(trueLabel, falseLabel);
25   }
26
27   public JalviewBooleanRadioButtons(boolean value)
28   {
29     init();
30     setSelected(value);
31   }
32
33   public JalviewBooleanRadioButtons()
34   {
35     init();
36   }
37
38   protected void init()
39   {
40     buttonTrue.setFont(LABEL_FONT);
41     buttonFalse.setFont(LABEL_FONT);
42     buttonGroup.add(buttonTrue);
43     buttonGroup.add(buttonFalse);
44   }
45
46   public void setLabels(String trueLabel, String falseLabel)
47   {
48     buttonTrue.setText(trueLabel);
49     buttonFalse.setText(falseLabel);
50   }
51
52   @Override
53   public void setSelected(boolean b)
54   {
55     buttonFalse.setSelected(!b);
56     // this should probably happen automatically, no harm in forcing the issue!
57     // setting them this way round so the last setSelected is on buttonTrue
58     buttonTrue.setSelected(b);
59   }
60
61   @Override
62   public boolean isSelected()
63   {
64     // unambiguous selection
65     return buttonTrue.isSelected() && !buttonFalse.isSelected();
66   }
67
68   @Override
69   public void setEnabled(boolean b)
70   {
71     buttonTrue.setEnabled(b);
72     buttonFalse.setEnabled(b);
73   }
74
75   @Override
76   public boolean isEnabled()
77   {
78     return buttonTrue.isEnabled() && buttonFalse.isEnabled();
79   }
80
81   public JRadioButton getTrueButton()
82   {
83     return buttonTrue;
84   }
85
86   public JRadioButton getFalseButton()
87   {
88     return buttonFalse;
89   }
90   
91   @Override
92   public void addActionListener(ActionListener l)
93   {
94     buttonTrue.addActionListener(l);
95     buttonFalse.addActionListener(l);
96   }
97
98   public void addTrueActionListener(ActionListener l)
99   {
100     buttonTrue.addActionListener(l);
101   }
102
103   public void addFalseActionListener(ActionListener l)
104   {
105     buttonFalse.addActionListener(l);
106   }
107 }