Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (c) 2009 itemis AG (http://www.itemis.eu) and others. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html /
  
  package org.eclipse.xtext.ui.editor.syntaxcoloring;
  
 
 import  org.eclipse.jface.text.TextAttribute;
 import  org.eclipse.jface.util.IPropertyChangeListener;
 import  org.eclipse.jface.util.PropertyChangeEvent;
 import  org.eclipse.swt.graphics.Color;
 import  org.eclipse.swt.graphics.Font;
 import  org.eclipse.swt.widgets.Display;
 

Author(s):
Sebastian Zarnekow - Initial contribution and API
 
 		IPropertyChangeListener {
 
 	private final HashMap<String, TextAttribute> attributes;
 
 	public TextAttributeProvider(IHighlightingConfiguration highlightingConfig,
 			IPreferenceStoreAccess preferenceStoreAccessPreferenceStoreAccessor prefStoreAccessor) {
 		this. = highlightingConfig;
 		this. = prefStoreAccessor;
 		this. = new HashMap<String, TextAttribute>();
 		preferenceStoreAccess.getPreferenceStore().addPropertyChangeListener(this);
 	}
 
 	private void initialize() {
 		if (Display.getCurrent() == null) {
 			Display display = SWTUtil.getStandardDisplay();
 			if (display != null) {
 				display.asyncExec(new Runnable() {
 					public void run() {
 						.clear();
 					}
 				});
 			}
 		} else {
 			.clear();
 		}
 	}
 
 	public TextAttribute getAttribute(String id) {
 		return .get(id);
 	}
 
 	public TextAttribute getMergedAttributes(String[] ids) {
 		if (ids.length < 2)
 			throw new IllegalStateException();
 		String mergedIds = getMergedIds(ids);
 		TextAttribute result = getAttribute(mergedIds);
 		if (result == null) {
 			for (String id : ids) {
 				result = merge(resultgetAttribute(id));
 			}
 			if (result != null)
 				.put(mergedIdsresult);
 			else
 				.remove(mergedIds);
 		}
 		return result;
 	}
 
 	private TextAttribute merge(TextAttribute first, TextAttribute second) {
 		if (first == null)
 			return second;
 		if (second == null)
 			return first;
 		int style = first.getStyle() | second.getStyle();
 		Color fgColor = second.getForeground();
		if (fgColor == null)
			fgColor = first.getForeground();
		Color bgColor = second.getBackground();
		if (bgColor == null)
			bgColor = first.getBackground();
		Font font = second.getFont();
		if (font == null)
			font = first.getFont();
		return new TextAttribute(fgColorbgColorstylefont);
	}
	public String getMergedIds(String[] ids) {
		return "$$$Merged:" + Strings.concat("/", Arrays.asList(ids)) + "$$$";
	}
	public void propertyChange(PropertyChangeEvent event) {
		if (event.getProperty().startsWith(PreferenceStoreAccessor.tokenTypeTag())) {
		}
	}
	public void acceptDefaultHighlighting(String idString nameTextStyle style) {
		if (this..put(idcreateTextAttribute(idstyle)) != null)
			throw new IllegalStateException("Id '" + id + "' has been used twice.");
	}
	protected TextAttribute createTextAttribute(String idTextStyle defaultTextStyle) {
		TextStyle textStyle = new TextStyle();
		.populateTextStyle(idtextStyledefaultTextStyle);
		int style = textStyle.getStyle();
		Font fontFromFontData = EditorUtils.fontFromFontData(textStyle.getFontData());
		return new TextAttribute(EditorUtils.colorFromRGB(textStyle.getColor()), EditorUtils.colorFromRGB(textStyle
				.getBackgroundColor()), stylefontFromFontData);
	}
New to GrepCode? Check out our FAQ X