package com.c2kernel.gui.data; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Iterator; 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); } } 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); } } public JPopupMenu getPopupMenu() { JPopupMenu popup = super.getPopupMenu(); popup.addSeparator(); try { ArrayList jobList = ((ItemProxy)myEntity).getJobList(MainFrame.userAgent); ArrayList already = new ArrayList(); if (jobList.size() > 0) { for (Iterator e = jobList.iterator(); e.hasNext();) { Job thisJob = (Job)e.next(); String stepName = thisJob.getStepName(); if (already.contains(stepName)) continue; already.add(stepName); JMenuItem menuItem = new JMenuItem(stepName); menuItem.setActionCommand(stepName); menuItem.addActionListener(new ActionListener() { 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); } public ArrayList getTabs() { ArrayList 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; } }