package com.c2kernel.gui; import java.awt.GridLayout; import java.util.ArrayList; import java.util.HashMap; import javax.swing.BorderFactory; import javax.swing.JPanel; import com.c2kernel.gui.tabs.JTabbedPaneWithCloseIcons; import com.c2kernel.gui.tree.NodeItem; import com.c2kernel.lookup.ItemPath; import com.c2kernel.utils.Logger; /** * Keeps * * @version $Revision: 1.12 $ $Date: 2005/09/12 14:56:19 $ * @author $Author: abranson $ */ public class ItemTabManager extends JPanel { protected HashMap openItems = new HashMap(); protected JTabbedPaneWithCloseIcons tabbedPane = new JTabbedPaneWithCloseIcons(); //JTabbedPane tabbedPane = new JTabbedPane(); MenuBuilder myMenuBuilder; public ItemTabManager() { super(); setLayout(new GridLayout(1,1)); setBorder(BorderFactory.createLoweredBevelBorder()); add(tabbedPane); } public ItemDetails add(NodeItem thisItem) { ItemDetails requestedDetails; if (!openItems.containsKey(thisItem.getItemPath())) { MainFrame.progress.startBouncing("Opening "+thisItem.getName()+". Please wait."); Logger.msg(1, "ItemWindowManager.add() - Window for syskey "+thisItem.getItemPath()+" not found. Opening new one."); requestedDetails = new ItemDetails(thisItem); Thread itemLoader = new Thread(requestedDetails); itemLoader.start(); openItems.put(thisItem.getItemPath(), requestedDetails); requestedDetails.setDesktopManager(this); // get currently selected item to set location tabbedPane.addTab(thisItem.getName(), thisItem.getIcon(), requestedDetails, thisItem.getType()); } else { //opened window but different nodeitem requestedDetails = openItems.get(thisItem.getItemPath()); } tabbedPane.setSelectedComponent(requestedDetails); return requestedDetails; } public void setMenuBuilder(MenuBuilder myMenuBuilder) { this.myMenuBuilder = myMenuBuilder; } public void remove(ItemPath itemPath) { if (!openItems.containsKey(itemPath)) return; ItemDetails tabToClose = openItems.get(itemPath); tabbedPane.remove(tabToClose); tabToClose.discardTabs(); openItems.remove(itemPath); } public void closeAll(boolean keepOpen) { ArrayList toRemove = new ArrayList(); for (ItemPath element : openItems.keySet()) { if (keepOpen && openItems.get(element).equals(tabbedPane.getSelectedComponent())) continue; toRemove.add(element); } for (ItemPath element : toRemove) { remove(element); } } }