X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.suite.e4%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fe4%2Fparts%2FDefaultDashboardEditor.java;h=2061f146866f550de5d31e70c2e2a228748551a6;hp=d068575eeccd1017f14711e64f44acd265638ea3;hb=10979f7ac1e22e8ef036a0b88aa8f8cdde6dcf65;hpb=46e85e4b2db0de3d3590af45af713ebeab040069 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 d068575..2061f14 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 @@ -6,6 +6,7 @@ import java.util.GregorianCalendar; import java.util.List; import javax.annotation.PostConstruct; +import javax.inject.Inject; import javax.jcr.Node; import javax.jcr.NodeIterator; import javax.jcr.Property; @@ -15,6 +16,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.ActivitiesTypes; import org.argeo.activities.ui.TaskViewerContextMenu; import org.argeo.cms.auth.CurrentUser; import org.argeo.cms.util.CmsUtils; @@ -26,14 +28,16 @@ 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; @@ -59,7 +63,11 @@ public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Re // public final static String ID = AsUiPlugin.PLUGIN_ID + // ".defaultDashboardEditor"; + @Inject private ActivitiesService activitiesService; + + @Inject + @Optional private TrackerService trackerService; private String datePattern = "dd MMM yyyy"; @@ -103,30 +111,13 @@ public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Re 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. "); + // CmsUtils.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(); @@ -158,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); + } + }); } } @@ -184,13 +183,35 @@ 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() + " "; + 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); + 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(), + getSession(), getSystemAppService(), getSystemWorkbenchService(), mainMixin); + if (EclipseUiUtils.notEmpty(pathCreated)) + forceRefresh(null); + } + }); + NodeIterator nit = activitiesService.getMyTasks(getSession(), true); if (nit.hasNext()) { List overdueTasks = new ArrayList<>(); @@ -207,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(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); + } } - } - // 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(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 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); + } } } @@ -346,18 +370,13 @@ 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,