diff options
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.xtend | 62 |
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; + } + +} |