X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.suite.e4%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fe4%2Fparts%2FDefaultDashboardEditor.java;h=dd1c2b084732003422bc110d68220a7f92c9d0af;hb=a55bb0dc7e9fbcefb645d34ce24b326d1506a623;hp=3a89fea5d97f0e32412cd389d69cd7e9d2bded2b;hpb=40776acccb8ac4457d96a4c7448cd6e5f404771c;p=gpl%2Fargeo-suite.git
diff --git a/org.argeo.suite.e4/src/org/argeo/suite/e4/parts/DefaultDashboardEditor.java b/org.argeo.suite.e4/src/org/argeo/suite/e4/parts/DefaultDashboardEditor.java
index 3a89fea..dd1c2b0 100644
--- a/org.argeo.suite.e4/src/org/argeo/suite/e4/parts/DefaultDashboardEditor.java
+++ b/org.argeo.suite.e4/src/org/argeo/suite/e4/parts/DefaultDashboardEditor.java
@@ -16,9 +16,11 @@ 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.ActivitiesTypes;
import org.argeo.activities.ui.TaskViewerContextMenu;
+import org.argeo.api.NodeUtils;
import org.argeo.cms.auth.CurrentUser;
-import org.argeo.cms.util.CmsUtils;
+import org.argeo.cms.ui.util.CmsUiUtils;
import org.argeo.connect.ConnectException;
import org.argeo.connect.ConnectNames;
import org.argeo.connect.ui.ConnectWorkbenchUtils;
@@ -26,15 +28,16 @@ import org.argeo.connect.ui.Refreshable;
import org.argeo.connect.util.ConnectJcrUtils;
import org.argeo.eclipse.ui.EclipseUiUtils;
import org.argeo.jcr.JcrUtils;
-import org.argeo.node.NodeUtils;
+import org.argeo.suite.e4.SuiteMsg;
import org.argeo.tracker.TrackerNames;
import org.argeo.tracker.TrackerService;
-import org.argeo.tracker.TrackerTypes;
import org.argeo.tracker.core.TrackerUtils;
import org.argeo.tracker.ui.TaskListLabelProvider;
import org.argeo.tracker.ui.TaskVirtualListComposite;
-import org.eclipse.e4.ui.di.Focus;
+import org.eclipse.e4.core.di.annotations.Optional;
import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
@@ -62,7 +65,9 @@ public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Re
@Inject
private ActivitiesService activitiesService;
+
@Inject
+ @Optional
private TrackerService trackerService;
private String datePattern = "dd MMM yyyy";
@@ -89,10 +94,10 @@ public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Re
@Override
public void forceRefresh(Object object) {
- CmsUtils.clear(headerCmp);
- populateHeaderPart(headerCmp, NodeUtils.getUserHome(getSession()));
+ CmsUiUtils.clear(headerCmp);
+ populateHeaderPart(headerCmp, NodeUtils.getUserHome(getHomeSession()));
- CmsUtils.clear(taskListCmp);
+ CmsUiUtils.clear(taskListCmp);
populateTaskListCmp(taskListCmp);
headerCmp.getParent().layout(true, true);
@@ -100,41 +105,24 @@ public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Re
private void populateTaskListCmp(Composite parent) {
parent.setLayout(EclipseUiUtils.noSpaceGridLayout());
- NodeIterator nit = activitiesService.getMyTasks(getSession(), true);
+ NodeIterator nit = activitiesService.getMyTasks(getMainSession(), true);
if (!nit.hasNext()) {
Composite noTaskCmp = new Composite(parent, SWT.NO_FOCUS);
noTaskCmp.setLayoutData(EclipseUiUtils.fillAll());
noTaskCmp.setLayout(new GridLayout());
- Label noTaskLbl = new Label(noTaskCmp, SWT.CENTER);
- noTaskLbl.setText(" You have no pending Task. ");
- CmsUtils.markup(noTaskLbl);
- noTaskLbl.setLayoutData(new GridData(SWT.CENTER, SWT.BOTTOM, true, true));
-
- final Link createTaskLk = new Link(noTaskCmp, SWT.CENTER);
- createTaskLk.setText(" Create a task ");
- createTaskLk.setLayoutData(new GridData(SWT.CENTER, SWT.TOP, true, true));
-
- createTaskLk.addSelectionListener(new SelectionAdapter() {
- private static final long serialVersionUID = -9028457805156989935L;
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- String mainMixin = TrackerTypes.TRACKER_TASK;
- String pathCreated = ConnectWorkbenchUtils.createAndConfigureEntity(createTaskLk.getShell(),
- getSession(), getSystemAppService(), getSystemWorkbenchService(), mainMixin);
- if (EclipseUiUtils.notEmpty(pathCreated))
- forceRefresh(null);
- }
- });
+ // Label noTaskLbl = new Label(noTaskCmp, SWT.CENTER);
+ // noTaskLbl.setText(" You have no pending Task. ");
+ // CmsUiUtils.markup(noTaskLbl);
+ // noTaskLbl.setLayoutData(new GridData(SWT.CENTER, SWT.BOTTOM, true, true));
} else {
- TaskListLabelProvider labelProvider = new TaskListLabelProvider(trackerService);
+ TaskListLabelProvider labelProvider = new TaskListLabelProvider(getSystemAppService());
tvlc = new TaskVirtualListComposite(parent, SWT.NO_FOCUS, (ILabelProvider) labelProvider, 54);
tvlc.setLayoutData(EclipseUiUtils.fillAll());
final TableViewer viewer = tvlc.getTableViewer();
viewer.setInput(JcrUtils.nodeIteratorToList(nit).toArray());
- final TaskViewerContextMenu contextMenu = new TaskViewerContextMenu(viewer, getSession(),
+ final TaskViewerContextMenu contextMenu = new TaskViewerContextMenu(viewer, getHomeSession(),
activitiesService) {
@Override
public boolean performAction(String actionId) {
@@ -161,7 +149,15 @@ public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Re
}
}
});
+ viewer.addDoubleClickListener(new IDoubleClickListener() {
+ @Override
+ public void doubleClick(DoubleClickEvent event) {
+ IStructuredSelection sel = (IStructuredSelection) viewer.getSelection();
+ Node task = (Node) sel.getFirstElement();
+ getSystemWorkbenchService().openEntityEditor(task);
+ }
+ });
}
}
@@ -186,15 +182,37 @@ public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Re
// Title
Label titleLbl = new Label(leftCmp, SWT.WRAP | SWT.LEAD);
- CmsUtils.markup(titleLbl);
- String titleStr = " Hello " + CurrentUser.getDisplayName() + " ";
+ CmsUiUtils.markup(titleLbl);
+ String titleStr = "" + CurrentUser.getDisplayName() + "";
titleLbl.setText(titleStr);
- GridData gd = new GridData(SWT.TOP, SWT.BOTTOM, false, false);
- gd.verticalIndent = 5;
- gd.horizontalIndent = 10;
+ GridData gd = new GridData(SWT.BEGINNING, SWT.TOP, false, false);
+ // gd.verticalIndent = 5;
+ // gd.horizontalIndent = 10;
titleLbl.setLayoutData(gd);
- NodeIterator nit = activitiesService.getMyTasks(getSession(), true);
+ final Link createTaskLk = new Link(leftCmp, SWT.CENTER);
+ // createTaskLk.setText("Create a task");
+ createTaskLk.setText("" + SuiteMsg.newTodo.lead() + "");
+ gd = new GridData(SWT.BEGINNING, SWT.TOP, false, false);
+ // gd.verticalIndent = 5;
+ gd.horizontalIndent = 10;
+ createTaskLk.setLayoutData(gd);
+
+ createTaskLk.addSelectionListener(new SelectionAdapter() {
+ private static final long serialVersionUID = -9028457805156989935L;
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ // String mainMixin = TrackerTypes.TRACKER_TASK;
+ String mainMixin = ActivitiesTypes.ACTIVITIES_TASK;
+ String pathCreated = ConnectWorkbenchUtils.createAndConfigureEntity(createTaskLk.getShell(),
+ getHomeSession(), getSystemAppService(), getSystemWorkbenchService(), mainMixin);
+ if (EclipseUiUtils.notEmpty(pathCreated))
+ forceRefresh(null);
+ }
+ });
+
+ NodeIterator nit = activitiesService.getMyTasks(getHomeSession(), true);
if (nit.hasNext()) {
List overdueTasks = new ArrayList<>();
while (nit.hasNext()) {
@@ -210,41 +228,44 @@ public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Re
}
}
- nit = trackerService.getMyMilestones(getSession(), true);
- List openMilestones = new ArrayList<>();
-
- if (nit.hasNext()) {
- List overdueMilestones = new ArrayList<>();
- while (nit.hasNext()) {
- Node currNode = nit.nextNode();
- openMilestones.add(currNode);
- if (isOverdue(currNode, TrackerNames.TRACKER_TARGET_DATE))
- overdueMilestones.add(currNode);
- }
- if (!overdueMilestones.isEmpty()) {
- Composite overdueCmp = new Composite(leftCmp, SWT.NO_FOCUS);
- long size = overdueMilestones.size();
- String overdueStr = "You have " + size + " overdue milestone" + (size > 1 ? "s" : "") + ": ";
- populateMuliValueClickableList(overdueCmp, overdueMilestones.toArray(new Node[0]), new MilestoneLp(),
- overdueStr);
+ if (trackerService != null) {
+ nit = trackerService.getMyMilestones(getHomeSession(), true);
+ List openMilestones = new ArrayList<>();
+
+ if (nit.hasNext()) {
+ List overdueMilestones = new ArrayList<>();
+ while (nit.hasNext()) {
+ Node currNode = nit.nextNode();
+ openMilestones.add(currNode);
+ if (isOverdue(currNode, TrackerNames.TRACKER_TARGET_DATE))
+ overdueMilestones.add(currNode);
+ }
+ if (!overdueMilestones.isEmpty()) {
+ Composite overdueCmp = new Composite(leftCmp, SWT.NO_FOCUS);
+ long size = overdueMilestones.size();
+ String overdueStr = "You have " + size + " overdue milestone" + (size > 1 ? "s" : "") + ": ";
+ populateMuliValueClickableList(overdueCmp, overdueMilestones.toArray(new Node[0]),
+ new MilestoneLp(), overdueStr);
+ }
}
- }
- // My projects
- List openProjects = JcrUtils.nodeIteratorToList(trackerService.getMyProjects(getSession(), true));
- if (!openProjects.isEmpty()) {
- Group myProjectsGp = new Group(rightCmp, SWT.NO_FOCUS);
- myProjectsGp.setText("My open projects");
- myProjectsGp.setLayoutData(EclipseUiUtils.fillWidth());
- populateMuliValueClickableList(myProjectsGp, openProjects.toArray(new Node[0]), new ProjectLp(), null);
- }
+ // My projects
+ List openProjects = JcrUtils.nodeIteratorToList(trackerService.getMyProjects(getHomeSession(), true));
+ if (!openProjects.isEmpty()) {
+ Group myProjectsGp = new Group(rightCmp, SWT.NO_FOCUS);
+ myProjectsGp.setText("My open projects");
+ myProjectsGp.setLayoutData(EclipseUiUtils.fillWidth());
+ populateMuliValueClickableList(myProjectsGp, openProjects.toArray(new Node[0]), new ProjectLp(), null);
+ }
- // My Milestones
- if (!openMilestones.isEmpty()) {
- Group myMilestoneGp = new Group(rightCmp, SWT.NO_FOCUS);
- myMilestoneGp.setText("My open milestones");
- myMilestoneGp.setLayoutData(EclipseUiUtils.fillWidth());
- populateMuliValueClickableList(myMilestoneGp, openMilestones.toArray(new Node[0]), new MilestoneLp(), null);
+ // My Milestones
+ if (!openMilestones.isEmpty()) {
+ Group myMilestoneGp = new Group(rightCmp, SWT.NO_FOCUS);
+ myMilestoneGp.setText("My open milestones");
+ myMilestoneGp.setLayoutData(EclipseUiUtils.fillWidth());
+ populateMuliValueClickableList(myMilestoneGp, openMilestones.toArray(new Node[0]), new MilestoneLp(),
+ null);
+ }
}
}
@@ -349,23 +370,18 @@ public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Re
}
}
- @Focus
- public void setFocus() {
- // refreshDocListGadget();
- }
-
- public void setActivitiesService(ActivitiesService activitiesService) {
- this.activitiesService = activitiesService;
- }
-
- public void setTrackerService(TrackerService trackerService) {
- this.trackerService = trackerService;
- }
+ // public void setActivitiesService(ActivitiesService activitiesService) {
+ // this.activitiesService = activitiesService;
+ // }
+ //
+ // public void setTrackerService(TrackerService trackerService) {
+ // this.trackerService = trackerService;
+ // }
// LOCAL HELPERS
private void populateMuliValueClickableList(Composite parent, Node[] nodes, ColumnLabelProvider lp,
String listLabel) {
- CmsUtils.clear(parent);
+ CmsUiUtils.clear(parent);
RowLayout rl = new RowLayout(SWT.HORIZONTAL | SWT.WRAP);
rl.wrap = true;
rl.marginLeft = rl.marginTop = rl.marginBottom = 0;
@@ -381,7 +397,7 @@ public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Re
int i = 1;
for (Node node : nodes) {
Link link = new Link(parent, SWT.NONE);
- CmsUtils.markup(link);
+ CmsUiUtils.markup(link);
link.setText(lp.getText(node) + (i != nodes.length ? ", " : ""));
i++;
// Color fc = lp.getForeground(node);