From e4ccc012a781d794c06b8d3fd27e0a1f532b3fe7 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Fri, 3 Aug 2012 14:03:59 +0200 Subject: Menu item on collection members in the tree to remove them. Drag items onto dependencies to add them. Dependency view Logging cleanup Fixes #42 --- src/main/java/com/c2kernel/gui/tree/NodeItem.java | 83 ++++++++++++++++++++++- 1 file changed, 80 insertions(+), 3 deletions(-) (limited to 'src/main/java/com/c2kernel/gui/tree/NodeItem.java') diff --git a/src/main/java/com/c2kernel/gui/tree/NodeItem.java b/src/main/java/com/c2kernel/gui/tree/NodeItem.java index 5d1f618..18d35be 100644 --- a/src/main/java/com/c2kernel/gui/tree/NodeItem.java +++ b/src/main/java/com/c2kernel/gui/tree/NodeItem.java @@ -1,13 +1,20 @@ package com.c2kernel.gui.tree; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.io.IOException; import java.util.ArrayList; import java.util.StringTokenizer; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; +import com.c2kernel.collection.Aggregation; +import com.c2kernel.collection.Collection; +import com.c2kernel.collection.CollectionMember; import com.c2kernel.entity.agent.Job; import com.c2kernel.entity.proxy.ItemProxy; import com.c2kernel.gui.EntityDetails; @@ -22,16 +29,41 @@ import com.c2kernel.utils.Logger; * @author $Author: abranson $ * @version $Version$ */ -public class NodeItem extends NodeEntity { +public class NodeItem extends NodeEntity implements Transferable { + public Collection getParentCollection() { + return parentCollection; + } + + public Integer getSlotNo() { + return slotNo; + } + + Collection parentCollection; + Integer slotNo = null; + static DataFlavor dataFlavor = new DataFlavor(NodeItem.class, "NodeItem"); + ItemProxy parentItem; + static DataFlavor[] supportedFlavours = new DataFlavor[] { + dataFlavor, + new DataFlavor(Path.class, "Path"), + DataFlavor.getTextPlainUnicodeFlavor() }; + + public NodeItem(Path path, EntityTabManager desktop) { super(path, desktop); - try { + try { makeExpandable(); } catch (Exception e) { Logger.error(e); } + } + + public void setCollection(Collection parentCollection, Integer slotNo, ItemProxy parentItem) { + this.parentCollection = parentCollection; + this.slotNo = slotNo; + this.parentItem = parentItem; + } @Override public void loadChildren() { @@ -52,6 +84,25 @@ public class NodeItem extends NodeEntity { public JPopupMenu getPopupMenu() { JPopupMenu popup = super.getPopupMenu(); popup.addSeparator(); + if (parentCollection != null && MainFrame.isAdmin) { + JMenuItem collMenuItem = new JMenuItem("Remove from collection"); + //collMenuItem.setActionCommand("removeColl"); + collMenuItem.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + String[] params = { parentCollection.getName(), String.valueOf(slotNo) }; + String predefStepName = parentCollection instanceof Aggregation?"ClearSlot":"RemoveSlotFromCollection"; + try { + MainFrame.userAgent.execute(parentItem, predefStepName, params); + } catch (Exception e1) { + MainFrame.exceptionDialog(e1); + } + + } + }); + popup.add(collMenuItem); + popup.addSeparator(); + } try { ArrayList jobList = ((ItemProxy)myEntity).getJobList(MainFrame.userAgent); ArrayList already = new ArrayList(); @@ -92,7 +143,7 @@ public class NodeItem extends NodeEntity { thisDetail.runCommand("Execution", stepName); } - @Override + @Override public ArrayList getTabs() { ArrayList requiredTabs = super.getTabs(); @@ -109,4 +160,30 @@ public class NodeItem extends NodeEntity { return requiredTabs; } + + @Override + public DataFlavor[] getTransferDataFlavors() { + return supportedFlavours; + } + + @Override + public boolean isDataFlavorSupported(DataFlavor flavor) { + for (DataFlavor flavour : supportedFlavours) { + if (flavour.equals(flavor)) + return true; + } + return false; + } + + @Override + public Object getTransferData(DataFlavor flavor) + throws UnsupportedFlavorException, IOException { + if (flavor.equals(supportedFlavours[0])) + return this; + if (flavor.equals(supportedFlavours[1])) + return binding; + if (flavor.equals(supportedFlavours[2])) + return name; + throw new UnsupportedFlavorException(flavor); + } } -- cgit v1.2.3