diff options
Diffstat (limited to 'subprojects/language-ide/src/main')
5 files changed, 84 insertions, 15 deletions
diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/ProblemIdeModule.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/ProblemIdeModule.java index 51cecf06..fb620065 100644 --- a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/ProblemIdeModule.java +++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/ProblemIdeModule.java | |||
@@ -5,16 +5,28 @@ package tools.refinery.language.ide; | |||
5 | 5 | ||
6 | import org.eclipse.xtext.ide.editor.contentassist.IPrefixMatcher; | 6 | import org.eclipse.xtext.ide.editor.contentassist.IPrefixMatcher; |
7 | import org.eclipse.xtext.ide.editor.contentassist.IdeCrossrefProposalProvider; | 7 | import org.eclipse.xtext.ide.editor.contentassist.IdeCrossrefProposalProvider; |
8 | import org.eclipse.xtext.ide.editor.contentassist.antlr.IContentAssistParser; | ||
9 | import org.eclipse.xtext.ide.editor.partialEditing.IPartialEditingContentAssistParser; | ||
8 | import org.eclipse.xtext.ide.editor.syntaxcoloring.ISemanticHighlightingCalculator; | 10 | import org.eclipse.xtext.ide.editor.syntaxcoloring.ISemanticHighlightingCalculator; |
9 | |||
10 | import tools.refinery.language.ide.contentassist.FuzzyMatcher; | 11 | import tools.refinery.language.ide.contentassist.FuzzyMatcher; |
11 | import tools.refinery.language.ide.contentassist.ProblemCrossrefProposalProvider; | 12 | import tools.refinery.language.ide.contentassist.ProblemCrossrefProposalProvider; |
13 | import tools.refinery.language.ide.contentassist.TokenSourceInjectingPartialProblemContentAssistParser; | ||
14 | import tools.refinery.language.ide.contentassist.TokenSourceInjectingProblemParser; | ||
12 | import tools.refinery.language.ide.syntaxcoloring.ProblemSemanticHighlightingCalculator; | 15 | import tools.refinery.language.ide.syntaxcoloring.ProblemSemanticHighlightingCalculator; |
13 | 16 | ||
14 | /** | 17 | /** |
15 | * Use this class to register ide components. | 18 | * Use this class to register ide components. |
16 | */ | 19 | */ |
17 | public class ProblemIdeModule extends AbstractProblemIdeModule { | 20 | public class ProblemIdeModule extends AbstractProblemIdeModule { |
21 | @Override | ||
22 | public Class<? extends IContentAssistParser> bindIContentAssistParser() { | ||
23 | return TokenSourceInjectingProblemParser.class; | ||
24 | } | ||
25 | |||
26 | public Class<? extends IPartialEditingContentAssistParser> bindIPartialEditingContentAssistParser() { | ||
27 | return TokenSourceInjectingPartialProblemContentAssistParser.class; | ||
28 | } | ||
29 | |||
18 | public Class<? extends ISemanticHighlightingCalculator> bindISemanticHighlightingCalculator() { | 30 | public Class<? extends ISemanticHighlightingCalculator> bindISemanticHighlightingCalculator() { |
19 | return ProblemSemanticHighlightingCalculator.class; | 31 | return ProblemSemanticHighlightingCalculator.class; |
20 | } | 32 | } |
diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingPartialProblemContentAssistParser.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingPartialProblemContentAssistParser.java new file mode 100644 index 00000000..3ece6f67 --- /dev/null +++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingPartialProblemContentAssistParser.java | |||
@@ -0,0 +1,23 @@ | |||
1 | package tools.refinery.language.ide.contentassist; | ||
2 | |||
3 | import com.google.inject.Inject; | ||
4 | import com.google.inject.Injector; | ||
5 | import org.antlr.runtime.CharStream; | ||
6 | import org.antlr.runtime.TokenSource; | ||
7 | import tools.refinery.language.ide.contentassist.antlr.PartialProblemContentAssistParser; | ||
8 | |||
9 | /** | ||
10 | * Code is duplicated from {@link tools.refinery.language.parser.antlr.TokenSourceInjectingProblemParser} due to | ||
11 | * Xtext code generation. | ||
12 | */ | ||
13 | public class TokenSourceInjectingPartialProblemContentAssistParser extends PartialProblemContentAssistParser { | ||
14 | @Inject | ||
15 | private Injector injector; | ||
16 | |||
17 | @Override | ||
18 | protected TokenSource createLexer(CharStream stream) { | ||
19 | var tokenSource = super.createLexer(stream); | ||
20 | injector.injectMembers(tokenSource); | ||
21 | return tokenSource; | ||
22 | } | ||
23 | } | ||
diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingProblemParser.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingProblemParser.java new file mode 100644 index 00000000..80dfee5c --- /dev/null +++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/TokenSourceInjectingProblemParser.java | |||
@@ -0,0 +1,23 @@ | |||
1 | package tools.refinery.language.ide.contentassist; | ||
2 | |||
3 | import com.google.inject.Inject; | ||
4 | import com.google.inject.Injector; | ||
5 | import org.antlr.runtime.CharStream; | ||
6 | import org.antlr.runtime.TokenSource; | ||
7 | import tools.refinery.language.ide.contentassist.antlr.ProblemParser; | ||
8 | |||
9 | /** | ||
10 | * Code is duplicated from {@link tools.refinery.language.parser.antlr.TokenSourceInjectingProblemParser} due to | ||
11 | * Xtext code generation. | ||
12 | */ | ||
13 | public class TokenSourceInjectingProblemParser extends ProblemParser { | ||
14 | @Inject | ||
15 | private Injector injector; | ||
16 | |||
17 | @Override | ||
18 | protected TokenSource createLexer(CharStream stream) { | ||
19 | var tokenSource = super.createLexer(stream); | ||
20 | injector.injectMembers(tokenSource); | ||
21 | return tokenSource; | ||
22 | } | ||
23 | } | ||
diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/antlr/ProblemTokenSource.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/antlr/ProblemTokenSource.java new file mode 100644 index 00000000..c6c7f41f --- /dev/null +++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/antlr/ProblemTokenSource.java | |||
@@ -0,0 +1,19 @@ | |||
1 | /* | ||
2 | * generated by Xtext 2.29.0.M2 | ||
3 | */ | ||
4 | package tools.refinery.language.ide.contentassist.antlr; | ||
5 | |||
6 | import org.antlr.runtime.TokenSource; | ||
7 | |||
8 | /** | ||
9 | * Duplicates the logic from {@link tools.refinery.language.parser.antlr.ProblemTokenSource} to satisfy the Xtext | ||
10 | * generator. | ||
11 | * <p> | ||
12 | * Naming this class <code>ProblemTokenSource</code> is required by Xtext, so we have to silence the naming warning. | ||
13 | */ | ||
14 | @SuppressWarnings("squid:S2176") | ||
15 | public class ProblemTokenSource extends tools.refinery.language.parser.antlr.ProblemTokenSource { | ||
16 | public ProblemTokenSource(TokenSource delegate) { | ||
17 | super(delegate); | ||
18 | } | ||
19 | } | ||
diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java index 6a05005d..7703e4e3 100644 --- a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java +++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java | |||
@@ -1,7 +1,7 @@ | |||
1 | package tools.refinery.language.ide.syntaxcoloring; | 1 | package tools.refinery.language.ide.syntaxcoloring; |
2 | 2 | ||
3 | import java.util.List; | 3 | import com.google.common.collect.ImmutableList; |
4 | 4 | import com.google.inject.Inject; | |
5 | import org.eclipse.emf.common.util.EList; | 5 | import org.eclipse.emf.common.util.EList; |
6 | import org.eclipse.emf.ecore.EObject; | 6 | import org.eclipse.emf.ecore.EObject; |
7 | import org.eclipse.emf.ecore.EReference; | 7 | import org.eclipse.emf.ecore.EReference; |
@@ -11,20 +11,12 @@ import org.eclipse.xtext.nodemodel.INode; | |||
11 | import org.eclipse.xtext.nodemodel.util.NodeModelUtils; | 11 | import org.eclipse.xtext.nodemodel.util.NodeModelUtils; |
12 | import org.eclipse.xtext.service.OperationCanceledManager; | 12 | import org.eclipse.xtext.service.OperationCanceledManager; |
13 | import org.eclipse.xtext.util.CancelIndicator; | 13 | import org.eclipse.xtext.util.CancelIndicator; |
14 | 14 | import tools.refinery.language.model.problem.*; | |
15 | import com.google.common.collect.ImmutableList; | ||
16 | import com.google.inject.Inject; | ||
17 | |||
18 | import tools.refinery.language.model.problem.ClassDeclaration; | ||
19 | import tools.refinery.language.model.problem.NamedElement; | ||
20 | import tools.refinery.language.model.problem.Node; | ||
21 | import tools.refinery.language.model.problem.PredicateDefinition; | ||
22 | import tools.refinery.language.model.problem.PredicateKind; | ||
23 | import tools.refinery.language.model.problem.ProblemPackage; | ||
24 | import tools.refinery.language.model.problem.ReferenceDeclaration; | ||
25 | import tools.refinery.language.utils.ProblemDesugarer; | 15 | import tools.refinery.language.utils.ProblemDesugarer; |
26 | import tools.refinery.language.utils.ProblemUtil; | 16 | import tools.refinery.language.utils.ProblemUtil; |
27 | 17 | ||
18 | import java.util.List; | ||
19 | |||
28 | public class ProblemSemanticHighlightingCalculator extends DefaultSemanticHighlightingCalculator { | 20 | public class ProblemSemanticHighlightingCalculator extends DefaultSemanticHighlightingCalculator { |
29 | private static final String BUILTIN_CLASS = "builtin"; | 21 | private static final String BUILTIN_CLASS = "builtin"; |
30 | private static final String ABSTRACT_CLASS = "abstract"; | 22 | private static final String ABSTRACT_CLASS = "abstract"; |
@@ -113,7 +105,7 @@ public class ProblemSemanticHighlightingCalculator extends DefaultSemanticHighli | |||
113 | classesBuilder.add(ERROR_CLASS); | 105 | classesBuilder.add(ERROR_CLASS); |
114 | } | 106 | } |
115 | if (eObject instanceof Node node) { | 107 | if (eObject instanceof Node node) { |
116 | if (reference == ProblemPackage.Literals.VARIABLE_OR_NODE_ARGUMENT__VARIABLE_OR_NODE) { | 108 | if (reference == ProblemPackage.Literals.VARIABLE_OR_NODE_EXPR__VARIABLE_OR_NODE) { |
117 | classesBuilder.add(NODE_CLASS); | 109 | classesBuilder.add(NODE_CLASS); |
118 | } | 110 | } |
119 | if (ProblemUtil.isIndividualNode(node)) { | 111 | if (ProblemUtil.isIndividualNode(node)) { |