From 5cc9e724582ac4e302fad76d380c397ddeb27876 Mon Sep 17 00:00:00 2001 From: OszkarSemerath Date: Thu, 1 Feb 2018 14:28:01 +0100 Subject: Type coloring --- ...modelElementColoringTextAttributeProvider.xtend | 56 ++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Application/hu.bme.mit.inf.dslreasoner.application.ui/src/hu/bme/mit/inf/dslreasoner/application/ui/highlight/MetamodelElementColoringTextAttributeProvider.xtend (limited to 'Application/hu.bme.mit.inf.dslreasoner.application.ui/src/hu/bme/mit/inf/dslreasoner/application/ui/highlight/MetamodelElementColoringTextAttributeProvider.xtend') 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 @@ +package hu.bme.mit.inf.dslreasoner.application.ui.highlight + +import com.google.inject.Inject +import java.util.WeakHashMap +import org.eclipse.jface.text.TextAttribute +import org.eclipse.swt.graphics.RGB +import org.eclipse.xtext.ui.editor.preferences.IPreferenceStoreAccess +import org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightingConfiguration +import org.eclipse.xtext.ui.editor.syntaxcoloring.PreferenceStoreAccessor +import org.eclipse.xtext.ui.editor.syntaxcoloring.TextAttributeProvider +import org.eclipse.xtext.ui.editor.utils.TextStyle +import org.eclipse.xtext.ui.editor.utils.EditorUtils +import org.eclipse.swt.SWT + +class MetamodelElementColoringTextAttributeProvider extends TextAttributeProvider{ + + val defaultTextStyle = new TextStyle + val colorID2TextAttribute = new WeakHashMap + + @Inject + new(IHighlightingConfiguration highlightingConfig, IPreferenceStoreAccess preferenceStoreAccess, PreferenceStoreAccessor prefStoreAccessor) { + super(highlightingConfig, preferenceStoreAccess, prefStoreAccessor) + } + + override getAttribute(String id) { + if(isMetamodelElementColorID(id)) { + if(colorID2TextAttribute.containsKey(id)) { + return colorID2TextAttribute.get(id) + } else { + val style = metamodelElementTextStyle(id) + colorID2TextAttribute.put(id,style) + return style + } + } else { + super.getAttribute(id) + } + } + + private def isMetamodelElementColorID(String id) { + id.startsWith(ApplicationConfigurationSemanticHighlightingCalculator::MetamodelElementIDPrefix) + } + + private def TextAttribute metamodelElementTextStyle(String id) { + val texts = id.split(' ') + val backgroundColor = new RGB( + Integer.parseInt(texts.get(1)), + Integer.parseInt(texts.get(2)), + Integer.parseInt(texts.get(3)) + ) + return new TextAttribute( + EditorUtils.colorFromRGB(defaultTextStyle.color), + EditorUtils.colorFromRGB(backgroundColor), + defaultTextStyle.style.bitwiseAnd(SWT.BORDER), + EditorUtils.fontFromFontData(defaultTextStyle.getFontData())); + } +} -- cgit v1.2.3-70-g09d2