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=24ada5034082d122c16c12e379d60064feda8d5c;hp=052d2c60b4154286f9f0debc9ed201d4b9c7f6c0;hb=fe916e251a36556d328e1259d71c21891cd92c17;hpb=1fb1ccc2edbf7cfbdd37efc618c52b8eebe4e6be 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 052d2c6..24ada50 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 @@ -1,9 +1,15 @@ package org.argeo.suite.workbench.parts; +import javax.jcr.Node; +import javax.jcr.NodeIterator; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.argeo.connect.people.PeopleConstants; import org.argeo.connect.people.PeopleTypes; import org.argeo.connect.people.workbench.rap.PeopleRapUtils; +import org.argeo.connect.ui.workbench.Refreshable; +import org.argeo.connect.util.ConnectJcrUtils; import org.argeo.eclipse.ui.EclipseUiUtils; import org.argeo.suite.workbench.AsUiPlugin; import org.eclipse.swt.SWT; @@ -12,7 +18,7 @@ import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; /** Argeo Suite Default Dashboard */ -public class DefaultDashboardEditor extends AbstractSuiteDashboard { +public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Refreshable { final static Log log = LogFactory.getLog(DefaultDashboardEditor.class); public final static String ID = AsUiPlugin.PLUGIN_ID + ".defaultDashboardEditor"; @@ -20,6 +26,8 @@ public class DefaultDashboardEditor extends AbstractSuiteDashboard { private int wh = 300; private int hh = 350; + private Composite lastUpdatedDocsGadget; + @Override public void createPartControl(Composite parent) { super.createPartControl(parent); @@ -34,38 +42,37 @@ public class DefaultDashboardEditor extends AbstractSuiteDashboard { bodyLayout.verticalSpacing = 20; body.setLayout(bodyLayout); - // Project List - Composite projectsGadget = createGadgetCmp(body, wh, hh); - populateProjectsGadget(projectsGadget); - // Contacts Composite contactGadget = createGadgetCmp(body, wh, hh); populateContactsGadget(contactGadget); + // Last updated doc List + lastUpdatedDocsGadget = createGadgetCmp(body, wh, hh); } - /** Links to the various projects */ - private void populateProjectsGadget(Composite parent) { - parent.setLayout(EclipseUiUtils.noSpaceGridLayout()); - createGadgetTitleCmp(parent, "Projects"); - Composite bodyCmp = createGadgetBodyCmp(parent); + @Override + public void forceRefresh(Object object) { + refreshDocListGadget(); + } + + @Override + public void setFocus() { + refreshDocListGadget(); + } - // // TODO enhance this - // NodeIterator nit = AoUtils.listNodesOfType(getSession(), - // AoTypes.OFFICE_ACCOUNT, - // getAoService().getBasePath(AoTypes.OFFICE_ACCOUNT)); - // while (nit.hasNext()) { - // Node account = nit.nextNode(); - // PeopleRapUtils.createOpenEntityEditorLink(getAoWbService(), bodyCmp, - // ConnectJcrUtils.get(account, Property.JCR_TITLE), account); - // } - // - // PeopleWorkbenchService aoWbSrv = getAoWbService(); - // // Opens a lits of all projects - // - // PeopleRapUtils.createOpenSearchEditorLink(aoWbSrv, bodyCmp, "All - // projects", TrackerTypes.TRACKER_PROJECT, - // AoConstants.ACCOUNTS_BASE_PATH); + /** Links to the various last updated docs */ + private void refreshDocListGadget() { + EclipseUiUtils.clear(lastUpdatedDocsGadget); + lastUpdatedDocsGadget.setLayout(EclipseUiUtils.noSpaceGridLayout()); + createGadgetTitleCmp(lastUpdatedDocsGadget, "Last updated documents"); + Composite bodyCmp = createGadgetBodyCmp(lastUpdatedDocsGadget); + + NodeIterator nit = getDocumentsService().getLastUpdatedDocuments(getSession()); + while (nit.hasNext()) { + Node file = nit.nextNode(); + createOpenEntityEditorLink(getAppWorkbenchService(), bodyCmp, ConnectJcrUtils.getName(file), file); + } + lastUpdatedDocsGadget.layout(true, true); } /** Links to the various contact search pages */ @@ -73,10 +80,25 @@ public class DefaultDashboardEditor extends AbstractSuiteDashboard { parent.setLayout(EclipseUiUtils.noSpaceGridLayout()); createGadgetTitleCmp(parent, "Contacts"); Composite bodyCmp = createGadgetBodyCmp(parent); - PeopleRapUtils.createOpenSearchEditorLink(getPeopleWorkbenchService(), bodyCmp, "Persons", + + PeopleRapUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Persons", PeopleTypes.PEOPLE_PERSON, getPeopleService().getBasePath(PeopleTypes.PEOPLE_PERSON)); - PeopleRapUtils.createOpenSearchEditorLink(getPeopleWorkbenchService(), bodyCmp, "Organisations", + PeopleRapUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Organisations", PeopleTypes.PEOPLE_ORG, getPeopleService().getBasePath(PeopleTypes.PEOPLE_ORG)); + + Node tagParent = getPeopleService().getResourceService().getTagLikeResourceParent(getSession(), + PeopleTypes.PEOPLE_MAILING_LIST); + PeopleRapUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Mailing lists", + PeopleTypes.PEOPLE_MAILING_LIST, ConnectJcrUtils.getPath(tagParent)); + PeopleRapUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Tasks", PeopleTypes.PEOPLE_TASK, + getPeopleService().getBasePath(null)); + + tagParent = getPeopleService().getResourceService().getTagLikeResourceParent(getSession(), + PeopleConstants.RESOURCE_TAG); + + PeopleRapUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Tags", + PeopleTypes.PEOPLE_TAG_INSTANCE, ConnectJcrUtils.getPath(tagParent)); + } }