diff options
Diffstat (limited to 'language/src/main/java/org/eclipse/viatra/solver/language/resource/ProblemLocationInFileProvider.java')
-rw-r--r-- | language/src/main/java/org/eclipse/viatra/solver/language/resource/ProblemLocationInFileProvider.java | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/language/src/main/java/org/eclipse/viatra/solver/language/resource/ProblemLocationInFileProvider.java b/language/src/main/java/org/eclipse/viatra/solver/language/resource/ProblemLocationInFileProvider.java new file mode 100644 index 00000000..94dbdfee --- /dev/null +++ b/language/src/main/java/org/eclipse/viatra/solver/language/resource/ProblemLocationInFileProvider.java | |||
@@ -0,0 +1,32 @@ | |||
1 | package org.eclipse.viatra.solver.language.resource; | ||
2 | |||
3 | import org.eclipse.emf.ecore.EObject; | ||
4 | import org.eclipse.viatra.solver.language.ProblemUtil; | ||
5 | import org.eclipse.viatra.solver.language.model.problem.ImplicitVariable; | ||
6 | import org.eclipse.viatra.solver.language.model.problem.Node; | ||
7 | import org.eclipse.xtext.resource.DefaultLocationInFileProvider; | ||
8 | import org.eclipse.xtext.util.ITextRegion; | ||
9 | |||
10 | public class ProblemLocationInFileProvider extends DefaultLocationInFileProvider { | ||
11 | @Override | ||
12 | protected ITextRegion doGetTextRegion(EObject obj, RegionDescription query) { | ||
13 | if (obj instanceof Node) { | ||
14 | return getNodeTextRegion((Node) obj, query); | ||
15 | } | ||
16 | if (obj instanceof ImplicitVariable) { | ||
17 | return ITextRegion.EMPTY_REGION; | ||
18 | } | ||
19 | return super.doGetTextRegion(obj, query); | ||
20 | } | ||
21 | |||
22 | protected ITextRegion getNodeTextRegion(Node node, RegionDescription query) { | ||
23 | if (ProblemUtil.isEnumLiteral(node)) { | ||
24 | return super.doGetTextRegion(node, query); | ||
25 | } | ||
26 | if (ProblemUtil.isNewNode(node)) { | ||
27 | EObject container = node.eContainer(); | ||
28 | return doGetTextRegion(container, query); | ||
29 | } | ||
30 | return ITextRegion.EMPTY_REGION; | ||
31 | } | ||
32 | } | ||