Adapt after SystemApp interfaces addition
[gpl/argeo-suite.git] / org.argeo.suite.workbench.rap / src / org / argeo / suite / workbench / DefaultSuiteWorkbenchService.java
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 (file)
index 0000000..480af06
--- /dev/null
@@ -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<AppWorkbenchService> 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<AppWorkbenchService> knownAppWbServices) {
+               this.knownAppWbServices = knownAppWbServices;
+       }
+
+       public void setDefaultEditorId(String defaultEditorId) {
+               this.defaultEditorId = defaultEditorId;
+       }
+}