summaryrefslogtreecommitdiffstats
path: root/rba.tool.editor/src/rba/tool/editor/naming/RBAModelSimpleNameProvider.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'rba.tool.editor/src/rba/tool/editor/naming/RBAModelSimpleNameProvider.xtend')
-rw-r--r--rba.tool.editor/src/rba/tool/editor/naming/RBAModelSimpleNameProvider.xtend62
1 files changed, 62 insertions, 0 deletions
diff --git a/rba.tool.editor/src/rba/tool/editor/naming/RBAModelSimpleNameProvider.xtend b/rba.tool.editor/src/rba/tool/editor/naming/RBAModelSimpleNameProvider.xtend
new file mode 100644
index 0000000..325d4d5
--- /dev/null
+++ b/rba.tool.editor/src/rba/tool/editor/naming/RBAModelSimpleNameProvider.xtend
@@ -0,0 +1,62 @@
+package rba.tool.editor.naming
+
+import com.google.inject.Inject
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.xtext.naming.IQualifiedNameConverter
+import org.eclipse.xtext.naming.IQualifiedNameProvider
+import org.eclipse.xtext.naming.QualifiedName
+import org.eclipse.xtext.util.SimpleAttributeResolver
+import rba.core.AbstractProperty
+import rba.core.ContentState
+import rba.core.Package
+import rba.core.State
+import rba.view.Size
+
+class RBAModelSimpleNameProvider extends IQualifiedNameProvider.AbstractImpl {
+
+ @Inject private IQualifiedNameConverter qualifiedNameConverter
+
+ override getFullyQualifiedName(EObject obj) {
+ val String name = SimpleAttributeResolver.NAME_RESOLVER.apply(obj);
+ if (name === null || name.length() === 0)
+ return null;
+ val QualifiedName qualifiedName = qualifiedNameConverter.toQualifiedName(name);
+
+ if (obj instanceof ContentState || obj instanceof State) {
+ val EObject parent = obj.eContainer;
+ if (parent === null) {
+ return null;
+ }
+ val QualifiedName parentQualifiedName = getFullyQualifiedName(obj.eContainer);
+ if (parentQualifiedName === null || parentQualifiedName.empty) {
+ return null;
+ }
+ return parentQualifiedName.append(qualifiedName);
+ } else if (obj instanceof Size) {
+ val EObject parent = obj.eContainer;
+ if (parent === null) {
+ return null;
+ }
+ if (!(parent instanceof Package)) {
+ val QualifiedName parentQualifiedName = getFullyQualifiedName(obj.eContainer);
+ if (parentQualifiedName === null || parentQualifiedName.empty) {
+ return null;
+ }
+ return parentQualifiedName.append(qualifiedName);
+ }
+ } else if (obj instanceof AbstractProperty) {
+ val EObject parent = obj.eContainer;
+ if (parent === null) {
+ return null;
+ }
+ val QualifiedName parentQualifiedName = getFullyQualifiedName(obj.eContainer);
+ if (parentQualifiedName === null || parentQualifiedName.empty) {
+ return null;
+ }
+ return parentQualifiedName.append(qualifiedName);
+ }
+
+ return qualifiedName;
+ }
+
+}