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