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