20 package net.sf.gridarta.gui.utils.tabbedpanel;
22 import java.awt.BorderLayout;
23 import java.awt.Component;
24 import java.awt.Container;
25 import java.util.IdentityHashMap;
27 import java.util.prefs.Preferences;
28 import javax.swing.JMenu;
29 import javax.swing.JPopupMenu;
35 import net.
sf.japi.swing.action.ActionBuilder;
36 import net.
sf.japi.swing.action.ActionBuilderFactory;
37 import net.
sf.japi.swing.action.ToggleAction;
38 import org.jetbrains.annotations.NotNull;
39 import org.jetbrains.annotations.Nullable;
53 private static final String
TAB_PREFIX =
"MainWindow.tab";
64 private static final ActionBuilder
ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder(
"net.sf.gridarta");
83 private final Map<Component, Tab>
openTabs =
new IdentityHashMap<>();
90 if (prevTab !=
null) {
112 public void sizeChanged(@NotNull
final Component component,
final int size) {
120 public void size2Changed(@NotNull
final Location location,
final int size2) {
125 public int getSize2(
final Location location) {
131 setLayout(
new BorderLayout());
142 tabAdded(tab, buttonList, tab.isOpen());
164 if (tab.getLocation() == location) {
168 final boolean open = tab.isOpen();
184 if (tab.isAlternativeLocation() == splitMode) {
188 final boolean open = tab.isOpen();
191 buttonList.
selectButton(tab.getButton(), tab.isAlternativeLocation());
203 if (buttonList.getButtonCount() == 1) {
204 add(buttonList.getButtons(), tab.getLocation().getBorderLocation());
209 buttonList.selectButton(tab.getButton(), tab.isAlternativeLocation());
219 if (buttonList.getButtonCount() == 0) {
220 remove(buttonList.getButtons());
233 final JPopupMenu popupMenu = tab.getPopupMenu();
234 final ToggleAction splitModeAction = (ToggleAction)
ACTION_BUILDER.createToggle(
false,
"tabSplitMode", moveToActions);
235 splitModeAction.setSelected(tab.isAlternativeLocation());
236 popupMenu.insert(splitModeAction.createCheckBoxMenuItem(), 0);
237 tab.setSplitModeAction(splitModeAction);
240 final JMenu moveToMenu = tab.getMoveToMenu();
242 final Location location = tab.getLocation();
244 if (thisLocation != location) {
245 moveToMenu.add(
ACTION_BUILDER.createAction(
true,
"tabButtonMoveTo" + thisLocation.getName(), moveToActions));
255 openTabs.put(tab.getComponent(), tab);