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.Collection;
26 import java.util.List;
27 import java.util.concurrent.CopyOnWriteArrayList;
28 import javax.swing.AbstractButton;
29 import javax.swing.BoxLayout;
30 import javax.swing.JPanel;
31 import javax.swing.event.ChangeListener;
33 import org.jetbrains.annotations.NotNull;
34 import org.jetbrains.annotations.Nullable;
47 private final Container
buttons =
new JPanel();
53 private final Collection<ButtonListListener>
listeners =
new CopyOnWriteArrayList<>();
68 final AbstractButton button = (AbstractButton) e.getSource();
69 if (button.isSelected()) {
101 public void addButton(@NotNull
final AbstractButton button) {
102 if (button.isSelected()) {
103 throw new IllegalArgumentException(
"can't add a selected button");
106 final String title = button.getText();
108 for (index = 0; index <
buttons.getComponentCount(); index++) {
109 final Component tmp =
buttons.getComponent(index);
110 if (tmp instanceof AbstractButton) {
111 final AbstractButton tmpButton = (AbstractButton) tmp;
112 final Comparable<String> tmpTitle = tmpButton.getText();
113 if (tmpTitle.compareTo(title) > 0) {
154 button.setSelected(
true);
155 if (prevSelectedButton !=
null) {
156 prevSelectedButton.setSelected(
false);
168 listener.selectedButtonChanged(prevSelectedButton, selectedButton);
195 return buttons.getComponentCount();