First part of the refactoring: clean backends.
[gpl/argeo-suite.git] / org.argeo.suite.workbench.rap / src / org / argeo / suite / workbench / parts / DefaultDashboardEditor.java
index 052d2c60b4154286f9f0debc9ed201d4b9c7f6c0..e45e0682e4a099e1fc6e935b898141a91e19fd96 100644 (file)
@@ -1,9 +1,17 @@
 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.ConnectConstants;
+import org.argeo.connect.activities.ActivitiesTypes;
 import org.argeo.connect.people.PeopleTypes;
 import org.argeo.connect.people.workbench.rap.PeopleRapUtils;
+import org.argeo.connect.resources.ResourcesTypes;
+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 +20,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 +28,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 +44,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 +82,23 @@ 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 = 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",
+                               ActivitiesTypes.ACTIVITIES_TASK, getPeopleService().getBasePath(null));
+
+               tagParent = getResourceService().getTagLikeResourceParent(getSession(), ConnectConstants.RESOURCE_TAG);
+
+               PeopleRapUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Tags",
+                               ResourcesTypes.PEOPLE_TAG_INSTANCE, ConnectJcrUtils.getPath(tagParent));
+
        }
 }