From 21230edbafdd30fcf0c43d1dc64ccbf4ca5e06a8 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Wed, 7 May 2014 17:33:57 +0200 Subject: Agent now extends Item, so they can have workflows. All traces of the old 'Entity' superclasses should be removed, including proxies and paths. Very large change, breaks API compatibility with CRISTAL 2.x. --- src/main/java/com/c2kernel/gui/ItemTabManager.java | 84 ++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/main/java/com/c2kernel/gui/ItemTabManager.java (limited to 'src/main/java/com/c2kernel/gui/ItemTabManager.java') diff --git a/src/main/java/com/c2kernel/gui/ItemTabManager.java b/src/main/java/com/c2kernel/gui/ItemTabManager.java new file mode 100644 index 0000000..2c07207 --- /dev/null +++ b/src/main/java/com/c2kernel/gui/ItemTabManager.java @@ -0,0 +1,84 @@ +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.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(new Integer(thisItem.getSysKey()))) { + MainFrame.progress.startBouncing("Opening "+thisItem.getName()+". Please wait."); + Logger.msg(1, "ItemWindowManager.add() - Window for syskey "+thisItem.getSysKey()+" not found. Opening new one."); + requestedDetails = new ItemDetails(thisItem); + Thread itemLoader = new Thread(requestedDetails); + itemLoader.start(); + openItems.put(new Integer(thisItem.getSysKey()), requestedDetails); + requestedDetails.setDesktopManager(this); + + // get currently selected item to set location + tabbedPane.addTab(thisItem.getName(), thisItem.getIcon(), requestedDetails, Integer.toString(thisItem.getSysKey())); + + } + else { //opened window but different nodeitem + requestedDetails = openItems.get(new Integer(thisItem.getSysKey())); + } + tabbedPane.setSelectedComponent(requestedDetails); + return requestedDetails; + } + + public void setMenuBuilder(MenuBuilder myMenuBuilder) { + this.myMenuBuilder = myMenuBuilder; + } + + @Override + public void remove(int sysKey) { + Integer sysKeyObj = new Integer(sysKey); + if (!openItems.containsKey(sysKeyObj)) return; + ItemDetails tabToClose = openItems.get(sysKeyObj); + tabbedPane.remove(tabToClose); + tabToClose.discardTabs(); + openItems.remove(sysKeyObj); + } + + public void closeAll(boolean keepOpen) { + ArrayList toRemove = new ArrayList(); + for (Integer element : openItems.keySet()) { + if (keepOpen && openItems.get(element).equals(tabbedPane.getSelectedComponent())) continue; + toRemove.add(element); + } + for (Integer element : toRemove) { + remove(element.intValue()); + } + } +} -- cgit v1.2.3