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=5156f1c5fdc2062086cfedfc604a2f1ec940e388;hp=eb7c569301726da948b6192c59d0e6ae3c4eff9a;hb=7f5c5f481fc1d86e289c89c1692d7d9c24ab9de6;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..5156f1c 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,6 +14,7 @@ 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; @@ -25,8 +26,8 @@ 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); @@ -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); } }