summaryrefslogtreecommitdiff
path: root/src/FamilyButtonListener.java
blob: 906b3491258f4765e83ba45c7717ca5c85cb8ff8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import java.awt.event.*;

/*
 * @author
 * Kian Agheli
 *
 * References:
 *
 * Date:
 * 2024-05-25
 *
 * Purpose of class:
 * Listen for state changes in an instantiation of FamilyButton.
 */

// FamilyButtonListener is an ItemListener
public class FamilyButtonListener implements ItemListener
{
	private MetadataView metadataView; // A FamilyButtonListener has a metadataView
	private FamilyButton[] buttons; // A FamilyButtonListener has an array of buttons
	private int buttonIndex; // A FamilyButtonListener has a button at a specified index in the array

	public FamilyButtonListener(FamilyButton[] buttons, int buttonIndex, MetadataView metadataView) {
		/* Set each of the instance's fields to the given objects. */
		this.buttons = buttons;
		this.buttonIndex = buttonIndex;
		this.metadataView = metadataView;
	}

	@Override
	public void itemStateChanged(ItemEvent e) {
		/* Get the state of the button. */
		int state = e.getStateChange();
		/* If the button is selected: */
		if (state == ItemEvent.SELECTED) {
			/* Deselect all other buttons. */
			for (int i = 0; i < buttons.length; i++) {
				if (i != buttonIndex) {
					buttons[i].setSelected(false);
				}
			}

			/* Set the metadata on display to the metadata of the FontFamily
			associated with the selected button. */
			metadataView.setText(buttons[buttonIndex].getFamily().toString());
		/* If the button is deselected: */
		} else {
			/* Check if every button is deselected. */
			boolean selected = true;
			for (int i = 0; i < buttons.length; i++) {
				if (!buttons[i].isSelected()) {
					selected = false;
				}
			}

			/* If every button is deselected, reset the metadata to display
			the default text. */
			if (!selected) {
				metadataView.reset();
			}
		}
	}
}