]> git.argeo.org Git - gpl/argeo-suite.git/blob - argeo/suite/workbench/parts/DefaultDashboardEditor.java
Prepare next development cycle
[gpl/argeo-suite.git] / argeo / suite / workbench / parts / DefaultDashboardEditor.java
1 package org.argeo.suite.workbench.parts;
2
3 import javax.jcr.Node;
4 import javax.jcr.NodeIterator;
5
6 import org.apache.commons.logging.Log;
7 import org.apache.commons.logging.LogFactory;
8 import org.argeo.connect.activities.ActivitiesTypes;
9 import org.argeo.connect.people.PeopleTypes;
10 import org.argeo.connect.resources.ResourcesTypes;
11 import org.argeo.connect.ui.workbench.ConnectWorkbenchUtils;
12 import org.argeo.connect.ui.workbench.Refreshable;
13 import org.argeo.connect.util.ConnectJcrUtils;
14 import org.argeo.eclipse.ui.EclipseUiUtils;
15 import org.argeo.suite.workbench.AsUiPlugin;
16 import org.eclipse.swt.SWT;
17 import org.eclipse.swt.layout.GridData;
18 import org.eclipse.swt.layout.GridLayout;
19 import org.eclipse.swt.widgets.Composite;
20
21 /** Argeo Suite Default Dashboard */
22 public class DefaultDashboardEditor extends AbstractSuiteDashboard implements Refreshable {
23 final static Log log = LogFactory.getLog(DefaultDashboardEditor.class);
24 public final static String ID = AsUiPlugin.PLUGIN_ID + ".defaultDashboardEditor";
25
26 // Default gadget dimensions
27 private int wh = 300;
28 private int hh = 350;
29
30 private Composite lastUpdatedDocsGadget;
31
32 @Override
33 public void createPartControl(Composite parent) {
34 super.createPartControl(parent);
35
36 parent.setLayout(new GridLayout());
37 // Main Layout
38 Composite body = getFormToolkit().createComposite(parent);
39 body.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true));
40
41 GridLayout bodyLayout = new GridLayout(2, true);
42 bodyLayout.horizontalSpacing = 20;
43 bodyLayout.verticalSpacing = 20;
44 body.setLayout(bodyLayout);
45
46 // Contacts
47 Composite contactGadget = createGadgetCmp(body, wh, hh);
48 populateContactsGadget(contactGadget);
49
50 // Last updated doc List
51 lastUpdatedDocsGadget = createGadgetCmp(body, wh, hh);
52 }
53
54 @Override
55 public void forceRefresh(Object object) {
56 refreshDocListGadget();
57 }
58
59 @Override
60 public void setFocus() {
61 refreshDocListGadget();
62 }
63
64 /** Links to the various last updated docs */
65 private void refreshDocListGadget() {
66 EclipseUiUtils.clear(lastUpdatedDocsGadget);
67 lastUpdatedDocsGadget.setLayout(EclipseUiUtils.noSpaceGridLayout());
68 createGadgetTitleCmp(lastUpdatedDocsGadget, "Last updated documents");
69 Composite bodyCmp = createGadgetBodyCmp(lastUpdatedDocsGadget);
70
71 NodeIterator nit = getDocumentsService().getLastUpdatedDocuments(getSession());
72 while (nit.hasNext()) {
73 Node file = nit.nextNode();
74 createOpenEntityEditorLink(getAppWorkbenchService(), bodyCmp, ConnectJcrUtils.getName(file), file);
75 }
76 lastUpdatedDocsGadget.layout(true, true);
77 }
78
79 /** Links to the various contact search pages */
80 private void populateContactsGadget(Composite parent) {
81 parent.setLayout(EclipseUiUtils.noSpaceGridLayout());
82 createGadgetTitleCmp(parent, "Contacts");
83 Composite bodyCmp = createGadgetBodyCmp(parent);
84 ConnectWorkbenchUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Persons",
85 PeopleTypes.PEOPLE_PERSON);
86 ConnectWorkbenchUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Organisations",
87 PeopleTypes.PEOPLE_ORG);
88 ConnectWorkbenchUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Mailing lists",
89 PeopleTypes.PEOPLE_MAILING_LIST);
90 ConnectWorkbenchUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Tasks",
91 ActivitiesTypes.ACTIVITIES_TASK);
92 ConnectWorkbenchUtils.createOpenSearchEditorLink(getAppWorkbenchService(), bodyCmp, "Tags",
93 ResourcesTypes.RESOURCES_TAG);
94 }
95 }