summaryrefslogtreecommitdiffstats
path: root/rba.tool.editor/src/rba/tool/editor/util
diff options
context:
space:
mode:
Diffstat (limited to 'rba.tool.editor/src/rba/tool/editor/util')
-rw-r--r--rba.tool.editor/src/rba/tool/editor/util/ExtensionModuleManager.java63
-rw-r--r--rba.tool.editor/src/rba/tool/editor/util/RBAModelEditorNameUtil.xtend11
-rw-r--r--rba.tool.editor/src/rba/tool/editor/util/RBAModelEditorToolUtil.xtend40
3 files changed, 114 insertions, 0 deletions
diff --git a/rba.tool.editor/src/rba/tool/editor/util/ExtensionModuleManager.java b/rba.tool.editor/src/rba/tool/editor/util/ExtensionModuleManager.java
new file mode 100644
index 0000000..966acf0
--- /dev/null
+++ b/rba.tool.editor/src/rba/tool/editor/util/ExtensionModuleManager.java
@@ -0,0 +1,63 @@
+package rba.tool.editor.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+
+import com.google.inject.Module;
+
+public class ExtensionModuleManager {
+ public static final ExtensionModuleManager INSTANCE = new ExtensionModuleManager();
+
+ private static final String EXTENSION_POINT = "rba.tool.editor.rbaToolEditorExtensionModule"; //$NON-NLS-1$
+
+ private static final String EXTENSION_POINT_ELEMENT = "extensionModule"; //$NON-NLS-1$
+
+ private static final String EXTENSION_POINT_ELEMENT_ATTRIBUTE = "class"; //$NON-NLS-1$
+
+ private List<Module> constraintProviders;
+
+ private ExtensionModuleManager() {
+ }
+
+ public List<Module> getExtensionModules() {
+ if (constraintProviders == null) {
+ constraintProviders = new ArrayList<Module>();
+ init();
+ }
+ return constraintProviders;
+ }
+
+ private void init() {
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ IExtensionPoint extensionPoint = registry.getExtensionPoint(EXTENSION_POINT); // $NON-NLS-1$
+ IExtension[] extensions = extensionPoint.getExtensions();
+
+ List<Module> providerList = new ArrayList<Module>();
+ for (int i = 0; i < extensions.length; i++) {
+ IConfigurationElement[] elements = extensions[i].getConfigurationElements();
+ for (int j = 0; j < elements.length; j++) {
+ IConfigurationElement element = elements[j];
+ String elementName = element.getName();
+ if (elementName.equalsIgnoreCase(EXTENSION_POINT_ELEMENT)) { // $NON-NLS-1$
+ try {
+ Object provider = element.createExecutableExtension(EXTENSION_POINT_ELEMENT_ATTRIBUTE); // $NON-NLS-1$
+ if (provider instanceof Module) {
+ Module factory = (Module) provider;
+ providerList.add(factory);
+ }
+ } catch (CoreException e) {
+ // do nothing
+ }
+ }
+ }
+ }
+ constraintProviders.addAll(providerList);
+ }
+}
diff --git a/rba.tool.editor/src/rba/tool/editor/util/RBAModelEditorNameUtil.xtend b/rba.tool.editor/src/rba/tool/editor/util/RBAModelEditorNameUtil.xtend
new file mode 100644
index 0000000..e7b7321
--- /dev/null
+++ b/rba.tool.editor/src/rba/tool/editor/util/RBAModelEditorNameUtil.xtend
@@ -0,0 +1,11 @@
+package rba.tool.editor.util
+
+class RBAModelEditorNameUtil {
+ public static val MODEL_FOLDER_NAME = "model"
+ public static val BUILD_FOLDER_NAME = ".applied"
+ public static val BUILD_TEMP_FOLDER_NAME = "temp"
+ public static val TEMPLATE_FOLDER_NAME = "extension"
+
+ public static val MODEL_FILE_EXT = "rba"
+ public static val TEMPLATE_FILE_EXT = "ext"
+}
diff --git a/rba.tool.editor/src/rba/tool/editor/util/RBAModelEditorToolUtil.xtend b/rba.tool.editor/src/rba/tool/editor/util/RBAModelEditorToolUtil.xtend
new file mode 100644
index 0000000..1055423
--- /dev/null
+++ b/rba.tool.editor/src/rba/tool/editor/util/RBAModelEditorToolUtil.xtend
@@ -0,0 +1,40 @@
+package rba.tool.editor.util
+
+import java.util.Collection
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.ecore.EStructuralFeature
+import org.eclipse.emf.ecore.EValidator
+import rba.core.AbstractAllocatable
+import rba.core.AbstractContent
+import rba.core.Expression
+import rba.core.RBACorePackage
+
+class RBAModelEditorToolUtil {
+
+ def public static String getExpressionText(Expression expression) {
+ return if (expression !== null) expression.getExpressionText() else "[Invalid_Expression]";
+ }
+
+ def public static boolean isSkippedSyntax(EObject obj, EStructuralFeature feature) {
+ // AbstractAllocatable -> contents
+ if (obj instanceof AbstractAllocatable && feature == RBACorePackage.Literals.ABSTRACT_ALLOCATABLE__CONTENTS) {
+ return true;
+ }
+ // AbstractAllocatable -> group
+ if (obj instanceof AbstractAllocatable && feature == RBACorePackage.Literals.ABSTRACT_ALLOCATABLE__ALLOCATABLE_GROUP) {
+ return true;
+ }
+ // AbstractContent -> group
+ if (obj instanceof AbstractContent && feature == RBACorePackage.Literals.ABSTRACT_CONTENT__CONTENT_GROUP) {
+ return true;
+ }
+ return false;
+ }
+
+ def public static boolean isValidated(Object context, EValidator validator) {
+ if (context instanceof Collection<?>) {
+ return (context as Collection<?>).contains(validator);
+ }
+ return false;
+ }
+}