diff options
| author | Andrew Branson <andrew.branson@cern.ch> | 2012-08-03 14:03:59 +0200 |
|---|---|---|
| committer | Andrew Branson <andrew.branson@cern.ch> | 2012-08-03 14:03:59 +0200 |
| commit | e4ccc012a781d794c06b8d3fd27e0a1f532b3fe7 (patch) | |
| tree | 7f96e165b1583b75c39221ee59d15e2d3f160650 /src/main/java/com/c2kernel/gui/tree/NodeItem.java | |
| parent | 8c272e0261686302e86849ad86ae8fa393d9e95e (diff) | |
Menu item on collection members in the tree to remove them.
Drag items onto dependencies to add them.
Dependency view
Logging cleanup
Fixes #42
Diffstat (limited to 'src/main/java/com/c2kernel/gui/tree/NodeItem.java')
| -rw-r--r-- | src/main/java/com/c2kernel/gui/tree/NodeItem.java | 83 |
1 files changed, 80 insertions, 3 deletions
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<? extends CollectionMember> getParentCollection() {
+ return parentCollection;
+ }
+
+ public Integer getSlotNo() {
+ return slotNo;
+ }
+
+ Collection<? extends CollectionMember> 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<? extends CollectionMember> 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<Job> jobList = ((ItemProxy)myEntity).getJobList(MainFrame.userAgent);
ArrayList<String> already = new ArrayList<String>();
@@ -92,7 +143,7 @@ public class NodeItem extends NodeEntity { thisDetail.runCommand("Execution", stepName);
}
- @Override
+ @Override
public ArrayList<String> getTabs() {
ArrayList<String> 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);
+ }
}
|
