X-Git-Url: http://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.suite.e4%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fe4%2Fparts%2FAbstractSuiteDashboard.java;fp=org.argeo.suite.e4%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fe4%2Fparts%2FAbstractSuiteDashboard.java;h=96919019f66ef66a11789ec0d0df8db6a1c84687;hp=0000000000000000000000000000000000000000;hb=46e85e4b2db0de3d3590af45af713ebeab040069;hpb=0508f30bba143164a0fe83e3e7343e9375a4b6f4 diff --git a/org.argeo.suite.e4/src/org/argeo/suite/e4/parts/AbstractSuiteDashboard.java b/org.argeo.suite.e4/src/org/argeo/suite/e4/parts/AbstractSuiteDashboard.java new file mode 100644 index 0000000..9691901 --- /dev/null +++ b/org.argeo.suite.e4/src/org/argeo/suite/e4/parts/AbstractSuiteDashboard.java @@ -0,0 +1,161 @@ +package org.argeo.suite.e4.parts; + +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; +import javax.jcr.Node; +import javax.jcr.Repository; +import javax.jcr.Session; + +import org.argeo.cms.ui.eclipse.forms.FormToolkit; +import org.argeo.cms.util.CmsUtils; +import org.argeo.connect.SystemAppService; +import org.argeo.connect.resources.ResourcesService; +import org.argeo.connect.ui.AppWorkbenchService; +import org.argeo.connect.ui.ConnectUiStyles; +import org.argeo.connect.ui.SystemWorkbenchService; +import org.argeo.connect.util.ConnectJcrUtils; +import org.argeo.eclipse.ui.EclipseUiUtils; +import org.argeo.jcr.JcrUtils; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Link; + +/** Generic dashboard for Argeo Suite applications */ +public abstract class AbstractSuiteDashboard { + + // DEPENDENCY INJECTION + private Repository repository; + private ResourcesService resourcesService; + private SystemAppService systemAppService; + private SystemWorkbenchService systemWorkbenchService; + + private Session session; + + // UI Objects + private FormToolkit toolkit; + + public void init() { + session = ConnectJcrUtils.login(repository); +// updateTooltip(input); + } + +// private void updateTooltip(IEditorInput input) { +// if (input instanceof EntityEditorInput) { +// EntityEditorInput sei = (EntityEditorInput) input; +// sei.setTooltipText("My Dashboard"); +// } +// } + + /** + * Implementing classes must call super in order to create the correct form + * toolkit + */ + @PostConstruct + public void createPartControl(Composite parent) { + toolkit = new FormToolkit(Display.getCurrent()); + init(); + } + + // UTILS + protected Composite createGadgetCmp(Composite parent, int widthHint, int heightHint) { + Composite gadgetCmp = toolkit.createComposite(parent, SWT.BORDER); + GridData gd = new GridData(SWT.CENTER, SWT.CENTER, false, false); + gd.widthHint = widthHint; + gd.heightHint = heightHint; + gadgetCmp.setLayoutData(gd); + CmsUtils.style(gadgetCmp, ConnectUiStyles.GADGET_BOX); + return gadgetCmp; + } + + protected Composite createGadgetTitleCmp(Composite parent, String title) { + Composite titleCmp = toolkit.createComposite(parent, SWT.BACKGROUND | SWT.INHERIT_NONE); + CmsUtils.style(titleCmp, ConnectUiStyles.GADGET_HEADER); + titleCmp.setBackground(null); + GridData gd = new GridData(SWT.FILL, SWT.TOP, true, false); + titleCmp.setLayoutData(gd); + titleCmp.setLayout(new GridLayout()); + + Label titleLbl = toolkit.createLabel(titleCmp, title + " ", SWT.BOLD); + CmsUtils.style(titleLbl, ConnectUiStyles.GADGET_HEADER); + titleLbl.setBackground(null); + return titleCmp; + } + + protected Composite createGadgetBodyCmp(Composite parent) { + Composite bodyCmp = toolkit.createComposite(parent, SWT.BACKGROUND | SWT.INHERIT_NONE); + bodyCmp.setLayoutData(EclipseUiUtils.fillAll()); + bodyCmp.setLayout(new GridLayout()); + return bodyCmp; + } + + protected Link createOpenEntityEditorLink(final AppWorkbenchService peopleUiService, Composite parent, + final String label, final Node entity) { + Link link = new Link(parent, SWT.NONE); + link.setText("" + label + ""); + link.setLayoutData(EclipseUiUtils.fillWidth()); + link.addSelectionListener(new SelectionAdapter() { + private static final long serialVersionUID = 1L; + + @Override + public void widgetSelected(final SelectionEvent event) { + // Map params = new HashMap(); + // params.put(ConnectEditor.PARAM_JCR_ID, + // ConnectJcrUtils.getIdentifier(entity)); + // CommandUtils.callCommand(peopleUiService.getOpenEntityEditorCmdId(), params); + peopleUiService.openEntityEditor(entity); + } + }); + return link; + } + + // Life cycle + @PreDestroy + public void dispose() { + JcrUtils.logoutQuietly(session); + } + + + // Expose to implementing classes + protected Session getSession() { + return session; + } + + public ResourcesService getResourcesService() { + return resourcesService; + } + + protected SystemAppService getSystemAppService() { + return systemAppService; + } + + protected SystemWorkbenchService getSystemWorkbenchService() { + return systemWorkbenchService; + } + + protected FormToolkit getFormToolkit() { + return toolkit; + } + + /* DEPENDENCY INJECTION */ + public void setRepository(Repository repository) { + this.repository = repository; + } + + public void setResourcesService(ResourcesService resourcesService) { + this.resourcesService = resourcesService; + } + + public void setSystemAppService(SystemAppService systemAppService) { + this.systemAppService = systemAppService; + } + + public void setSystemWorkbenchService(SystemWorkbenchService systemWorkbenchService) { + this.systemWorkbenchService = systemWorkbenchService; + } +}