]> git.argeo.org Git - gpl/argeo-suite.git/blob - parts/AbstractSuiteDashboard.java
Prepare next development cycle
[gpl/argeo-suite.git] / parts / AbstractSuiteDashboard.java
1 package org.argeo.suite.e4.parts;
2
3 import javax.annotation.PostConstruct;
4 import javax.annotation.PreDestroy;
5 import javax.inject.Inject;
6 import javax.jcr.Node;
7 import javax.jcr.Repository;
8 import javax.jcr.Session;
9
10 import org.argeo.api.NodeConstants;
11 import org.argeo.cms.ui.eclipse.forms.FormToolkit;
12 import org.argeo.cms.ui.util.CmsUiUtils;
13 import org.argeo.connect.SystemAppService;
14 import org.argeo.connect.resources.ResourcesService;
15 import org.argeo.connect.ui.AppWorkbenchService;
16 import org.argeo.connect.ui.ConnectUiStyles;
17 import org.argeo.connect.ui.SystemWorkbenchService;
18 import org.argeo.connect.util.ConnectJcrUtils;
19 import org.argeo.eclipse.ui.EclipseUiUtils;
20 import org.argeo.jcr.JcrUtils;
21 import org.eclipse.e4.ui.di.Focus;
22 import org.eclipse.rap.rwt.RWT;
23 import org.eclipse.rap.rwt.client.service.BrowserNavigation;
24 import org.eclipse.swt.SWT;
25 import org.eclipse.swt.events.SelectionAdapter;
26 import org.eclipse.swt.events.SelectionEvent;
27 import org.eclipse.swt.layout.GridData;
28 import org.eclipse.swt.layout.GridLayout;
29 import org.eclipse.swt.widgets.Composite;
30 import org.eclipse.swt.widgets.Display;
31 import org.eclipse.swt.widgets.Label;
32 import org.eclipse.swt.widgets.Link;
33
34 /** Generic dashboard for Argeo Suite applications */
35 public abstract class AbstractSuiteDashboard {
36 // private final static Log log =
37 // LogFactory.getLog(AbstractSuiteDashboard.class);
38
39 // DEPENDENCY INJECTION
40 @Inject
41 private Repository repository;
42 @Inject
43 private ResourcesService resourcesService;
44 @Inject
45 private SystemAppService systemAppService;
46 @Inject
47 private SystemWorkbenchService systemWorkbenchService;
48
49 private Session homeSession;
50 private Session mainSession;
51
52 // UI Objects
53 private FormToolkit toolkit;
54
55 // RAP specific
56 private BrowserNavigation browserNavigation;
57
58 public void init() {
59 homeSession = ConnectJcrUtils.login(repository, NodeConstants.HOME_WORKSPACE);
60 mainSession = ConnectJcrUtils.login(repository);
61 // updateTooltip(input);
62 }
63
64 // private void updateTooltip(IEditorInput input) {
65 // if (input instanceof EntityEditorInput) {
66 // EntityEditorInput sei = (EntityEditorInput) input;
67 // sei.setTooltipText("My Dashboard");
68 // }
69 // }
70
71 /**
72 * Implementing classes must call super in order to create the correct form
73 * toolkit
74 */
75 @PostConstruct
76 public void createPartControl(Composite parent) {
77 toolkit = new FormToolkit(Display.getCurrent());
78 init();
79 browserNavigation = RWT.getClient().getService(BrowserNavigation.class);
80 }
81
82 // UTILS
83 protected Composite createGadgetCmp(Composite parent, int widthHint, int heightHint) {
84 Composite gadgetCmp = toolkit.createComposite(parent, SWT.BORDER);
85 GridData gd = new GridData(SWT.CENTER, SWT.CENTER, false, false);
86 gd.widthHint = widthHint;
87 gd.heightHint = heightHint;
88 gadgetCmp.setLayoutData(gd);
89 CmsUiUtils.style(gadgetCmp, ConnectUiStyles.GADGET_BOX);
90 return gadgetCmp;
91 }
92
93 protected Composite createGadgetTitleCmp(Composite parent, String title) {
94 Composite titleCmp = toolkit.createComposite(parent, SWT.BACKGROUND | SWT.INHERIT_NONE);
95 CmsUiUtils.style(titleCmp, ConnectUiStyles.GADGET_HEADER);
96 titleCmp.setBackground(null);
97 GridData gd = new GridData(SWT.FILL, SWT.TOP, true, false);
98 titleCmp.setLayoutData(gd);
99 titleCmp.setLayout(new GridLayout());
100
101 Label titleLbl = toolkit.createLabel(titleCmp, title + " ", SWT.BOLD);
102 CmsUiUtils.style(titleLbl, ConnectUiStyles.GADGET_HEADER);
103 titleLbl.setBackground(null);
104 return titleCmp;
105 }
106
107 protected Composite createGadgetBodyCmp(Composite parent) {
108 Composite bodyCmp = toolkit.createComposite(parent, SWT.BACKGROUND | SWT.INHERIT_NONE);
109 bodyCmp.setLayoutData(EclipseUiUtils.fillAll());
110 bodyCmp.setLayout(new GridLayout());
111 return bodyCmp;
112 }
113
114 protected Link createOpenEntityEditorLink(final AppWorkbenchService peopleUiService, Composite parent,
115 final String label, final Node entity) {
116 Link link = new Link(parent, SWT.NONE);
117 link.setText("<a>" + label + "</a>");
118 link.setLayoutData(EclipseUiUtils.fillWidth());
119 link.addSelectionListener(new SelectionAdapter() {
120 private static final long serialVersionUID = 1L;
121
122 @Override
123 public void widgetSelected(final SelectionEvent event) {
124 // Map<String, String> params = new HashMap<String, String>();
125 // params.put(ConnectEditor.PARAM_JCR_ID,
126 // ConnectJcrUtils.getIdentifier(entity));
127 // CommandUtils.callCommand(peopleUiService.getOpenEntityEditorCmdId(), params);
128 peopleUiService.openEntityEditor(entity);
129 }
130 });
131 return link;
132 }
133
134 // Life cycle
135 @PreDestroy
136 public void dispose() {
137 JcrUtils.logoutQuietly(homeSession);
138 JcrUtils.logoutQuietly(mainSession);
139 }
140
141 @Focus
142 public void setFocus() {
143 browserNavigation.pushState("~", "Dashboard");
144 }
145
146 // Expose to implementing classes
147 protected Session getHomeSession() {
148 return homeSession;
149 }
150
151 public Session getMainSession() {
152 return mainSession;
153 }
154
155 public ResourcesService getResourcesService() {
156 return resourcesService;
157 }
158
159 protected SystemAppService getSystemAppService() {
160 return systemAppService;
161 }
162
163 protected SystemWorkbenchService getSystemWorkbenchService() {
164 return systemWorkbenchService;
165 }
166
167 protected FormToolkit getFormToolkit() {
168 return toolkit;
169 }
170
171 /* DEPENDENCY INJECTION */
172 // public void setRepository(Repository repository) {
173 // this.repository = repository;
174 // }
175 //
176 // public void setResourcesService(ResourcesService resourcesService) {
177 // this.resourcesService = resourcesService;
178 // }
179 //
180 // public void setSystemAppService(SystemAppService systemAppService) {
181 // this.systemAppService = systemAppService;
182 // }
183 //
184 // public void setSystemWorkbenchService(SystemWorkbenchService
185 // systemWorkbenchService) {
186 // this.systemWorkbenchService = systemWorkbenchService;
187 // }
188 }