Adapt to changes in Connect
[gpl/argeo-suite.git] / org.argeo.suite.workbench.rap / src / org / argeo / suite / workbench / parts / DefaultDashboardEditor.java
index eb7c569301726da948b6192c59d0e6ae3c4eff9a..d55b5bf83a33043228bd68dcbb8d8f2b765395d2 100644 (file)
@@ -14,19 +14,20 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.argeo.activities.ActivitiesNames;
 import org.argeo.activities.ActivitiesService;
+import org.argeo.activities.workbench.parts.TaskViewerContextMenu;
 import org.argeo.cms.auth.CurrentUser;
 import org.argeo.cms.ui.workbench.util.CommandUtils;
 import org.argeo.cms.util.CmsUtils;
 import org.argeo.connect.ConnectNames;
-import org.argeo.connect.ui.ConnectUiUtils;
+import org.argeo.connect.ui.ConnectEditor;
+import org.argeo.connect.ui.Refreshable;
 import org.argeo.connect.util.ConnectJcrUtils;
-import org.argeo.connect.workbench.Refreshable;
-import org.argeo.connect.workbench.commands.OpenEntityEditor;
+import org.argeo.connect.workbench.ConnectWorkbenchUtils;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.jcr.JcrUtils;
 import org.argeo.node.NodeUtils;
-import org.argeo.suite.SuiteException;
 import org.argeo.suite.workbench.AsUiPlugin;
+import org.argeo.suite.workbench.SuiteWorkbenchException;
 import org.argeo.tracker.TrackerNames;
 import org.argeo.tracker.TrackerService;
 import org.argeo.tracker.TrackerTypes;
@@ -34,10 +35,15 @@ import org.argeo.tracker.core.TrackerUtils;
 import org.argeo.tracker.ui.TaskListLabelProvider;
 import org.argeo.tracker.ui.TaskVirtualListComposite;
 import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TableViewer;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseAdapter;
+import org.eclipse.swt.events.MouseEvent;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.layout.RowLayout;
@@ -46,6 +52,9 @@ import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Link;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.PartInitException;
 
 /** Argeo Suite Default Dashboard */
 public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Refreshable {
@@ -61,6 +70,11 @@ public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Re
        private Composite taskListCmp;
        private TaskVirtualListComposite tvlc;
 
+       @Override
+       public void init(IEditorSite site, IEditorInput input) throws PartInitException {
+               super.init(site, input);
+       }
+
        @Override
        public void createPartControl(Composite parent) {
                super.createPartControl(parent);
@@ -111,7 +125,7 @@ public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Re
                                @Override
                                public void widgetSelected(SelectionEvent e) {
                                        String mainMixin = TrackerTypes.TRACKER_TASK;
-                                       String pathCreated = ConnectUiUtils.createAndConfigureEntity(createTaskLk.getShell(), getSession(),
+                                       String pathCreated = ConnectWorkbenchUtils.createAndConfigureEntity(createTaskLk.getShell(), getSession(),
                                                        getSystemAppService(), getSystemWorkbenchService(), mainMixin);
                                        if (EclipseUiUtils.notEmpty(pathCreated))
                                                forceRefresh(null);
@@ -122,7 +136,36 @@ public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Re
                        TaskListLabelProvider labelProvider = new TaskListLabelProvider(trackerService);
                        tvlc = new TaskVirtualListComposite(parent, SWT.NO_FOCUS, labelProvider, 54);
                        tvlc.setLayoutData(EclipseUiUtils.fillAll());
-                       tvlc.getTableViewer().setInput(JcrUtils.nodeIteratorToList(nit).toArray());
+                       final TableViewer viewer = tvlc.getTableViewer();
+                       viewer.setInput(JcrUtils.nodeIteratorToList(nit).toArray());
+                       final TaskViewerContextMenu contextMenu = new TaskViewerContextMenu(viewer, getSession(),
+                                       activitiesService) {
+                               @Override
+                               public boolean performAction(String actionId) {
+                                       boolean hasChanged = super.performAction(actionId);
+                                       if (hasChanged) {
+                                               viewer.getTable().setFocus();
+                                               forceRefresh(null);
+                                               // NodeIterator nit =
+                                               // activitiesService.getMyTasks(getSession(), true);
+                                               // viewer.setInput(JcrUtils.nodeIteratorToList(nit).toArray());
+                                       }
+                                       return hasChanged;
+                               }
+                       };
+                       viewer.getTable().addMouseListener(new MouseAdapter() {
+                               private static final long serialVersionUID = 6737579410648595940L;
+
+                               @Override
+                               public void mouseDown(MouseEvent e) {
+                                       if (e.button == 3) {
+                                               // contextMenu.setCurrFolderPath(currDisplayedFolder);
+                                               contextMenu.show(viewer.getTable(), new Point(e.x, e.y),
+                                                               (IStructuredSelection) viewer.getSelection());
+                                       }
+                               }
+                       });
+
                }
        }
 
@@ -131,7 +174,7 @@ public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Re
                        Calendar now = GregorianCalendar.getInstance();
                        return node.hasProperty(propName) && node.getProperty(propName).getDate().before(now);
                } catch (RepositoryException e) {
-                       throw new SuiteException("Cannot check overdue status with property " + propName + " on " + node, e);
+                       throw new SuiteWorkbenchException("Cannot check overdue status with property " + propName + " on " + node, e);
                }
        }
 
@@ -355,7 +398,7 @@ public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Re
                                @Override
                                public void widgetSelected(final SelectionEvent event) {
                                        CommandUtils.callCommand(getSystemWorkbenchService().getOpenEntityEditorCmdId(),
-                                                       OpenEntityEditor.PARAM_JCR_ID, ConnectJcrUtils.getIdentifier(node));
+                                                       ConnectEditor.PARAM_JCR_ID, ConnectJcrUtils.getIdentifier(node));
                                }
                        });
                }