From 5e4034b5cba89460a62fa958fc78c2b85acb3d5f Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Tue, 7 Oct 2014 09:18:33 +0200 Subject: Repackage to org.cristalise --- .../java/org/cristalise/gui/ItemTabManager.java | 84 ++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/main/java/org/cristalise/gui/ItemTabManager.java (limited to 'src/main/java/org/cristalise/gui/ItemTabManager.java') diff --git a/src/main/java/org/cristalise/gui/ItemTabManager.java b/src/main/java/org/cristalise/gui/ItemTabManager.java new file mode 100644 index 0000000..4543817 --- /dev/null +++ b/src/main/java/org/cristalise/gui/ItemTabManager.java @@ -0,0 +1,84 @@ +package org.cristalise.gui; +import java.awt.GridLayout; +import java.util.ArrayList; +import java.util.HashMap; + +import javax.swing.BorderFactory; +import javax.swing.JPanel; + +import org.cristalise.gui.tabs.JTabbedPaneWithCloseIcons; +import org.cristalise.gui.tree.NodeItem; +import org.cristalise.kernel.lookup.ItemPath; +import org.cristalise.kernel.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); + } + } +} -- cgit v1.2.3