]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - eclipse/plugins/org.argeo.slc.client.ui/src/org/argeo/slc/client/ui/views/ProcessListView.java
First draft of ProcessDetail Implementation
[gpl/argeo-slc.git] / eclipse / plugins / org.argeo.slc.client.ui / src / org / argeo / slc / client / ui / views / ProcessListView.java
index 8e44a08bead92f5d9f1c3e07e0d743293a15b875..63d017b7964ae648b5961f3e5e4546ae418143d3 100644 (file)
@@ -1,7 +1,21 @@
 package org.argeo.slc.client.ui.views;
 
+import java.util.ArrayList;
+
+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.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;
@@ -9,10 +23,21 @@ 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);
+       private final static Log log = LogFactory.getLog(ProcessListView.class);
 
        public static final String ID = "org.argeo.slc.client.ui.processListView";
 
@@ -29,6 +54,8 @@ public class ProcessListView extends ViewPart {
                viewer.setLabelProvider(tableLabelProvider);
                viewer.setContentProvider(structuredContentProvider);
                viewer.setInput(getViewSite());
+               viewer.addDoubleClickListener(new ViewDoubleClickListener());
+
        }
 
        protected Table createTable(Composite parent) {
@@ -73,6 +100,59 @@ public class ProcessListView extends ViewPart {
                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;
+                               log.debug("DOUBLE CLICK ON process d'UUID" + se.getUuid());
+
+                               // ClientUiPlugin.getDefault().getWorkbench().getDisplay()
+                               // .syncExec(new Runnable() {
+                               // public void run() {
+                               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");
+
+                                       // log.debug("cmd : " + cmd);
+                                       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;