aboutsummaryrefslogtreecommitdiffstats
path: root/rba.tool.editor/src/rba/tool/editor/scoping/internal/RBAModelMemberFieldScopes.xtend
blob: a2c9b6f9448ccdf74a5e10f3a39ab6f956760a09 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package rba.tool.editor.scoping.internal

import org.eclipse.emf.ecore.EObject
import org.eclipse.xtext.EcoreUtil2
import org.eclipse.xtext.scoping.IScope
import org.eclipse.xtext.scoping.Scopes
import rba.core.AbstractProperty
import rba.core.Content
import rba.core.ContentState
import rba.core.Scene
import rba.core.State
import rba.tool.editor.scoping.IExpressionScope

class RBAModelMemberFieldScopes implements IMemberFeatureScopes {

	override createFeatureScope(EObject model) {
		createFeatureScope(model, IExpressionScope.Anchor.UNKNOWN, IScope.NULLSCOPE);
	}

	override createFeatureScope(EObject model, IExpressionScope.Anchor anchor, IScope outer) {
		if (model instanceof Scene) {
			return Scopes.scopeFor(EcoreUtil2.getAllContentsOfType(model, AbstractProperty), outer);
		} else if (model instanceof Content) {
			return Scopes.scopeFor(EcoreUtil2.getAllContentsOfType(model, ContentState), outer);
		} else if (model instanceof State) {
			return Scopes.scopeFor(EcoreUtil2.getAllContentsOfType(model, State), outer);
		} else {
			return outer;
		}
	}
}