package com.c2kernel.gui; import java.awt.GridLayout; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import javax.swing.BorderFactory; import javax.swing.JPanel; import com.c2kernel.gui.data.NodeEntity; import com.c2kernel.gui.tabs.JTabbedPaneWithCloseIcons; import com.c2kernel.utils.Logger; /** * Keeps * * @version $Revision: 1.12 $ $Date: 2005/09/12 14:56:19 $ * @author $Author: abranson $ */ public class EntityTabManager extends JPanel { private MainFrame mMainframe; protected HashMap openItems = new HashMap(); protected JTabbedPaneWithCloseIcons tabbedPane = new JTabbedPaneWithCloseIcons(); //JTabbedPane tabbedPane = new JTabbedPane(); MenuBuilder myMenuBuilder; public EntityTabManager() { super(); setLayout(new GridLayout(1,1)); setBorder(BorderFactory.createLoweredBevelBorder()); //UIDefaults ui = UIManager.getDefaults(); //ui.put("TabbedPane.selected",Color.red); add(tabbedPane); } public EntityDetails add(NodeEntity thisEntity) { EntityDetails requestedDetails; if (!openItems.containsKey(new Integer(thisEntity.getSysKey()))) { Logger.msg(1, "ItemWindowManager.add() - Window for syskey "+thisEntity.getSysKey()+" not found. Opening new one."); requestedDetails = new EntityDetails(thisEntity); Thread itemLoader = new Thread(requestedDetails); itemLoader.start(); openItems.put(new Integer(thisEntity.getSysKey()), requestedDetails); requestedDetails.setDesktopManager(this); // get currently selected item to set location tabbedPane.addTab(thisEntity.getName(), thisEntity.getIcon(), requestedDetails, Integer.toString(thisEntity.getSysKey())); } else { //opened window but different nodeitem requestedDetails = (EntityDetails)openItems.get(new Integer(thisEntity.getSysKey())); } tabbedPane.setSelectedComponent(requestedDetails); return requestedDetails; } public void setMenuBuilder(MenuBuilder myMenuBuilder) { this.myMenuBuilder = myMenuBuilder; } public void remove(int sysKey) { Integer sysKeyObj = new Integer(sysKey); if (!openItems.containsKey(sysKeyObj)) return; EntityDetails tabToClose = (EntityDetails)openItems.get(sysKeyObj); tabbedPane.remove(tabToClose); tabToClose.discardTabs(); openItems.remove(sysKeyObj); } public void closeAll(boolean keepOpen) { ArrayList toRemove = new ArrayList(); for (Iterator iter = openItems.keySet().iterator(); iter.hasNext();) { Integer element = (Integer) iter.next(); if (keepOpen && openItems.get(element).equals(tabbedPane.getSelectedComponent())) continue; toRemove.add(element); } for (Iterator iter = toRemove.iterator(); iter.hasNext();) { Integer element = (Integer) iter.next(); remove(element.intValue()); } } }