diff options
Diffstat (limited to 'src/main/java/com/c2kernel/gui/data/NodeItem.java')
| -rw-r--r-- | src/main/java/com/c2kernel/gui/data/NodeItem.java | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/src/main/java/com/c2kernel/gui/data/NodeItem.java b/src/main/java/com/c2kernel/gui/data/NodeItem.java new file mode 100644 index 0000000..30f7ce3 --- /dev/null +++ b/src/main/java/com/c2kernel/gui/data/NodeItem.java @@ -0,0 +1,112 @@ +package com.c2kernel.gui.data;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+
+import javax.swing.JMenuItem;
+import javax.swing.JPopupMenu;
+
+import com.c2kernel.entity.agent.Job;
+import com.c2kernel.entity.proxy.ItemProxy;
+import com.c2kernel.gui.EntityDetails;
+import com.c2kernel.gui.EntityTabManager;
+import com.c2kernel.gui.MainFrame;
+import com.c2kernel.lookup.Path;
+import com.c2kernel.persistency.ClusterStorage;
+import com.c2kernel.utils.Logger;
+
+/**
+ * Structure for Item presence on the tree and ItemDetails boxes. Created by NodeFactory.
+ * @author $Author: abranson $
+ * @version $Version$
+ */
+public class NodeItem extends NodeEntity {
+
+ public NodeItem(Path path, EntityTabManager desktop) {
+ super(path, desktop);
+ try {
+ makeExpandable();
+ } catch (Exception e) {
+ Logger.error(e);
+ }
+ }
+
+ @Override
+ public void loadChildren() {
+ try {
+ String collections = myEntity.queryData("Collection/all");
+ StringTokenizer tok = new StringTokenizer(collections, ",");
+ while (tok.hasMoreTokens()) {
+ NodeCollection newCollection = new NodeCollection((ItemProxy)myEntity, tok.nextToken(), desktop);
+ add(newCollection);
+ }
+ end(false);
+ } catch (Exception e) {
+ Logger.error(e);
+ }
+ }
+
+ @Override
+ public JPopupMenu getPopupMenu() {
+ JPopupMenu popup = super.getPopupMenu();
+ popup.addSeparator();
+ try {
+ ArrayList<Job> jobList = ((ItemProxy)myEntity).getJobList(MainFrame.userAgent);
+ ArrayList<String> already = new ArrayList<String>();
+ if (jobList.size() > 0) {
+ for (Job thisJob : jobList) {
+ String stepName = thisJob.getStepName();
+ if (already.contains(stepName))
+ continue;
+ already.add(stepName);
+ JMenuItem menuItem = new JMenuItem(stepName);
+ menuItem.setActionCommand(stepName);
+ menuItem.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ execute(e.getActionCommand());
+ }
+ });
+ popup.add(menuItem);
+
+ }
+ }
+ else {
+ JMenuItem noAct = new JMenuItem("No activities");
+ noAct.setEnabled(false);
+ popup.add(noAct);
+ }
+ } catch (Exception ex) {
+ JMenuItem error = new JMenuItem("Error querying jobs");
+ error.setEnabled(false);
+ popup.add(error);
+ }
+
+ return popup;
+ }
+
+ public void execute(String stepName) {
+ EntityDetails thisDetail = desktop.add(this);
+ thisDetail.runCommand("Execution", stepName);
+ }
+
+ @Override
+ public ArrayList<String> getTabs() {
+
+ ArrayList<String> requiredTabs = super.getTabs();
+ requiredTabs.add("Properties");
+ try {
+ String collNames = myEntity.queryData(ClusterStorage.COLLECTION+"/all");
+ if (collNames.length() > 0)
+ requiredTabs.add("Collection");
+ } catch (Exception e) { }
+ requiredTabs.add("Execution");
+ requiredTabs.add("History");
+ requiredTabs.add("Viewpoint");
+ requiredTabs.add("Workflow");
+ return requiredTabs;
+
+ }
+}
|
