]> git.argeo.org Git - gpl/argeo-slc.git/blob - eclipse/plugins/org.argeo.slc.client.ui/src/org/argeo/slc/client/ui/views/ExecutionModulesView.java
-> add a new command to automatically refresh Result Test List
[gpl/argeo-slc.git] / eclipse / plugins / org.argeo.slc.client.ui / src / org / argeo / slc / client / ui / views / ExecutionModulesView.java
1 package org.argeo.slc.client.ui.views;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import java.util.UUID;
6
7 import org.argeo.slc.client.ui.ClientUiPlugin;
8 import org.argeo.slc.client.ui.controllers.ProcessController;
9 import org.argeo.slc.execution.ExecutionModuleDescriptor;
10 import org.argeo.slc.process.RealizedFlow;
11 import org.argeo.slc.process.SlcExecution;
12 import org.eclipse.jface.viewers.DoubleClickEvent;
13 import org.eclipse.jface.viewers.IContentProvider;
14 import org.eclipse.jface.viewers.IDoubleClickListener;
15 import org.eclipse.jface.viewers.IStructuredSelection;
16 import org.eclipse.jface.viewers.ITableLabelProvider;
17 import org.eclipse.jface.viewers.LabelProvider;
18 import org.eclipse.jface.viewers.TreeViewer;
19 import org.eclipse.swt.SWT;
20 import org.eclipse.swt.graphics.Image;
21 import org.eclipse.swt.widgets.Composite;
22 import org.eclipse.ui.ISharedImages;
23 import org.eclipse.ui.PlatformUI;
24 import org.eclipse.ui.part.ViewPart;
25
26 public class ExecutionModulesView extends ViewPart {
27 public static final String ID = "org.argeo.slc.client.ui.executionModulesView";
28
29 private TreeViewer viewer;
30
31 private IContentProvider contentProvider;
32
33 private ProcessController processController;
34
35 class ViewLabelProvider extends LabelProvider implements
36 ITableLabelProvider {
37 public String getColumnText(Object obj, int index) {
38 if (obj instanceof ExecutionModulesContentProvider.ExecutionModuleNode) {
39 ExecutionModuleDescriptor emd = ((ExecutionModulesContentProvider.ExecutionModuleNode) obj)
40 .getDescriptor();
41 if (emd.getLabel() != null)
42 return emd.getLabel();
43 else
44 return getText(emd);
45 } else
46 return getText(obj);
47 }
48
49 public Image getColumnImage(Object obj, int index) {
50 return getImage(obj);
51 }
52
53 public Image getImage(Object obj) {
54 if (obj instanceof ExecutionModulesContentProvider.AgentNode)
55 return ClientUiPlugin.getDefault().getImageRegistry().get(
56 "agent");
57 else if (obj instanceof ExecutionModulesContentProvider.ExecutionModuleNode)
58 return ClientUiPlugin.getDefault().getImageRegistry().get(
59 "executionModule");
60 else if (obj instanceof ExecutionModulesContentProvider.FolderNode)
61 return ClientUiPlugin.getDefault().getImageRegistry().get(
62 "folder");
63 else if (obj instanceof ExecutionModulesContentProvider.FlowNode)
64 return ClientUiPlugin.getDefault().getImageRegistry().get(
65 "flow");
66 else
67 return PlatformUI.getWorkbench().getSharedImages().getImage(
68 ISharedImages.IMG_OBJ_ELEMENT);
69 }
70 }
71
72 public void createPartControl(Composite parent) {
73 viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
74 viewer.setContentProvider(contentProvider);
75 viewer.setLabelProvider(new ViewLabelProvider());
76 viewer.setInput(getViewSite());
77 viewer.addDoubleClickListener(new IDoubleClickListener() {
78
79 public void doubleClick(DoubleClickEvent evt) {
80 Object obj = ((IStructuredSelection) evt.getSelection())
81 .getFirstElement();
82 if (obj instanceof ExecutionModulesContentProvider.FlowNode) {
83 ExecutionModulesContentProvider.FlowNode fn = (ExecutionModulesContentProvider.FlowNode) obj;
84
85 List<RealizedFlow> realizedFlows = new ArrayList<RealizedFlow>();
86 RealizedFlow realizedFlow = new RealizedFlow();
87 realizedFlow.setModuleName(fn.getExecutionModuleNode()
88 .getDescriptor().getName());
89 realizedFlow.setModuleVersion(fn.getExecutionModuleNode()
90 .getDescriptor().getVersion());
91 realizedFlow.setFlowDescriptor(fn.getExecutionModuleNode()
92 .getFlowDescriptors().get(fn.getFlowName()));
93 realizedFlows.add(realizedFlow);
94
95 SlcExecution slcExecution = new SlcExecution();
96 slcExecution.setUuid(UUID.randomUUID().toString());
97 slcExecution.setRealizedFlows(realizedFlows);
98 processController.execute(fn.getExecutionModuleNode()
99 .getAgentNode().getAgent(), slcExecution);
100 }
101 }
102 });
103 }
104
105 /**
106 * Passing the focus request to the viewer's control.
107 */
108 public void setFocus() {
109 viewer.getControl().setFocus();
110 }
111
112 public TreeViewer getViewer() {
113 return viewer;
114 }
115
116 public void setContentProvider(IContentProvider contentProvider) {
117 this.contentProvider = contentProvider;
118 }
119
120 public void setProcessController(ProcessController processController) {
121 this.processController = processController;
122 }
123
124 }