X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.suite.workbench.rap%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fworkbench%2FDefaultSuiteWorkbenchService.java;fp=org.argeo.suite.workbench.rap%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fworkbench%2FDefaultSuiteWorkbenchService.java;h=480af06c0a5525c7a6a308bd337992f9488d203f;hp=0000000000000000000000000000000000000000;hb=1f5e67056c6bb49a81afe4ec5b4f24b3cfd14121;hpb=904e8d151fda67e17b232dfe561723bc0b1d98fd diff --git a/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/DefaultSuiteWorkbenchService.java b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/DefaultSuiteWorkbenchService.java new file mode 100644 index 0000000..480af06 --- /dev/null +++ b/org.argeo.suite.workbench.rap/src/org/argeo/suite/workbench/DefaultSuiteWorkbenchService.java @@ -0,0 +1,79 @@ +package org.argeo.suite.workbench; + +import java.util.List; + +import javax.jcr.Node; + +import org.argeo.connect.workbench.AppWorkbenchService; +import org.argeo.connect.workbench.SystemWorkbenchService; +import org.argeo.eclipse.ui.EclipseUiUtils; +import org.argeo.suite.workbench.parts.DefaultDashboardEditor; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.swt.graphics.Image; + +/** Centralise workbench services from the various base apps */ +public class DefaultSuiteWorkbenchService implements SystemWorkbenchService { + + // Injected known AppWorkbenchServices: order is important, first found + // result will be returned by the various methods. + private List knownAppWbServices; + private String defaultEditorId = DefaultDashboardEditor.ID; + + @Override + public String getDefaultEditorId() { + return defaultEditorId; + } + + @Override + public String getEntityEditorId(Node entity) { + String result = null; + for (AppWorkbenchService appWbService : knownAppWbServices) { + result = appWbService.getEntityEditorId(entity); + if (EclipseUiUtils.notEmpty(result)) + return result; + } + return null; + } + + @Override + public String getSearchEntityEditorId(String nodeType) { + String result = null; + for (AppWorkbenchService appWbService : knownAppWbServices) { + result = appWbService.getSearchEntityEditorId(nodeType); + if (EclipseUiUtils.notEmpty(result)) + return result; + } + return null; + } + + @Override + public Image getIconForType(Node entity) { + Image result = null; + for (AppWorkbenchService appWbService : knownAppWbServices) { + result = appWbService.getIconForType(entity); + if (result != null) + return result; + } + return null; + } + + @Override + public Wizard getCreationWizard(Node node) { + Wizard result = null; + for (AppWorkbenchService appWbService : knownAppWbServices) { + result = appWbService.getCreationWizard(node); + if (result != null) + return result; + } + return null; + } + + /* DEPENDENCY INJECTION */ + public void setKnownAppWbServices(List knownAppWbServices) { + this.knownAppWbServices = knownAppWbServices; + } + + public void setDefaultEditorId(String defaultEditorId) { + this.defaultEditorId = defaultEditorId; + } +}