diff options
| author | Andrew Branson <andrew.branson@cern.ch> | 2014-05-07 17:33:57 +0200 |
|---|---|---|
| committer | Andrew Branson <andrew.branson@cern.ch> | 2014-05-07 17:33:57 +0200 |
| commit | 21230edbafdd30fcf0c43d1dc64ccbf4ca5e06a8 (patch) | |
| tree | b2908dbea534ca8d96a81ab922501769d4b70c4d /src/main/java/com/c2kernel/gui/ItemTabManager.java | |
| parent | 75bf1278296d33a7d9b6c01660a2f21e2d40d995 (diff) | |
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.
Diffstat (limited to 'src/main/java/com/c2kernel/gui/ItemTabManager.java')
| -rw-r--r-- | src/main/java/com/c2kernel/gui/ItemTabManager.java | 84 |
1 files changed, 84 insertions, 0 deletions
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<Integer, ItemDetails> openItems = new HashMap<Integer, ItemDetails>();
+ 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<Integer> toRemove = new ArrayList<Integer>();
+ for (Integer element : openItems.keySet()) {
+ if (keepOpen && openItems.get(element).equals(tabbedPane.getSelectedComponent())) continue;
+ toRemove.add(element);
+ }
+ for (Integer element : toRemove) {
+ remove(element.intValue());
+ }
+ }
+}
|
