20 package net.sf.gridarta.gui.utils.tabbedpanel;
22 import java.util.IdentityHashMap;
24 import javax.swing.AbstractButton;
26 import org.jetbrains.annotations.NotNull;
27 import org.jetbrains.annotations.Nullable;
46 private final Map<AbstractButton, Tab>
tabs =
new IdentityHashMap<>();
56 final ButtonListListener buttonListListener = (prevSelectedButton, selectedButton) -> {
57 final Tab prevTab =
tabs.get(prevSelectedButton);
58 final Tab tab =
tabs.get(selectedButton);
62 buttonListsListener.tabChanged(prevTab, tab);
78 final AbstractButton button = tab.getButton();
79 buttonList.
addButton(button, tab.isAlternativeLocation());
80 tabs.put(button, tab);
94 if (
tabs.get(tab.getButton()) ==
null) {
95 throw new IllegalArgumentException(
"can't move an undefined button: " + tab.getButton());
100 final AbstractButton oldButton = tab.getButton();
101 oldButtonList.
removeButton(oldButton, tab.isAlternativeLocation());
102 oldButton.setSelected(
false);
103 tab.setLocation(location);
104 final AbstractButton newButton = tab.getButton();
105 newButtonList.
addButton(newButton, tab.isAlternativeLocation());
106 tabs.remove(oldButton);
107 tabs.put(newButton, tab);
113 final boolean alternativeLocation = !tab.isAlternativeLocation();
115 final AbstractButton oldButton = tab.getButton();
116 buttonList.
removeButton(oldButton, tab.isAlternativeLocation());
117 oldButton.setSelected(
false);
118 tab.setAlternativeLocation(alternativeLocation);
119 final AbstractButton newButton = tab.getButton();
120 buttonList.
addButton(newButton, tab.isAlternativeLocation());
121 tabs.remove(oldButton);
122 tabs.put(newButton, tab);
137 final AbstractButton selectedButton = buttonList.
getSelectedButton(alternativeLocation);
138 if (selectedButton ==
null) {
142 final Tab tab =
tabs.get(selectedButton);