aboutsummaryrefslogtreecommitdiffstats
path: root/Application/org.eclipse.viatra.solver.language.ui/src/org/eclipse/viatra/solver/language/ui/syntaxcoloring/SolverSemanticTextAttributeProvider.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'Application/org.eclipse.viatra.solver.language.ui/src/org/eclipse/viatra/solver/language/ui/syntaxcoloring/SolverSemanticTextAttributeProvider.xtend')
-rw-r--r--Application/org.eclipse.viatra.solver.language.ui/src/org/eclipse/viatra/solver/language/ui/syntaxcoloring/SolverSemanticTextAttributeProvider.xtend55
1 files changed, 55 insertions, 0 deletions
diff --git a/Application/org.eclipse.viatra.solver.language.ui/src/org/eclipse/viatra/solver/language/ui/syntaxcoloring/SolverSemanticTextAttributeProvider.xtend b/Application/org.eclipse.viatra.solver.language.ui/src/org/eclipse/viatra/solver/language/ui/syntaxcoloring/SolverSemanticTextAttributeProvider.xtend
new file mode 100644
index 00000000..ca74a9a2
--- /dev/null
+++ b/Application/org.eclipse.viatra.solver.language.ui/src/org/eclipse/viatra/solver/language/ui/syntaxcoloring/SolverSemanticTextAttributeProvider.xtend
@@ -0,0 +1,55 @@
1package org.eclipse.viatra.solver.language.ui.syntaxcoloring
2
3import com.google.inject.Inject
4import java.util.WeakHashMap
5import org.eclipse.jface.text.TextAttribute
6import org.eclipse.swt.graphics.RGB
7import org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreAccess
8import org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightingConfiguration
9import org.eclipse.xtext.ui.editor.syntaxcoloring.PreferenceStoreAccessor
10import org.eclipse.xtext.ui.editor.syntaxcoloring.TextAttributeProvider
11import org.eclipse.xtext.ui.editor.utils.EditorUtils
12import org.eclipse.xtext.ui.editor.utils.TextStyle
13
14class SolverSemanticTextAttributeProvider extends TextAttributeProvider {
15
16 val defaultTextStyle = new TextStyle
17 val colorID2TextAttribute = new WeakHashMap<String, TextAttribute>
18
19 @Inject
20 new(IHighlightingConfiguration highlightingConfig, IPreferenceStoreAccess preferenceStoreAccess,
21 PreferenceStoreAccessor prefStoreAccessor) {
22 super(highlightingConfig, preferenceStoreAccess, prefStoreAccessor)
23 }
24
25 override getAttribute(String id) {
26 if (isMetamodelElementColorID(id)) {
27 if (colorID2TextAttribute.containsKey(id)) {
28 return colorID2TextAttribute.get(id)
29 } else {
30 val style = metamodelElementTextStyle(id)
31 colorID2TextAttribute.put(id, style)
32 return style
33 }
34 } else {
35 super.getAttribute(id)
36 }
37 }
38
39 private def isMetamodelElementColorID(String id) {
40 id.startsWith(SolverSemanticHighlightCalculator.SYMBOL_CODE)
41 }
42
43 private def TextAttribute metamodelElementTextStyle(String id) {
44 val texts = id.split(' ')
45 val backgroundColor = new RGB(
46 Float.parseFloat(texts.get(1)),
47 Float.parseFloat(texts.get(2)),
48 Float.parseFloat(texts.get(3))
49 )
50 return new TextAttribute(EditorUtils.colorFromRGB(defaultTextStyle.color),
51 EditorUtils.colorFromRGB(backgroundColor), defaultTextStyle.style,
52 EditorUtils.fontFromFontData(defaultTextStyle.getFontData()));
53 }
54
55}