summaryrefslogtreecommitdiff
path: root/source/com/c2kernel/gui/data/NodeItem.java
blob: 30f7ce3a160ebe313b0785389daa5e489dc1b341 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
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;

    }
}