aboutsummaryrefslogtreecommitdiffstats
path: root/Application/hu.bme.mit.inf.dslreasoner.application.ui/src/hu/bme/mit/inf/dslreasoner/application/ui/highlight/MetamodelElementColoringTextAttributeProvider.xtend
diff options
context:
space:
mode:
Diffstat (limited to 'Application/hu.bme.mit.inf.dslreasoner.application.ui/src/hu/bme/mit/inf/dslreasoner/application/ui/highlight/MetamodelElementColoringTextAttributeProvider.xtend')
-rw-r--r--Application/hu.bme.mit.inf.dslreasoner.application.ui/src/hu/bme/mit/inf/dslreasoner/application/ui/highlight/MetamodelElementColoringTextAttributeProvider.xtend56
1 files changed, 56 insertions, 0 deletions
diff --git a/Application/hu.bme.mit.inf.dslreasoner.application.ui/src/hu/bme/mit/inf/dslreasoner/application/ui/highlight/MetamodelElementColoringTextAttributeProvider.xtend b/Application/hu.bme.mit.inf.dslreasoner.application.ui/src/hu/bme/mit/inf/dslreasoner/application/ui/highlight/MetamodelElementColoringTextAttributeProvider.xtend
new file mode 100644
index 00000000..10b96d02
--- /dev/null
+++ b/Application/hu.bme.mit.inf.dslreasoner.application.ui/src/hu/bme/mit/inf/dslreasoner/application/ui/highlight/MetamodelElementColoringTextAttributeProvider.xtend
@@ -0,0 +1,56 @@
1package hu.bme.mit.inf.dslreasoner.application.ui.highlight
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.TextStyle
12import org.eclipse.xtext.ui.editor.utils.EditorUtils
13import org.eclipse.swt.SWT
14
15class MetamodelElementColoringTextAttributeProvider extends TextAttributeProvider{
16
17 val defaultTextStyle = new TextStyle
18 val colorID2TextAttribute = new WeakHashMap<String,TextAttribute>
19
20 @Inject
21 new(IHighlightingConfiguration highlightingConfig, IPreferenceStoreAccess preferenceStoreAccess, 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(ApplicationConfigurationSemanticHighlightingCalculator::MetamodelElementIDPrefix)
41 }
42
43 private def TextAttribute metamodelElementTextStyle(String id) {
44 val texts = id.split(' ')
45 val backgroundColor = new RGB(
46 Integer.parseInt(texts.get(1)),
47 Integer.parseInt(texts.get(2)),
48 Integer.parseInt(texts.get(3))
49 )
50 return new TextAttribute(
51 EditorUtils.colorFromRGB(defaultTextStyle.color),
52 EditorUtils.colorFromRGB(backgroundColor),
53 defaultTextStyle.style.bitwiseAnd(SWT.BORDER),
54 EditorUtils.fontFromFontData(defaultTextStyle.getFontData()));
55 }
56}