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<>();
92 public void tabChanged(@Nullable
final Tab prevTab, @Nullable
final Tab tab) {
93 if (prevTab !=
null) {
117 public void sizeChanged(@NotNull
final Component component,
final int size) {
125 public void size2Changed(@NotNull
final Location location,
final int size2) {
130 public int getSize2(
final Location location) {
136 setLayout(
new BorderLayout());
147 tabAdded(tab, buttonList, tab.isOpen());
169 if (tab.getLocation() == location) {
173 final boolean open = tab.isOpen();
189 if (tab.isAlternativeLocation() == splitMode) {
193 final boolean open = tab.isOpen();
196 buttonList.
selectButton(tab.getButton(), tab.isAlternativeLocation());
208 if (buttonList.getButtonCount() == 1) {
209 add(buttonList.getButtons(), tab.getLocation().getBorderLocation());
214 buttonList.selectButton(tab.getButton(), tab.isAlternativeLocation());
224 if (buttonList.getButtonCount() == 0) {
225 remove(buttonList.getButtons());
238 final JPopupMenu popupMenu = tab.getPopupMenu();
239 final ToggleAction splitModeAction = (ToggleAction)
ACTION_BUILDER.createToggle(
false,
"tabSplitMode", moveToActions);
240 splitModeAction.setSelected(tab.isAlternativeLocation());
241 popupMenu.insert(splitModeAction.createCheckBoxMenuItem(), 0);
242 tab.setSplitModeAction(splitModeAction);
245 final JMenu moveToMenu = tab.getMoveToMenu();
247 final Location location = tab.getLocation();
249 if (thisLocation != location) {
250 moveToMenu.add(
ACTION_BUILDER.createAction(
true,
"tabButtonMoveTo" + thisLocation.getName(), moveToActions));
260 openTabs.put(tab.getComponent(), tab);