X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.suite.workbench.rap%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fworkbench%2Fparts%2FDefaultDashboardEditor.java;h=d24ad972cdb6f560e78a73f4d9ec7074bc3e5f20;hp=eb7c569301726da948b6192c59d0e6ae3c4eff9a;hb=f29206b576a5fbc9715e89377ed8f7c04f623ef1;hpb=35c5ae33922e7e670fc23eb8dc8b91e582f300d2 diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/DefaultDashboardEditor.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/DefaultDashboardEditor.java index eb7c569..d24ad97 100644 --- a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/DefaultDashboardEditor.java +++ b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/parts/DefaultDashboardEditor.java @@ -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.util.ConnectJcrUtils; +import org.argeo.connect.workbench.ConnectWorkbenchUtils; import org.argeo.connect.workbench.Refreshable; import org.argeo.connect.workbench.commands.OpenEntityEditor; 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); } }