Coverage Summary for Class: CheckBoxListener (it.polimi.ingsw.Client.GUI.Listeners)
Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
CheckBoxListener |
0%
(0/1)
|
0%
(0/2)
|
0%
(0/12)
|
0%
(0/15)
|
1 package it.polimi.ingsw.Client.GUI.Listeners;
2
3 import javax.swing.*;
4 import java.awt.event.ItemEvent;
5 import java.awt.event.ItemListener;
6
7 /**
8 * Listener responsible for restricting the maximum number of checkboxes that can be selected
9 */
10 public class CheckBoxListener implements ItemListener {
11 /**
12 * limit of selectable checkboxes
13 */
14 private final int maxCheckBoxesSelectable;
15 /**
16 * "listened" checkboxes
17 */
18 private final JCheckBox[] checkBoxes;
19 /**
20 * Selected checkboxes
21 */
22 private int selectionCounter = 0;
23
24 /**
25 * Create a new checkBoxListener
26 *
27 * @param limit maximum number of selectable checkBoxes
28 * @param checkBoxes checkboxes that will be listened by this listener
29 */
30 public CheckBoxListener(int limit, JCheckBox[] checkBoxes) {
31 this.maxCheckBoxesSelectable = limit;
32 this.checkBoxes = checkBoxes;
33 }
34
35 /**
36 * As soon as one checkbox has been selected, verify that selected checkBoxes are less than maximum
37 *
38 * @param e the event to be processed
39 */
40 @Override
41 public void itemStateChanged(ItemEvent e) {
42 JCheckBox source = (JCheckBox) e.getSource();
43 if (source.isSelected()) {
44 selectionCounter++;
45 // check for max selections:
46 if (selectionCounter == maxCheckBoxesSelectable)
47 for (JCheckBox box : checkBoxes)
48 if (!box.isSelected())
49 box.setEnabled(false);
50 } else {
51 selectionCounter--;
52 // check for less than max selections:
53 if (selectionCounter < maxCheckBoxesSelectable)
54 for (JCheckBox box : checkBoxes)
55 box.setEnabled(true);
56 }
57 }
58 }