20 package net.sf.gridarta.gui.utils.tabbedpanel;
22 import java.awt.Component;
23 import java.awt.Container;
24 import java.util.ArrayList;
25 import java.util.List;
26 import javax.swing.AbstractButton;
27 import javax.swing.BoxLayout;
28 import javax.swing.JPanel;
29 import javax.swing.event.ChangeEvent;
30 import javax.swing.event.ChangeListener;
33 import org.jetbrains.annotations.NotNull;
34 import org.jetbrains.annotations.Nullable;
47 private final Container
buttons =
new JPanel();
70 public void stateChanged(
final ChangeEvent e) {
71 final AbstractButton button = (AbstractButton) e.getSource();
72 if (button.isSelected()) {
74 }
else if (!selectedButtons.isEmpty() && button == selectedButtons.get(0)) {
75 selectedButtons.remove(0);
77 if (!selectedButtons.isEmpty()) {
78 selectedButtons.get(0).setSelected(
true);
90 buttons.setLayout(
new BoxLayout(buttons, location.getAxis()));
99 listeners.
add(listener);
106 public void addButton(@NotNull
final AbstractButton button) {
107 if (button.isSelected()) {
108 throw new IllegalArgumentException();
111 final String title = button.getText();
113 for (index = 0; index < buttons.getComponentCount(); index++) {
114 final Component tmp = buttons.getComponent(index);
115 if (tmp instanceof AbstractButton) {
116 final AbstractButton tmpButton = (AbstractButton) tmp;
117 final Comparable<String> tmpTitle = tmpButton.getText();
118 if (tmpTitle.compareTo(title) > 0) {
123 buttons.add(button, index);
125 button.addChangeListener(changeListener);
134 button.removeChangeListener(changeListener);
135 buttons.remove(button);
137 final int index = selectedButtons.indexOf(button);
139 selectedButtons.remove(index);
142 if (!selectedButtons.isEmpty()) {
143 selectedButtons.get(0).setSelected(
true);
154 if (selectedButtons.isEmpty() || button != selectedButtons.get(0)) {
156 selectedButtons.remove(button);
157 selectedButtons.add(0, button);
159 button.setSelected(
true);
160 if (prevSelectedButton != null) {
161 prevSelectedButton.setSelected(
false);
173 listener.selectedButtonChanged(prevSelectedButton, selectedButton);
183 return selectedButtons.isEmpty() ? null : selectedButtons.get(0);
200 return buttons.getComponentCount();
Graphical User Interface of Gridarta.
T [] getListeners()
Returns an array of all the listeners.
Base package of all Gridarta classes.
void add(@NotNull final T listener)
Adds a listener.
Type-safe version of EventListenerList.