+++ /dev/null
-package org.argeo.slc.client.ui;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-/**
- * The activator class controls the plug-in life cycle
- */
-public class ClientUiPlugin extends AbstractUIPlugin {
-
- // The plug-in ID
- public static final String PLUGIN_ID = "org.argeo.slc.client.ui";
-
- // The shared instance
- private static ClientUiPlugin plugin;
-
- private BundleContext bundleContext;
-
- /**
- * The constructor
- */
- public ClientUiPlugin() {
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext
- * )
- */
- public void start(BundleContext context) throws Exception {
- super.start(context);
- this.bundleContext = context;
- plugin = this;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext
- * )
- */
- public void stop(BundleContext context) throws Exception {
- plugin = null;
- super.stop(context);
- }
-
- /**
- * Returns the shared instance
- *
- * @return the shared instance
- */
- public static ClientUiPlugin getDefault() {
- return plugin;
- }
-
- /**
- * Returns an image descriptor for the image file at the given plug-in
- * relative path
- *
- * @param path
- * the path
- * @return the image descriptor
- */
- public static ImageDescriptor getImageDescriptor(String path) {
- return imageDescriptorFromPlugin(PLUGIN_ID, path);
- }
-
- @Override
- protected void initializeImageRegistry(ImageRegistry reg) {
- reg.put("agent", getImageDescriptor("icons/computer.png"));
- reg.put("executionModule", getImageDescriptor("icons/archive.png"));
- reg.put("folder", getImageDescriptor("icons/folder.png"));
- reg.put("flow", getImageDescriptor("icons/system.png"));
- reg.put("processes", getImageDescriptor("icons/processes.gif"));
- reg.put("passedTest", getImageDescriptor("icons/passed.gif"));
- reg.put("failedTest", getImageDescriptor("icons/error.gif"));
- }
-
- public BundleContext getBundleContext() {
- return bundleContext;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.client.ui.commands;
-
-import org.argeo.slc.client.ui.views.ProcessBuilderView;
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- *
- * @author bsinou
- *
- * Remove all processes from the batch built in the ProcessBuilderView
- *
- * NOTE : only one batch is supported with this command, if more than
- * one batch is planned, this class must be updated with parameter.
- */
-public class ClearBatchHandler extends AbstractHandler {
- // private final static Log log =
- // LogFactory.getLog(ClearBatchHandler.class);
-
- public Object execute(ExecutionEvent event) throws ExecutionException {
- ProcessBuilderView pbView = (ProcessBuilderView) HandlerUtil
- .getActiveWorkbenchWindow(event).getActivePage()
- .findView(ProcessBuilderView.ID);
- pbView.clearBatch();
- return null;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.client.ui.commands;
-
-import org.argeo.slc.client.ui.views.ProcessBuilderView;
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- *
- * @author bsinou
- *
- * Launch the batch built in the ProcessBuilderView
- *
- * NOTE : only one batch is supported with this command, if more than
- * one batch is planned, this class must be updated with parameter.
- */
-public class LaunchBatchHandler extends AbstractHandler {
- // private final static Log log =
- // LogFactory.getLog(LaunchBatchHandler.class);
-
- public Object execute(ExecutionEvent event) throws ExecutionException {
- ProcessBuilderView pbView = (ProcessBuilderView) HandlerUtil
- .getActiveWorkbenchWindow(event).getActivePage()
- .findView(ProcessBuilderView.ID);
- pbView.launchBatch();
- return null;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.client.ui.commands;
-
-import org.argeo.slc.client.ui.views.ProcessDetailView;
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- * Command handler to set visible or create a ProcessDetailView. UUID of the
- * process is passed via command parameters.
- *
- * @author bsinou
- *
- */
-
-public class ProcessDetailsDisplayHandler extends AbstractHandler {
- // private static final Log log = LogFactory
- // .getLog(ProcessDetailsDisplayHandler.class);
-
- public Object execute(ExecutionEvent event) throws ExecutionException {
-
- // We pass the UUID of the process we want to display via command
- // parameters.
- String uuid = event
- .getParameter("org.argeo.slc.client.commands.processUuid");
-
- // mode = 1 : VIEW_ACTIVATE, Show view mode that indicates the view
- // should be made visible and activated. Use of this mode has the same
- // effect as calling showView.
- try {
- ProcessDetailView pView = (ProcessDetailView) HandlerUtil
- .getActiveWorkbenchWindow(event).getActivePage()
- .showView(ProcessDetailView.ID, "UUID-" + uuid, 1);
- pView.setUuid(uuid);
- pView.retrieveResults();
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- return null;
- }
-}
+++ /dev/null
-package org.argeo.slc.client.ui.commands;
-
-import org.argeo.slc.client.ui.views.ProcessListView;
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-public class ProcessListViewRefreshHandler extends AbstractHandler {
-
- public Object execute(ExecutionEvent event) throws ExecutionException {
- ProcessListView pView = (ProcessListView) HandlerUtil
- .getActiveWorkbenchWindow(event).getActivePage()
- .findView(ProcessListView.ID);
- pView.retrieveResults();
- return null;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.client.ui.commands;
-
-import org.argeo.slc.client.ui.views.ProcessBuilderView;
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- *
- * @author bsinou
- *
- * Launch the batch built in the ProcessBuilderView
- *
- * NOTE : only one batch is supported with this command, if more than
- * one batch is planned, this class must be updated with parameter.
- */
-
-public class RemoveSelectedProcessFromBatchHandler extends AbstractHandler {
- // private final static Log log =
- // LogFactory.getLog(RemoveSelectedProcessFromBatchHandler.class);
-
- public Object execute(ExecutionEvent event) throws ExecutionException {
- ProcessBuilderView pbView = (ProcessBuilderView) HandlerUtil
- .getActiveWorkbenchWindow(event).getActivePage()
- .findView(ProcessBuilderView.ID);
- pbView.removeSelected();
- return null;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.client.ui.commands;
-
-import org.argeo.slc.client.ui.views.ResultDetailView;
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-/**
- * Command handler to set visible or create a ResultDetailView. UUID of the
- * testResult is passed via command parameters.
- *
- * @author bsinou
- *
- */
-
-public class ResultDetailsDisplayHandler extends AbstractHandler {
- // private static final Log log = LogFactory
- // .getLog(ResultDetailsDisplayHandler.class);
-
- public Object execute(ExecutionEvent event) throws ExecutionException {
-
- // We pass the UUID of the test result we want to display via command
- // parameters.
- String uuid = event
- .getParameter("org.argeo.slc.client.commands.resultUuid");
-
- // mode = 2 : VIEW_VISIBLE, Show view mode that indicates the view
- // should be created or made visible if already created .
- // mode = 1 : VIEW_ACTIVATE, Show view mode that indicates the view
- // should be made visible and activated. Use of this mode has the same
- // effect as calling
- try {
- ResultDetailView rView = (ResultDetailView) HandlerUtil
- .getActiveWorkbenchWindow(event).getActivePage()
- .showView(ResultDetailView.ID, "UUID-" + uuid, 1);
- rView.setUuid(uuid);
- rView.retrieveResults();
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
-}
+++ /dev/null
-package org.argeo.slc.client.ui.commands;
-
-import org.argeo.slc.client.ui.views.ResultListView;
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-public class ResultListViewRefreshHandler extends AbstractHandler {
-
- public Object execute(ExecutionEvent event) throws ExecutionException {
- ResultListView view = (ResultListView) HandlerUtil
- .getActiveWorkbenchWindow(event).getActivePage()
- .findView(ResultListView.ID);
- view.retrieveResults();
- return null;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.client.ui.controllers;
-
-import org.argeo.slc.process.SlcExecution;
-import org.argeo.slc.runtime.SlcAgent;
-import org.argeo.slc.services.SlcExecutionService;
-
-public class ProcessController {
- private SlcExecutionService slcExecutionService;
-
- public void execute(SlcAgent agent, SlcExecution slcExecution) {
- slcExecutionService.newExecution(slcExecution);
- agent.runSlcExecution(slcExecution);
- }
-
- public void setSlcExecutionService(SlcExecutionService slcExecutionService) {
- this.slcExecutionService = slcExecutionService;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.client.ui.listeners;
-
-import org.argeo.slc.SlcException;
-import org.argeo.slc.client.ui.ClientUiPlugin;
-import org.argeo.slc.core.attachment.Attachment;
-import org.argeo.slc.core.attachment.SimpleAttachment;
-import org.argeo.slc.core.test.tree.TreeTestResult;
-import org.argeo.slc.core.test.tree.TreeTestResultListener;
-import org.argeo.slc.msg.test.tree.AddTreeTestResultAttachmentRequest;
-import org.argeo.slc.msg.test.tree.CloseTreeTestResultRequest;
-import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest;
-import org.argeo.slc.msg.test.tree.ResultPartRequest;
-import org.argeo.slc.services.TestManagerService;
-import org.argeo.slc.test.TestResultPart;
-import org.eclipse.ui.handlers.IHandlerService;
-
-/** In memory access to a test manager service */
-public class TestManagerServiceAdapter implements TreeTestResultListener {
- // private static final Log log = LogFactory
- // .getLog(TestManagerServiceAdapter.class);
-
- private Boolean onlyOnClose = false;
-
- private TestManagerService testManagerService;
-
- public void resultPartAdded(TreeTestResult testResult,
- TestResultPart testResultPart) {
- if (onlyOnClose)
- return;
-
- if (testResult.getResultParts().size() == 1
- && testResult.getResultParts().values().iterator().next()
- .getParts().size() == 1) {
- CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(
- testResult);
- testManagerService.createTreeTestResult(req);
- } else {
- ResultPartRequest req = new ResultPartRequest(testResult);
- testManagerService.addResultPart(req);
- }
- }
-
- public void close(TreeTestResult testResult) {
-
- if (onlyOnClose) {
- CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(
- testResult);
- testManagerService.createTreeTestResult(req);
- } else {
- CloseTreeTestResultRequest req = new CloseTreeTestResultRequest(
- testResult);
- testManagerService.closeTreeTestResult(req);
- }
-
- // TODO : clean this -> pb of thread && commandID hardCoded.
- // We force the refresh of the list view.
- ClientUiPlugin.getDefault().getWorkbench().getDisplay()
- .syncExec(new Runnable() {
- public void run() {
- IHandlerService handlerService = (IHandlerService) ClientUiPlugin
- .getDefault().getWorkbench()
- .getService(IHandlerService.class);
- try {
- handlerService
- .executeCommand(
- "org.argeo.slc.client.ui.refreshResultList",
- null);
- handlerService
- .executeCommand(
- "org.argeo.slc.client.ui.refreshProcessList",
- null);
-
- } catch (Exception e) {
- e.printStackTrace();
- throw new SlcException(
- "Problem while rendering result. "
- + e.getMessage());
- }
- }
- }
-
- );
-
- }
-
- public void addAttachment(TreeTestResult testResult, Attachment attachment) {
- if (onlyOnClose)
- return;
- AddTreeTestResultAttachmentRequest req = new AddTreeTestResultAttachmentRequest();
- req.setResultUuid(testResult.getUuid());
- req.setAttachment((SimpleAttachment) attachment);
- testManagerService.addAttachment(req);
-
- }
-
- /** Publishes the test result only when it gets closed. */
- public void setOnlyOnClose(Boolean onlyOnClose) {
- this.onlyOnClose = onlyOnClose;
- }
-
- public void setTestManagerService(TestManagerService testManagerService) {
- this.testManagerService = testManagerService;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.client.ui.perspectives;
-
-import org.eclipse.ui.IFolderLayout;
-import org.eclipse.ui.IPageLayout;
-import org.eclipse.ui.IPerspectiveFactory;
-
-public class SlcExecution implements IPerspectiveFactory {
-
- public void createInitialLayout(IPageLayout layout) {
- String editorArea = layout.getEditorArea();
- layout.setEditorAreaVisible(false);
- layout.setFixed(false);
-
- // Create the main ui layout
-
- // For a vertical split, the part on top gets the specified ratio of the
- // current space and the part on bottom gets the rest. Likewise, for a
- // horizontal split, the part at left gets the specified ratio of the
- // current space.
- IFolderLayout main = layout.createFolder("main", IPageLayout.RIGHT,
- 0.3f, editorArea);
- IFolderLayout left = layout.createFolder("left", IPageLayout.LEFT,
- 0.3f, editorArea);
-
- IFolderLayout bottom = layout.createFolder("bottom",
- IPageLayout.BOTTOM, 0.65f, "main");
-
- IFolderLayout topRight = layout.createFolder("topRight",
- IPageLayout.RIGHT, 0.6f, "main");
-
- // add the views to the corresponding place holder
- left.addView("org.argeo.slc.client.ui.executionModulesView");
- left.addView("org.argeo.slc.client.ui.resultListView");
-
- main.addView("org.argeo.slc.client.ui.processBuilderView");
- main.addPlaceholder("org.argeo.slc.client.ui.resultDetailView:UUID-*");
- main.addPlaceholder("org.argeo.slc.client.ui.processDetailView:UUID-*");
-
- bottom.addView("org.argeo.slc.client.ui.processListView");
-
- topRight.addView("org.argeo.slc.client.ui.processParametersView");
- }
-
-}
+++ /dev/null
-package org.argeo.slc.client.ui.providers;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.eclipse.ui.TreeObject;
-import org.argeo.eclipse.ui.TreeParent;
-import org.argeo.slc.execution.ExecutionFlowDescriptor;
-import org.argeo.slc.execution.ExecutionModuleDescriptor;
-import org.argeo.slc.runtime.SlcAgent;
-import org.eclipse.jface.viewers.ITreeContentProvider;
-import org.eclipse.jface.viewers.Viewer;
-
-public class ExecutionModulesContentProvider implements ITreeContentProvider {
- private final static Log log = LogFactory
- .getLog(ExecutionModulesContentProvider.class);
-
- // IoC
- private List<SlcAgent> slcAgents;
-
- public Object[] getChildren(Object parent) {
- if (parent instanceof ExecutionModuleNode) {
- ExecutionModuleNode executionModuleNode = (ExecutionModuleNode) parent;
- ExecutionModuleDescriptor emd = executionModuleNode.getDescriptor();
-
- // Terminate the building of UI specific object emd
- emd = executionModuleNode
- .getAgentNode()
- .getAgent()
- .getExecutionModuleDescriptor(emd.getName(),
- emd.getVersion());
- executionModuleNode.cacheDescriptor(emd);
-
- // This is not recursive, e.g. ExecutionModuleNode build a Tree of
- // specific
- // treeObject and cache it in the cacheDescriptor.
- // Then we only have TreeObjects
- return executionModuleNode.getChildren();
- } else if (parent instanceof AgentNode) {
- AgentNode agentNode = (AgentNode) parent;
-
- if (log.isTraceEnabled())
- log.trace("Scan agent " + agentNode);
-
- agentNode.clearChildren();
- for (ExecutionModuleDescriptor desc : agentNode.getAgent()
- .listExecutionModuleDescriptors()) {
- agentNode.addChild(new ExecutionModuleNode(agentNode, desc));
- }
-
- return agentNode.getChildren();
- } else if (parent instanceof TreeParent) {
- return ((TreeParent) parent).getChildren();
- } else if (parent instanceof FlowNode) {
- return new Object[0];
- } else {
- List<AgentNode> agentNodes = new ArrayList<AgentNode>();
- for (SlcAgent slcAgent : slcAgents) {
- agentNodes.add(new AgentNode(slcAgent));
- }
- return agentNodes.toArray();
- }
- }
-
- public Object getParent(Object node) {
- // if (node instanceof TreeObject) {
- // return ((TreeObject) node).getParent();
- // }
- return null;
- }
-
- public boolean hasChildren(Object parent) {
- if (parent instanceof TreeParent && ((TreeParent) parent).isLoaded()) {
- return ((TreeParent) parent).hasChildren();
- } else if (parent instanceof AgentNode) {
- return true;
- } else if (parent instanceof ExecutionModuleNode) {
- return true;
- }
- return false;
- }
-
- public void inputChanged(Viewer v, Object oldInput, Object newInput) {
- }
-
- public void dispose() {
- }
-
- public Object[] getElements(Object parent) {
- return getChildren(parent);
- }
-
-
-
- public class AgentNode extends TreeParent {
- private final SlcAgent agent;
-
- public AgentNode(SlcAgent agent) {
- super(agent.toString());
- this.agent = agent;
- }
-
- public SlcAgent getAgent() {
- return agent;
- }
- }
-
- public class ExecutionModuleNode extends TreeParent {
- private final AgentNode agentNode;
- private ExecutionModuleDescriptor descriptor;
- private Map<String, ExecutionFlowDescriptor> flowDescriptors;
-
- public ExecutionModuleNode(AgentNode agentNode,
- ExecutionModuleDescriptor descriptor) {
- super(descriptor.toString());
- this.agentNode = agentNode;
- this.descriptor = descriptor;
-
- }
-
- public AgentNode getAgentNode() {
- return agentNode;
- }
-
- public ExecutionModuleDescriptor getDescriptor() {
- return descriptor;
- }
-
- public void cacheDescriptor(ExecutionModuleDescriptor descriptor) {
- this.descriptor = descriptor;
-
- SortedMap<String, FolderNode> folderNodes = new TreeMap<String, FolderNode>();
- flowDescriptors = new HashMap<String, ExecutionFlowDescriptor>();
-
- for (ExecutionFlowDescriptor fd : descriptor.getExecutionFlows()) {
- // Find, format and store path and label values for each flow
- // descritor:
-
- // we format name of type path="" & name="path/toTest/Test" to :
- // path="path/toTest/" name="Test"
- String path;
- String label;
- int lastSlash = fd.getName().lastIndexOf('/');
- if ((fd.getPath() == null || fd.getPath().trim().equals(""))
- && lastSlash >= 0) {
- path = fd.getName().substring(0, lastSlash);
- label = fd.getName().substring(lastSlash + 1);
- } else {
- path = fd.getPath();
- label = fd.getName();
- }
-
- if (path == null || path.trim().equals("")
- || path.trim().equals("/")) {
- // directChildren.put(name, new FlowNode(name, this));
- addChild(new FlowNode(label, fd.getName(), fd, this));
- } else {
- FolderNode folderNode = mkdirs(this, path, folderNodes);
- folderNode.addChild(new FlowNode(label, fd.getName(), fd,
- this));
- }
-
- flowDescriptors.put(fd.getName(), fd);
- }
- // TODO: make it readonly
- }
-
- protected FolderNode mkdirs(TreeParent root, String path,
- SortedMap<String, FolderNode> folderNodes) {
- // Normalize
- if (path.charAt(0) != '/')
- path = '/' + path;
- if (path.charAt(path.length() - 1) == '/')
- path = path.substring(0, path.length() - 1);
-
- if (folderNodes.containsKey(path))
- return folderNodes.get(path);
-
- int lastIndx = path.lastIndexOf('/');
- String folderName;
- String parentPath;
- if (lastIndx >= 0) {
- folderName = path.substring(lastIndx + 1);
- parentPath = path.substring(0, lastIndx);
- } else {
- folderName = path;
- parentPath = "";
- }
-
- TreeParent parent;
- if (parentPath.equals(""))
- parent = root;
- else
- parent = mkdirs(root, parentPath, folderNodes);
- FolderNode newFolder = new FolderNode(folderName);
- parent.addChild(newFolder);
- folderNodes.put(path, newFolder);
- return newFolder;
- }
-
- public Map<String, ExecutionFlowDescriptor> getFlowDescriptors() {
- return flowDescriptors;
- }
-
- }
-
- /**
- *
- * @author bsinou
- *
- * The implementation of a vernice of a given slc process. Note that
- * we store the parent node (execution module node) & the
- * ExecutionFlowDescriptor.
- */
- public class FlowNode extends TreeObject {
-
- private final String flowName;
- private final ExecutionModuleNode executionModuleNode;
- private final ExecutionFlowDescriptor executionFlowDescriptor;
-
- public FlowNode(String label, String flowName,
- ExecutionFlowDescriptor executionFlowDescriptor,
- ExecutionModuleNode parent) {
- super(label);
- this.flowName = flowName;
- this.executionFlowDescriptor = executionFlowDescriptor;
- this.executionModuleNode = parent;
- }
-
- public String getFlowName() {
- return flowName;
- }
-
- public ExecutionModuleNode getExecutionModuleNode() {
- return executionModuleNode;
- }
-
- public ExecutionFlowDescriptor getExecutionFlowDescriptor() {
- return executionFlowDescriptor;
- }
-
- }
-
- public class FolderNode extends TreeParent {
- public FolderNode(String name) {
- super(name);
- }
-
- }
-
- // IoC
- public void setSlcAgents(List<SlcAgent> slcAgents) {
- this.slcAgents = slcAgents;
- }
-}
+++ /dev/null
-package org.argeo.slc.client.ui.providers;
-
-import org.argeo.slc.client.ui.views.ProcessBuilderView;
-import org.argeo.slc.client.ui.views.ProcessParametersView;
-import org.argeo.slc.core.execution.PrimitiveAccessor;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ColumnViewer;
-import org.eclipse.jface.viewers.EditingSupport;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.TextCellEditor;
-
-/**
- *
- *
- * Implements the ability to edit and save various type of
- * parameter of a given process. Parameter values are directly saved as
- * soon as the focus on a given field is lost.
- *
- *
- * Note that EditingSupport is tightly coupled with both
- * ProcessParametersView and ProcessBuilderView; it cannot serve as a
- * generic EditingSupport as is. Note also that it assumes that the
- * processes in ProcessBuilderView as stored as an ordered list.
-
- @author bsinou
- *
- */
-
-public class ProcessParametersEditingSupport extends EditingSupport {
-
- // private final static Log log = LogFactory
- // .getLog(ProcessParametersEditingSupport.class);
-
- private CellEditor strEditor;
- private CellEditor nbEditor;
- // private int column;
-
- private final static String strType = "string", intType = "integer";
-
- // different type of primitive
- private static enum primitiveType {
- strType, intType
- };
-
- // So that we can update corresponding process
- private int curProcessIndex;
- private ProcessBuilderView pbView;
-
- public ProcessParametersEditingSupport(ColumnViewer viewer, int column) {
- super(viewer);
- strEditor = new TextCellEditor(((TableViewer) viewer).getTable());
- // nbEditor = new NumberCellEditor(((TableViewer) viewer).getTable());
- // this.column = column;
- }
-
- @Override
- protected CellEditor getCellEditor(Object element) {
- // TODO return specific editor depending on the parameter type.
- return strEditor;
- }
-
- @Override
- protected boolean canEdit(Object element) {
- return true;
- }
-
- @Override
- protected Object getValue(Object element) {
- ProcessParametersView.ObjectWithName objectWithName = (ProcessParametersView.ObjectWithName) element;
-
- if (objectWithName.obj instanceof PrimitiveAccessor) {
- PrimitiveAccessor pv = (PrimitiveAccessor) objectWithName.obj;
- // we only handle string & integer parameter in a first time
- if (strType.equals(pv.getType())) {
- return pv.getValue();
- }
- if (intType.equals(pv.getType())) {
- return ((Integer) pv.getValue()).toString();
- }
- }
- return "unsupported param type";
-
- }
-
- @Override
- protected void setValue(Object element, Object value) {
- ProcessParametersView.ObjectWithName objectWithName = (ProcessParametersView.ObjectWithName) element;
- if (objectWithName.obj instanceof PrimitiveAccessor) {
- PrimitiveAccessor pv = (PrimitiveAccessor) objectWithName.obj;
- // we only handle string parameter in a first time
- if (strType.equals(pv.getType())) {
- pv.setValue(value);
- pbView.updateParameter(curProcessIndex, objectWithName.name,
- objectWithName.obj);
- } else if (intType.equals(pv.getType())) {
-
- String stVal = (String) value;
- Integer val = ("".equals(stVal)) ? new Integer(0)
- : new Integer(stVal);
- pv.setValue(val);
- pbView.updateParameter(curProcessIndex, objectWithName.name, pv);
- }
- getViewer().update(element, null);
- }
-
- }
-
- // Store the index of the process which parameters are being edited
- public void setCurrentProcessIndex(int index) {
- this.curProcessIndex = index;
- }
-
- public void setCurrentProcessBuilderView(
- ProcessBuilderView processbuilderView) {
- this.pbView = processbuilderView;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.client.ui.views;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.UUID;
-
-import org.apache.commons.io.IOUtils;
-import org.argeo.slc.SlcException;
-import org.argeo.slc.client.oxm.OxmInterface;
-import org.argeo.slc.client.ui.ClientUiPlugin;
-import org.argeo.slc.client.ui.controllers.ProcessController;
-import org.argeo.slc.client.ui.providers.ExecutionModulesContentProvider;
-import org.argeo.slc.client.ui.providers.ExecutionModulesContentProvider.FlowNode;
-import org.argeo.slc.execution.ExecutionModuleDescriptor;
-import org.argeo.slc.process.RealizedFlow;
-import org.argeo.slc.process.SlcExecution;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.DragSourceEvent;
-import org.eclipse.swt.dnd.DragSourceListener;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.ISharedImages;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.part.ViewPart;
-
-public class ExecutionModulesView extends ViewPart {
- // private final static Log log = LogFactory
- // .getLog(ExecutionModulesView.class);
-
- public static final String ID = "org.argeo.slc.client.ui.executionModulesView";
-
- private TreeViewer viewer;
-
- // Ioc
- private IContentProvider contentProvider;
- private OxmInterface oxmBean;
- private ProcessController processController;
-
- public void createPartControl(Composite parent) {
- viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
- viewer.setContentProvider(contentProvider);
- viewer.setLabelProvider(new ViewLabelProvider());
- viewer.setInput(getViewSite());
- viewer.addDoubleClickListener(new ViewDoubleClickListener());
- int operations = DND.DROP_COPY | DND.DROP_MOVE;
- Transfer[] tt = new Transfer[] { TextTransfer.getInstance() };
- viewer.addDragSupport(operations, tt, new ViewDragListener());
- }
-
- public void setFocus() {
- viewer.getControl().setFocus();
- }
-
- public TreeViewer getViewer() {
- return viewer;
- }
-
- class ViewLabelProvider extends LabelProvider implements
- ITableLabelProvider {
- public String getColumnText(Object obj, int index) {
- if (obj instanceof ExecutionModulesContentProvider.ExecutionModuleNode) {
- ExecutionModuleDescriptor emd = ((ExecutionModulesContentProvider.ExecutionModuleNode) obj)
- .getDescriptor();
- if (emd.getLabel() != null)
- return emd.getLabel();
- else
- return getText(emd);
- } else
- return getText(obj);
- }
-
- public Image getColumnImage(Object obj, int index) {
- return getImage(obj);
- }
-
- public Image getImage(Object obj) {
- if (obj instanceof ExecutionModulesContentProvider.AgentNode)
- return ClientUiPlugin.getDefault().getImageRegistry()
- .get("agent");
- else if (obj instanceof ExecutionModulesContentProvider.ExecutionModuleNode)
- return ClientUiPlugin.getDefault().getImageRegistry()
- .get("executionModule");
- else if (obj instanceof ExecutionModulesContentProvider.FolderNode)
- return ClientUiPlugin.getDefault().getImageRegistry()
- .get("folder");
- else if (obj instanceof ExecutionModulesContentProvider.FlowNode)
- return ClientUiPlugin.getDefault().getImageRegistry()
- .get("flow");
- else
- return PlatformUI.getWorkbench().getSharedImages()
- .getImage(ISharedImages.IMG_OBJ_ELEMENT);
- }
- }
-
- class ViewDoubleClickListener implements IDoubleClickListener {
- public void doubleClick(DoubleClickEvent evt) {
- Object obj = ((IStructuredSelection) evt.getSelection())
- .getFirstElement();
- if (obj instanceof ExecutionModulesContentProvider.FlowNode) {
- ExecutionModulesContentProvider.FlowNode fn = (ExecutionModulesContentProvider.FlowNode) obj;
-
- List<RealizedFlow> realizedFlows = new ArrayList<RealizedFlow>();
- RealizedFlow realizedFlow = new RealizedFlow();
- realizedFlow.setModuleName(fn.getExecutionModuleNode()
- .getDescriptor().getName());
- realizedFlow.setModuleVersion(fn.getExecutionModuleNode()
- .getDescriptor().getVersion());
- realizedFlow.setFlowDescriptor(fn.getExecutionModuleNode()
- .getFlowDescriptors().get(fn.getFlowName()));
- realizedFlows.add(realizedFlow);
-
- SlcExecution slcExecution = new SlcExecution();
- slcExecution.setUuid(UUID.randomUUID().toString());
- slcExecution.setRealizedFlows(realizedFlows);
- slcExecution.setHost(fn.getExecutionModuleNode().getAgentNode()
- .getAgent().toString());
- processController.execute(fn.getExecutionModuleNode()
- .getAgentNode().getAgent(), slcExecution);
- }
- }
-
- }
-
- class ViewDragListener implements DragSourceListener {
-
- public void dragStart(DragSourceEvent event) {
- System.out.println("Start Drag");
- }
-
- public void dragSetData(DragSourceEvent event) {
- System.out.println("dragSetData: " + event);
- // System.out.println("dataType: " + event.dataType);
-
- IStructuredSelection selection = (IStructuredSelection) viewer
- .getSelection();
- if (selection.getFirstElement() instanceof ExecutionModulesContentProvider.FlowNode) {
-
- if (TextTransfer.getInstance().isSupportedType(event.dataType)) {
- ExecutionModulesContentProvider.FlowNode flowNode = (ExecutionModulesContentProvider.FlowNode) selection
- .getFirstElement();
-
- Properties props = new Properties();
- flowNodeAsProperties(props, flowNode);
- props.setProperty("agentId", flowNode
- .getExecutionModuleNode().getAgentNode().getAgent()
- .getAgentUuid());
- props.setProperty("host", flowNode.getExecutionModuleNode().getAgentNode()
- .getAgent().toString());
-
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- try {
- props.store(out, "");
- event.data = new String(out.toByteArray());
- } catch (IOException e) {
- throw new SlcException(
- "Cannot transform realized flow", e);
- } finally {
- IOUtils.closeQuietly(out);
- }
- }
- }
- }
-
- public void dragFinished(DragSourceEvent event) {
- System.out.println("Finished Drag");
- }
-
- protected void flowNodeAsProperties(Properties props, FlowNode fn) {
-
- RealizedFlow realizedFlow = new RealizedFlow();
- realizedFlow.setModuleName(fn.getExecutionModuleNode()
- .getDescriptor().getName());
- realizedFlow.setModuleVersion(fn.getExecutionModuleNode()
- .getDescriptor().getVersion());
- realizedFlow.setFlowDescriptor(fn.getExecutionFlowDescriptor());
-
- // As we want to have the effective ExecutionSpec and not a
- // reference; we store it at the RealizeFlow level : thus the
- // marshaller will store the object and not only a reference.
- realizedFlow.setExecutionSpec(fn.getExecutionFlowDescriptor()
- .getExecutionSpec());
-
- props.setProperty("RealizedFlowAsXml",
- oxmBean.marshal(realizedFlow));
- System.out
- .println(oxmBean.marshal(fn.getExecutionFlowDescriptor()));
-
- }
-
- }
-
- // IoC
- public void setContentProvider(IContentProvider contentProvider) {
- this.contentProvider = contentProvider;
- }
-
- public void setProcessController(ProcessController processController) {
- this.processController = processController;
- }
-
- public void setOxmBean(OxmInterface oxmBean) {
- this.oxmBean = oxmBean;
- }
-
-}
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.client.ui.views;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.UUID;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.SlcException;
-import org.argeo.slc.client.oxm.OxmInterface;
-import org.argeo.slc.client.ui.ClientUiPlugin;
-import org.argeo.slc.client.ui.controllers.ProcessController;
-import org.argeo.slc.process.RealizedFlow;
-import org.argeo.slc.process.SlcExecution;
-import org.argeo.slc.runtime.SlcAgent;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.jface.viewers.ViewerDropAdapter;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.TextTransfer;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.dnd.TransferData;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.part.ViewPart;
-
-/**
- * Display a list of processes that are to be launched as batch. For the moment
- * being, only one agent by batch is enabled. The batch is contructed by
- * dropping process from the ExecutionModuleView. Wrong type of data dropped in
- * this view might raise errors.
- *
- * @author bsinou
- *
- */
-public class ProcessBuilderView extends ViewPart {
- private final static Log log = LogFactory.getLog(ProcessBuilderView.class);
-
- public static final String ID = "org.argeo.slc.client.ui.processBuilderView";
- private static final String EDIT_CMD = "org.argeo.slc.client.ui.editRealizedFlowDetails";
- private static final String FLOWASXML_PARAM = "org.argeo.slc.client.commands.realizedFlowAsXml";
- private static final String INDEX_PARAM = "org.argeo.slc.client.commands.realizedFlowIndex";
-
- // private final static Log log =
- // LogFactory.getLog(ProcessBuilderView.class);
-
- private TableViewer viewer;
- private List<RealizedFlow> realizedFlows = new ArrayList<RealizedFlow>();
- private String currentAgentUuid = null;
- private String host = null;
-
- // TODO find a better way to get index of the current selected row
- // used in removeSelected
- private int curSelectedRow = -1;
-
- // IoC
- private OxmInterface oxmBean;
- private ProcessController processController;
- private List<SlcAgent> slcAgents;
-
- public void createPartControl(Composite parent) {
- Table table = createTable(parent);
- viewer = new TableViewer(table);
- viewer.setLabelProvider(new ViewLabelProvider());
- viewer.setContentProvider(new ViewContentProvider());
- viewer.addSelectionChangedListener(new SelectionChangedListener());
-
- int operations = DND.DROP_COPY | DND.DROP_MOVE;
- Transfer[] tt = new Transfer[] { TextTransfer.getInstance() };
- viewer.addDropSupport(operations, tt, new ViewDropListener(viewer));
-
- viewer.setInput(getViewSite());
- }
-
- protected Table createTable(Composite parent) {
- int style = SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL
- | SWT.FULL_SELECTION | SWT.HIDE_SELECTION;
-
- Table table = new Table(parent, style);
-
- GridData gridData = new GridData(GridData.FILL_BOTH);
- gridData.grabExcessVerticalSpace = true;
- gridData.grabExcessHorizontalSpace = true;
- gridData.horizontalSpan = 3;
- table.setLayoutData(gridData);
-
- table.setLinesVisible(true);
- table.setHeaderVisible(true);
-
- TableColumn column = new TableColumn(table, SWT.LEFT, 0);
- column.setText("Module");
- column.setWidth(200);
-
- column = new TableColumn(table, SWT.LEFT, 1);
- column.setText("Flow");
- column.setWidth(200);
-
- return table;
- }
-
- protected void execute() {
- // TODO: use agent proxy to retrieve it
- SlcAgent agent = null;
- SlcExecution slcExecution = new SlcExecution();
- slcExecution.setUuid(UUID.randomUUID().toString());
- slcExecution.setRealizedFlows(realizedFlows);
- processController.execute(agent, slcExecution);
- }
-
- public void setFocus() {
- viewer.getControl().setFocus();
- }
-
- // update one of the parameter of a given RealizedFlow
- public void updateParameter(int realizedFlowIndex, String paramName,
- Object value) {
- RealizedFlow curRealizedFlow = realizedFlows.get(realizedFlowIndex);
- curRealizedFlow.getFlowDescriptor().getValues().put(paramName, value);
- }
-
- // clear the realizedFlow<List>
- public void clearBatch() {
- // we clear the list
- realizedFlows = new ArrayList<RealizedFlow>();
- curSelectedRow = -1;
- refreshParameterview();
- viewer.refresh();
- }
-
- // Remove the selected process from the batch
- public void removeSelected() {
- if (curSelectedRow == -1)
- return;
- else
- realizedFlows.remove(curSelectedRow);
- curSelectedRow = -1;
- refreshParameterview();
- viewer.refresh();
- }
-
- // calling this method with index =-1 will cause the reset of the view.
- private void refreshParameterview() {
- // We choose to directly access the view rather than going through
- // commands.
- ProcessParametersView ppView;
- try {
- ppView = (ProcessParametersView) ClientUiPlugin.getDefault()
- .getWorkbench().getActiveWorkbenchWindow().getActivePage()
- .showView(ProcessParametersView.ID);
-
- if (curSelectedRow == -1)
- ppView.setRealizedFlow(-1, null);
- else
- ppView.setRealizedFlow(curSelectedRow,
- realizedFlows.get(curSelectedRow));
- } catch (PartInitException e) {
- throw new SlcException(
- "Cannot Retrieve ProcessParameterView to edit parameters of selected process",
- e);
- }
- }
-
- // Return the list of the processes to execute.
- public void launchBatch() {
- SlcExecution slcExecution = new SlcExecution();
- slcExecution.setUuid(UUID.randomUUID().toString());
-
- slcExecution.setRealizedFlows(realizedFlows);
- slcExecution.setHost(host);
-
- // TODO : insure that the concept has been well understood & the
- // specification respected
- SlcAgent curAgent;
- for (int i = 0; i < slcAgents.size(); i++) {
- if (currentAgentUuid == null)
- throw new SlcException(
- "Cannot launch a batch if no agent is specified");
- if (currentAgentUuid.equals(slcAgents.get(i).getAgentUuid())) {
- curAgent = slcAgents.get(i);
- processController.execute(curAgent, slcExecution);
- break;
- }
- }
- }
-
- // Specific Providers for the current view.
- protected class ViewContentProvider implements IStructuredContentProvider {
- public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
- }
-
- public void dispose() {
- }
-
- public Object[] getElements(Object obj) {
- return realizedFlows.toArray();
- }
- }
-
- protected class ViewLabelProvider extends LabelProvider implements
- ITableLabelProvider {
- public String getColumnText(Object obj, int index) {
- RealizedFlow rf = (RealizedFlow) obj;
- switch (index) {
- case 0:
- return rf.getModuleName();
- case 1:
- return rf.getFlowDescriptor().getName();
- }
- return getText(obj);
- }
-
- public Image getColumnImage(Object obj, int index) {
- return null;
- }
-
- }
-
- // Handle Events
- class SelectionChangedListener implements ISelectionChangedListener {
- public void selectionChanged(SelectionChangedEvent evt) {
-
- IStructuredSelection curSelection = (IStructuredSelection) evt
- .getSelection();
- Object obj = curSelection.getFirstElement();
-
- if (obj instanceof RealizedFlow) {
- RealizedFlow rf = (RealizedFlow) obj;
- curSelectedRow = realizedFlows.indexOf(rf);
- refreshParameterview();
- }
- }
- }
-
- // Implementation of the Drop Listener
- protected class ViewDropListener extends ViewerDropAdapter {
-
- public ViewDropListener(Viewer viewer) {
- super(viewer);
- }
-
- @Override
- public boolean performDrop(Object data) {
-
- Properties props = new Properties();
-
- // TODO : Handle wrong type of dropped data
- ByteArrayInputStream in = new ByteArrayInputStream(data.toString()
- .getBytes());
- try {
- props.load(in);
- } catch (IOException e) {
- throw new SlcException("Cannot create read flow node", e);
- } finally {
- IOUtils.closeQuietly(in);
- }
-
- String agentId = props.getProperty("agentId");
- if (currentAgentUuid == null) {
- currentAgentUuid = agentId;
- host = props.getProperty("host");
- } else if (!currentAgentUuid.equals(agentId)) {
- // TODO: as for now, we can only construct batch on a single
- // Agent, must be upgraded to enable batch on various agent.
- throw new SlcException(
- "Cannot create batch on two (or more) distinct agents",
- null);
- // return false;
- }
-
- String fdXml = props.getProperty("RealizedFlowAsXml");
- if (fdXml == null)
- return false;
- RealizedFlow rf = (RealizedFlow) oxmBean.unmarshal(fdXml);
- realizedFlows.add(rf);
- curSelectedRow = realizedFlows.indexOf(rf);
- refreshParameterview();
- getViewer().refresh();
- return true;
- }
-
- @Override
- public boolean validateDrop(Object target, int operation,
- TransferData transferType) {
- return true;
- }
- }
-
- // IoC
- public void setSlcAgents(List<SlcAgent> slcAgents) {
- this.slcAgents = slcAgents;
- }
-
- public void setOxmBean(OxmInterface oxmBean) {
- this.oxmBean = oxmBean;
- }
-
- public void setProcessController(ProcessController processController) {
- this.processController = processController;
- }
-
-}
+++ /dev/null
-package org.argeo.slc.client.ui.views;
-
-import org.argeo.slc.dao.process.SlcExecutionDao;
-import org.argeo.slc.process.SlcExecution;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.part.ViewPart;
-
-/**
- * Multi-instance view that enables to browse the details of a given
- * SlcExecution
- *
- * @author bsinou
- *
- */
-
-public class ProcessDetailView extends ViewPart {
- // private final static Log log =
- // LogFactory.getLog(ProcessDetailView.class);
- public static final String ID = "org.argeo.slc.client.ui.processDetailView";
-
- private TreeViewer viewer;
-
- private String uuid;
- private SlcExecution se;
-
- // IoC
- private IContentProvider contentProvider;
- private SlcExecutionDao slcExecutionDao;
-
- public void createPartControl(Composite parent) {
- viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
- viewer.setContentProvider(contentProvider);
- // viewer.setLabelProvider(labelProvider);
- viewer.setLabelProvider(new ProcessDetailLabelProvider());
- // viewer.setInput(getViewSite());
- }
-
- public void setFocus() {
- viewer.getControl().setFocus();
- }
-
- public TreeViewer getViewer() {
- return viewer;
- }
-
- public void retrieveResults() {
- se = slcExecutionDao.getSlcExecution(uuid);
- viewer.setInput(se);
- }
-
- public void setUuid(String uuid) {
- this.uuid = uuid;
- }
-
- // Inner Class
- public class ProcessDetailLabelProvider extends LabelProvider implements
- ITableLabelProvider {
- public String getColumnText(Object obj, int index) {
- // log.debug(sessionFactory.getClass().toString());
-
- SlcExecution se = (SlcExecution) obj;
- switch (index) {
-
- case 0:
- return getText(se.getStartDate());
- case 1:
- return se.getHost();
- case 2:
- return se.getUuid();
- case 3:
- return se.currentStep().getType();
- }
- return getText(obj);
- }
-
- public Image getColumnImage(Object obj, int index) {
- return null;
- }
-
- }
-
- // IoC
- public void setContentProvider(IContentProvider contentProvider) {
- this.contentProvider = contentProvider;
- }
-
- public void setSlcExecutionDao(SlcExecutionDao slcExecutionDao) {
- this.slcExecutionDao = slcExecutionDao;
- }
-}
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.client.ui.views;
-
-import java.util.ArrayList;
-
-import org.argeo.slc.SlcException;
-import org.argeo.slc.client.ui.ClientUiPlugin;
-import org.argeo.slc.dao.process.SlcExecutionDao;
-import org.argeo.slc.process.SlcExecution;
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.IParameter;
-import org.eclipse.core.commands.Parameterization;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.part.ViewPart;
-
-/**
- * This class display the list of all processes that have run in the
- * corresponding agent. Currently, the local agent.
- *
- * @author bsinou
- *
- */
-public class ProcessListView extends ViewPart {
- // private final static Log log = LogFactory.getLog(ProcessListView.class);
-
- public static final String ID = "org.argeo.slc.client.ui.processListView";
-
- private TableViewer viewer;
-
- // IoC
- private SlcExecutionDao slcExecutionDao;
- private ITableLabelProvider tableLabelProvider;
- private IStructuredContentProvider structuredContentProvider;
-
- public void createPartControl(Composite parent) {
- Table table = createTable(parent);
- viewer = new TableViewer(table);
- viewer.setLabelProvider(tableLabelProvider);
- viewer.setContentProvider(structuredContentProvider);
- viewer.setInput(getViewSite());
- viewer.addDoubleClickListener(new ViewDoubleClickListener());
-
- }
-
- protected Table createTable(Composite parent) {
- int style = SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL
- | SWT.FULL_SELECTION | SWT.HIDE_SELECTION;
-
- Table table = new Table(parent, style);
-
- GridData gridData = new GridData(GridData.FILL_BOTH);
- gridData.grabExcessVerticalSpace = true;
- gridData.grabExcessHorizontalSpace = true;
- gridData.horizontalSpan = 3;
- table.setLayoutData(gridData);
-
- table.setLinesVisible(true);
- table.setHeaderVisible(true);
-
- TableColumn column = new TableColumn(table, SWT.LEFT, 0);
- column.setText("Date");
- column.setWidth(200);
-
- column = new TableColumn(table, SWT.LEFT, 1);
- column.setText("Host");
- column.setWidth(100);
-
- column = new TableColumn(table, SWT.LEFT, 2);
- column.setText("Id");
- column.setWidth(300);
-
- column = new TableColumn(table, SWT.LEFT, 3);
- column.setText("Status");
- column.setWidth(100);
-
- return table;
- }
-
- public void setFocus() {
- viewer.getControl().setFocus();
- }
-
- public void retrieveResults() {
- viewer.setInput(slcExecutionDao.listSlcExecutions());
- }
-
- // Handle Events
- class ViewDoubleClickListener implements IDoubleClickListener {
- public void doubleClick(DoubleClickEvent evt) {
- Object obj = ((IStructuredSelection) evt.getSelection())
- .getFirstElement();
-
- if (obj instanceof SlcExecution) {
- SlcExecution se = (SlcExecution) obj;
-
- IWorkbench iw = ClientUiPlugin.getDefault().getWorkbench();
- IHandlerService handlerService = (IHandlerService) iw
- .getService(IHandlerService.class);
- try {
- // get the command from plugin.xml
- IWorkbenchWindow window = iw.getActiveWorkbenchWindow();
- ICommandService cmdService = (ICommandService) window
- .getService(ICommandService.class);
- Command cmd = cmdService
- .getCommand("org.argeo.slc.client.ui.displayProcessDetails");
-
- ArrayList<Parameterization> parameters = new ArrayList<Parameterization>();
-
- // get the parameter
- IParameter iparam = cmd
- .getParameter("org.argeo.slc.client.commands.processUuid");
- Parameterization params = new Parameterization(iparam, se
- .getUuid()); // "testUUID");//
- parameters.add(params);
-
- // build the parameterized command
- ParameterizedCommand pc = new ParameterizedCommand(cmd,
- parameters.toArray(new Parameterization[parameters
- .size()]));
-
- // execute the command
- handlerService = (IHandlerService) window
- .getService(IHandlerService.class);
- handlerService.executeCommand(pc, null);
-
- } catch (Exception e) {
- e.printStackTrace();
- throw new SlcException("Problem while rendering result. "
- + e.getMessage());
- }
- }
- }
- }
-
- // IoC
- public void setSlcExecutionDao(SlcExecutionDao slcExecutionDao) {
- this.slcExecutionDao = slcExecutionDao;
- }
-
- public void setTableLabelProvider(ITableLabelProvider tableLabelProvider) {
- this.tableLabelProvider = tableLabelProvider;
- }
-
- public void setStructuredContentProvider(
- IStructuredContentProvider structuredContentProvider) {
- this.structuredContentProvider = structuredContentProvider;
- }
-
-}
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.client.ui.views;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.client.ui.ClientUiPlugin;
-import org.argeo.slc.client.ui.providers.ProcessParametersEditingSupport;
-import org.argeo.slc.core.execution.PrimitiveAccessor;
-import org.argeo.slc.execution.ExecutionSpecAttribute;
-import org.argeo.slc.process.RealizedFlow;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.TableViewerColumn;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.ui.part.ViewPart;
-
-/**
- *
- * @author bsinou
- *
- * This view, directly linked with the <code> ProcessBuilderView </code>
- * enables the display and editing the parameters of a given process.
- *
- * Note that for now we use <code>ExecutionFlowDescriptor.values</code>
- * attribute to recall (and update ??) the various parameters.
- */
-public class ProcessParametersView extends ViewPart {
- private static final Log log = LogFactory
- .getLog(ProcessParametersView.class);
-
- public static final String ID = "org.argeo.slc.client.ui.processParametersView";
-
- // This map stores actual values set to default if existing at the begining
- // and then the ones computed by the end user
- private Map<String, Object> values;
- // This map stores the spec of the attributes used to offer the end user
- // some choices.
- private Map<String, ExecutionSpecAttribute> specAttributes;
-
- // We must keep a reference to the current EditingSupport so that we can
- // update the index of the process being updated
- ProcessParametersEditingSupport ppEditingSupport;
-
- // view attributes
- private TableViewer viewer;
-
- public void createPartControl(Composite parent) {
- viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
- | SWT.V_SCROLL | SWT.FULL_SELECTION);
- createColumns(viewer);
-
- // WARNING
- // for the moment being, we support only one process builder at a time
- // we set the corresponding view in the editor here.
- ProcessBuilderView pbView = (ProcessBuilderView) ClientUiPlugin
- .getDefault().getWorkbench().getActiveWorkbenchWindow()
- .getActivePage().findView(ProcessBuilderView.ID);
- ppEditingSupport.setCurrentProcessBuilderView(pbView);
-
- viewer.setLabelProvider(new ViewLabelProvider());
- viewer.setContentProvider(new ViewContentProvider());
- viewer.setInput(getViewSite());
-
- }
-
- // This will create the columns for the table
- private void createColumns(TableViewer viewer) {
-
- String[] titles = { "Attribute name", "value" };
- int[] bounds = { 200, 200 };
-
- for (int i = 0; i < titles.length; i++) {
- TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
- column.getColumn().setText(titles[i]);
- column.getColumn().setWidth(bounds[i]);
- column.getColumn().setResizable(true);
- column.getColumn().setMoveable(true);
- if (i == 1) {
- // we create the used EditingSupport and enable editing support
- // for value Column
- ppEditingSupport = new ProcessParametersEditingSupport(viewer,
- i);
- column.setEditingSupport(ppEditingSupport);
- }
- }
- Table table = viewer.getTable();
- table.setHeaderVisible(true);
- table.setLinesVisible(true);
-
- }
-
- public void setFocus() {
- viewer.getControl().setFocus();
- }
-
- // set class attributes, refresh the lists of process paramaters to edit.
- public void setRealizedFlow(int index, RealizedFlow rf) {
- // force the cleaning of the view
- if (index == -1) {
- viewer.setInput(null);
- return;
- }
- // we store the index of the edited Process in the editor so that it can
- // save computed values.
- ppEditingSupport.setCurrentProcessIndex(index);
-
- // TODO :
- // We should handle ExecutionSpec here. need to be improved.
- // ExecutionSpec es = rf.getExecutionSpec();
- // if (es != null && es.getAttributes() != null)
- // parameters = es.getAttributes();
- // if (parameters != null)
- // viewer.setInput(parameters);
-
- values = rf.getFlowDescriptor().getValues();
- specAttributes = rf.getFlowDescriptor().getExecutionSpec()
- .getAttributes();
-
- if (values != null)
- viewer.setInput(values);
- else
- // No parameters to edit, we reset the view.
- viewer.setInput(null);
-
- }
-
- // Inner Classes we should use ExecutionSpecAttribute instead of values
- // see below
- protected class ViewContentProvider implements IStructuredContentProvider {
- public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
- }
-
- public void dispose() {
- }
-
- @SuppressWarnings("unchecked")
- // we cast the Map<String, Object> to List<Object>
- public Object[] getElements(Object obj) {
-
- if (obj instanceof Map && ((Map) obj).size() != 0) {
- List<ObjectWithName> list = new ArrayList<ObjectWithName>();
- Map<String, Object> map = (Map<String, Object>) obj;
- for (String key : map.keySet()) {
- list.add(new ObjectWithName(key, map.get(key)));
- }
- return list.toArray();
- } else {
- return new Object[0];
- }
- }
- }
-
- protected class ViewLabelProvider extends LabelProvider implements
- ITableLabelProvider {
-
- public String getColumnText(Object obj, int index) {
- // NOTE : the passed object is a line of the table !!!
-
- if (obj instanceof ObjectWithName) {
- ObjectWithName own = (ObjectWithName) obj;
- switch (index) {
- case 0:
- return own.name;
- case 1:
- if (own.obj instanceof PrimitiveAccessor) {
- PrimitiveAccessor pa = (PrimitiveAccessor) own.obj;
- if ("string".equals(pa.getType()))
- return (String) pa.getValue();
- else if ("integer".equals(pa.getType()))
- return ((Integer) pa.getValue()).toString();
- else
- return "Type " + pa.getType()
- + " not yet supported";
- } else
- return own.obj.toString();
- default:
- return getText(obj);
- }
- } else
- return getText(obj);
- }
-
- public Image getColumnImage(Object obj, int index) {
- return null;
- }
-
- }
-
- // We add an inner class to enrich the ExecutionSpecAttribute with a name
- // so that we can display it.
- public class ObjectWithName {
- public Object obj;
- public String name;
-
- public ObjectWithName(String name, Object obj) {
- this.name = name;
- this.obj = obj;
- }
-
- }
-}
+++ /dev/null
-package org.argeo.slc.client.ui.views;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.core.test.tree.TreeTestResult;
-import org.argeo.slc.dao.test.tree.TreeTestResultDao;
-import org.eclipse.jface.viewers.IContentProvider;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.TreeViewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeColumn;
-import org.eclipse.ui.part.ViewPart;
-
-/**
- * Multi-instance view that enables to browse the details of a given
- * TreeTestResult
- *
- * @author bsinou
- *
- */
-
-public class ResultDetailView extends ViewPart {
- private final static Log log = LogFactory.getLog(ResultDetailView.class);
- public static final String ID = "org.argeo.slc.client.ui.resultDetailView";
-
- protected String[] columnNames = new String[] { "Test", "State", "Message",
- "Id" };
-
- private TreeViewer viewer;
- private Tree resultDetailTree;
-
- private String uuid;
- private TreeTestResult ttr;
-
- // IoC
- private IContentProvider contentProvider;
- private ITableLabelProvider labelProvider;
- private TreeTestResultDao treeTestResultDao;
-
- public void createPartControl(Composite parent) {
- resultDetailTree = new Tree(parent, SWT.MULTI | SWT.H_SCROLL
- | SWT.V_SCROLL);
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- gd.horizontalSpan = 3;
- resultDetailTree.setLayoutData(gd);
- resultDetailTree.setLinesVisible(true);
- resultDetailTree.setHeaderVisible(true);
-
- for (int i = 0; i < columnNames.length; i++) {
- TreeColumn column = new TreeColumn(resultDetailTree, SWT.LEFT, i);
- column.setText(columnNames[i]);
-
- // TIP: Don't forget to set the width. If not set it is set to
- // 0 and it will look as if the column didn't exist.
- switch (i) {
- case 0:
- column.setWidth(130);
- case 1:
- column.setWidth(200);
- default:
- column.setWidth(70);
- }
- }
- viewer = new TreeViewer(resultDetailTree);
- viewer.setColumnProperties(columnNames);
-
- viewer.setContentProvider(contentProvider);
- // viewer.setLabelProvider(new ResultDetailLabelProvider());
- log.debug("Injected LabelProvider :" + labelProvider.toString());
-
- // TIP: It seems, that if the table has not defined any TreeColumns then
- // a plain LabelProvider will be used. Since, we don't provide an
- // instance of LabelProvider, a default one will be used and
- // the TableLableProvider is ignored without notice. Took me quite
- // a while to find that one out.
- viewer.setLabelProvider(labelProvider);
- log.debug("Persisted labelProvider :"
- + viewer.getLabelProvider().toString());
- // viewer.setInput(getViewSite());
-
- // viewer.expandAll();
-
- }
-
- public void setFocus() {
- viewer.getControl().setFocus();
- }
-
- public TreeViewer getViewer() {
- return viewer;
- }
-
- public void retrieveResults() {
- ttr = treeTestResultDao.getTestResult(uuid);
- viewer.setInput(ttr);
- // viewer.setInput(getViewSite());
-
- // setFocus();
- }
-
- public void setUuid(String uuid) {
- this.uuid = uuid;
- }
-
- // IoC
- public void setContentProvider(IContentProvider contentProvider) {
- this.contentProvider = contentProvider;
- }
-
- public void setLabelProvider(ITableLabelProvider labelProvider) {
- this.labelProvider = labelProvider;
- }
-
- public void setTreeTestResultDao(TreeTestResultDao treeTestResultDao) {
- this.treeTestResultDao = treeTestResultDao;
- }
-
-}
\ No newline at end of file
+++ /dev/null
-package org.argeo.slc.client.ui.views;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.SlcException;
-import org.argeo.slc.client.ui.ClientUiPlugin;
-import org.argeo.slc.core.test.tree.ResultAttributes;
-import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao;
-import org.eclipse.core.commands.Command;
-import org.eclipse.core.commands.IParameter;
-import org.eclipse.core.commands.Parameterization;
-import org.eclipse.core.commands.ParameterizedCommand;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.LabelProvider;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.Viewer;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.commands.ICommandService;
-import org.eclipse.ui.handlers.IHandlerService;
-import org.eclipse.ui.part.ViewPart;
-
-public class ResultListView extends ViewPart {
- private final static Log log = LogFactory.getLog(ResultListView.class);
-
- public static final String ID = "org.argeo.slc.client.ui.resultListView";
-
- private TableViewer viewer;
-
- private TreeTestResultCollectionDao testResultCollectionDao;
-
- public void createPartControl(Composite parent) {
- Table table = createTable(parent);
- viewer = new TableViewer(table);
- viewer.setLabelProvider(new ViewLabelProvider());
- viewer.setContentProvider(new ViewContentProvider());
- viewer.setInput(getViewSite());
- viewer.addDoubleClickListener(new ViewDoubleClickListener());
- }
-
- protected Table createTable(Composite parent) {
- int style = SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL
- | SWT.FULL_SELECTION | SWT.HIDE_SELECTION;
-
- Table table = new Table(parent, style);
-
- GridData gridData = new GridData(GridData.FILL_BOTH);
- gridData.grabExcessVerticalSpace = true;
- gridData.grabExcessHorizontalSpace = true;
- gridData.horizontalSpan = 3;
- table.setLayoutData(gridData);
-
- table.setLinesVisible(true);
- table.setHeaderVisible(true);
-
- TableColumn column = new TableColumn(table, SWT.LEFT, 0);
- column.setText("Date");
- column.setWidth(200);
-
- column = new TableColumn(table, SWT.LEFT, 1);
- column.setText("UUID");
- column.setWidth(300);
-
- return table;
- }
-
- // View Specific inner class
- protected static class ViewContentProvider implements
- IStructuredContentProvider {
-
- public void inputChanged(Viewer arg0, Object arg1, Object arg2) {
- }
-
- public void dispose() {
- }
-
- @SuppressWarnings("unchecked")
- public Object[] getElements(Object obj) {
- if (obj instanceof List) {
- return ((List<ResultAttributes>) obj).toArray();
- } else {
- return new Object[0];
- }
- }
- }
-
- protected class ViewLabelProvider extends LabelProvider implements
- ITableLabelProvider {
- public String getColumnText(Object obj, int index) {
- ResultAttributes ra = (ResultAttributes) obj;
- switch (index) {
- case 0:
- return getText(ra.getCloseDate());
- case 1:
- return ra.getUuid();
- }
- return getText(obj);
- }
-
- public Image getColumnImage(Object obj, int index) {
- return null;
- }
-
- }
-
- public void setFocus() {
- viewer.getControl().setFocus();
- }
-
- public void retrieveResults() {
- try {
- List<ResultAttributes> lst = testResultCollectionDao
- .listResultAttributes(null);
- if (log.isTraceEnabled())
- log.trace("Result attributes count: " + lst.size());
- viewer.setInput(lst);
- // viewer.refresh();
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
-
- // Handle Events
- /**
- * The ResultAttributes expose a part of the information contained in the
- * TreeTestResult, It has the same UUID as the corresponding treeTestResult.
- */
- class ViewDoubleClickListener implements IDoubleClickListener {
- public void doubleClick(DoubleClickEvent evt) {
- Object obj = ((IStructuredSelection) evt.getSelection())
- .getFirstElement();
-
- if (obj instanceof ResultAttributes) {
- ResultAttributes ra = (ResultAttributes) obj;
- log.debug("Double-clic on result with UUID" + ra.getUuid());
-
- IWorkbench iw = ClientUiPlugin.getDefault().getWorkbench();
- IHandlerService handlerService = (IHandlerService) iw
- .getService(IHandlerService.class);
- try {
- // get the command from plugin.xml
- IWorkbenchWindow window = iw.getActiveWorkbenchWindow();
- ICommandService cmdService = (ICommandService) window
- .getService(ICommandService.class);
- Command cmd = cmdService
- .getCommand("org.argeo.slc.client.ui.displayResultDetails");
-
- // log.debug("cmd : " + cmd);
- ArrayList<Parameterization> parameters = new ArrayList<Parameterization>();
-
- // get the parameter
- IParameter iparam = cmd
- .getParameter("org.argeo.slc.client.commands.resultUuid");
-
- Parameterization params = new Parameterization(iparam,
- ra.getUuid());
- parameters.add(params);
-
- // build the parameterized command
- ParameterizedCommand pc = new ParameterizedCommand(cmd,
- parameters.toArray(new Parameterization[parameters
- .size()]));
-
- // execute the command
- handlerService = (IHandlerService) window
- .getService(IHandlerService.class);
- handlerService.executeCommand(pc, null);
-
- } catch (Exception e) {
- e.printStackTrace();
- throw new SlcException("Problem while rendering result. "
- + e.getMessage());
- }
- }
- }
- }
-
- // Ioc
- public void setTestResultCollectionDao(
- TreeTestResultCollectionDao testResultCollectionDao) {
- this.testResultCollectionDao = testResultCollectionDao;
- }
-
-}