/** * Copyright (c) 2011 Cloudsmith, Inc. 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 * * Contributors: * Cloudsmith * */ package org.cloudsmith.geppetto.pp.dsl.ui.coloring; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.graphics.RGB; import org.eclipse.xtext.ui.editor.syntaxcoloring.DefaultHighlightingConfiguration; import org.eclipse.xtext.ui.editor.syntaxcoloring.IHighlightingConfigurationAcceptor; import org.eclipse.xtext.ui.editor.utils.TextStyle; public class PPHighlightConfiguration extends DefaultHighlightingConfiguration { public static final String TEXT_ID = "text"; public static final String TEMPLATE_TEXT_ID = "template"; public static final String DOCUMENTATION_ID = "documentation"; public static final String DOC_FIXED_ID = "doc_fixed"; public static final String DOC_BOLD_ID = "doc_bold"; public static final String DOC_ITALIC_ID = "doc_italic"; public static final String DOC_PLAIN_ID = "doc_plain"; public static final String DOC_HEADING1_ID = "doc_h1"; public static final String DOC_HEADING2_ID = "doc_h2"; public static final String DOC_HEADING3_ID = "doc_h3"; public static final String DOC_HEADING4_ID = "doc_h4"; public static final String DOC_HEADING5_ID = "doc_h5"; public static final String REGEXP_ID = "regexp"; public static final String LITERAL_KW_ID = "literalkw"; public static final String NULL_ID = "null"; public static final String VERSION_ID = "version"; public static final String PATH_ID = "path"; public static final String REAL_ID = "real"; public static final String PROPERTY_ID = "property"; public static final String VARIABLE_ID = "variable"; public static final String SPECIAL_SPACE_ID = "spaces"; public static final String RESOURCE_REF_ID = "resourceRef"; public static final String RESOURCE_TITLE_ID = "resourceTitle"; public static final String TASK_ID = "task"; @Override public void configure(IHighlightingConfigurationAcceptor acceptor) { super.configure(acceptor); acceptor.acceptDefaultHighlighting(TEMPLATE_TEXT_ID, "String - Double Quoted", templateTextStyle()); // acceptor.acceptDefaultHighlighting(TEXT_ID, "Text", docTextStyle()); acceptor.acceptDefaultHighlighting(DOCUMENTATION_ID, "Documentation", documentationStyle()); acceptor.acceptDefaultHighlighting(DOC_HEADING1_ID, "Doc H1", documentationH1Style()); acceptor.acceptDefaultHighlighting(DOC_HEADING2_ID, "Doc H2", documentationH2Style()); acceptor.acceptDefaultHighlighting(DOC_HEADING3_ID, "Doc H3", documentationH3Style()); acceptor.acceptDefaultHighlighting(DOC_HEADING4_ID, "Doc H4", documentationH4Style()); acceptor.acceptDefaultHighlighting(DOC_HEADING5_ID, "Doc H5", documentationH5Style()); acceptor.acceptDefaultHighlighting(DOC_PLAIN_ID, "Doc plain", documentationPlainStyle()); acceptor.acceptDefaultHighlighting(DOC_BOLD_ID, "Doc bold", documentationBoldStyle()); acceptor.acceptDefaultHighlighting(DOC_FIXED_ID, "Doc code", documentationFixedStyle()); acceptor.acceptDefaultHighlighting(DOC_ITALIC_ID, "Doc italic", documentationItalicStyle()); acceptor.acceptDefaultHighlighting(REGEXP_ID, "Regular Expression", regexpTextStyle()); acceptor.acceptDefaultHighlighting(LITERAL_KW_ID, "Literal Keywords", italicKeywordLightStyle()); // acceptor.acceptDefaultHighlighting(NULL_ID, "Null Literal", nullTextStyle()); // acceptor.acceptDefaultHighlighting(PROPERTY_ID, "Properties", propertyTextStyle()); acceptor.acceptDefaultHighlighting(SPECIAL_SPACE_ID, "Special Spaces", specialSpaceTextStyle()); // from semantic // acceptor.acceptDefaultHighlighting(VERSION_ID, "Version", versionTextStyle()); // acceptor.acceptDefaultHighlighting(PATH_ID, "Path", pathTextStyle()); // acceptor.acceptDefaultHighlighting(REAL_ID, "Floating point", realTextStyle()); acceptor.acceptDefaultHighlighting(VARIABLE_ID, "Variable", variableTextStyle()); acceptor.acceptDefaultHighlighting(RESOURCE_REF_ID, "Resource Reference", resourceRefTextStyle()); acceptor.acceptDefaultHighlighting(RESOURCE_TITLE_ID, "Resource Title", resourceTitleTextStyle()); acceptor.acceptDefaultHighlighting(TASK_ID, "Tasks", taskTextStyle()); } public TextStyle documentationBoldStyle() { TextStyle textStyle = documentationPlainStyle().copy(); // // textStyle.getFontData()[0].setHeight(12); // // Font f = new Font(Display.getCurrent(), "Arial", 12, SWT.BOLD); // // textStyle.setFontData(f.getFontData()); // // changeHeight(textStyle, 12); // // modifyFontData(textStyle, 12, SWT.BOLD); // textStyle.setStyle(SWT.BOLD); return textStyle; } public TextStyle documentationFixedStyle() { TextStyle textStyle = documentationStyle().copy(); // Font f = new Font(Display.getCurrent(), "Courier", 11, SWT.NONE); // textStyle.setFontData(f.getFontData()); // f.dispose(); return textStyle; } public TextStyle documentationH1Style() { TextStyle textStyle = documentationPlainStyle().copy(); // Font f = new Font(Display.getCurrent(), "Arial", 22, SWT.BOLD); // textStyle.setFontData(f.getFontData()); // f.dispose(); // textStyle.setColor(new RGB(63, 95, 191)); // // Font f = new Font(Display.getCurrent(), "Arial", 22, SWT.BOLD); // // textStyle.setFontData(f.getFontData()); return textStyle; } public TextStyle documentationH2Style() { TextStyle textStyle = documentationH1Style().copy(); // // Font f = new Font(Display.getCurrent(), "Arial", 20, SWT.BOLD); // // textStyle.setFontData(f.getFontData()); // modifyFontData(textStyle, 20, SWT.BOLD); return textStyle; } public TextStyle documentationH3Style() { TextStyle textStyle = documentationH1Style().copy(); // // Font f = new Font(Display.getCurrent(), "Arial", 18, SWT.BOLD); // // textStyle.setFontData(f.getFontData()); // modifyFontData(textStyle, 18, SWT.BOLD); return textStyle; } public TextStyle documentationH4Style() { TextStyle textStyle = documentationH1Style().copy(); // // Font f = new Font(Display.getCurrent(), "Arial", 16, SWT.BOLD); // // textStyle.setFontData(f.getFontData()); // modifyFontData(textStyle, 16, SWT.BOLD); return textStyle; } public TextStyle documentationH5Style() { TextStyle textStyle = documentationH1Style().copy(); // // Font f = new Font(Display.getCurrent(), "Arial", 14, SWT.BOLD); // // textStyle.setFontData(f.getFontData()); // modifyFontData(textStyle, 14, SWT.BOLD); return textStyle; } public TextStyle documentationItalicStyle() { TextStyle textStyle = documentationPlainStyle().copy(); // // Font f = new Font(Display.getCurrent(), "Arial", 12, SWT.ITALIC); // // textStyle.setFontData(f.getFontData()); // // modifyFontData(textStyle, 12, SWT.ITALIC); // textStyle.setStyle(SWT.ITALIC); return textStyle; } public TextStyle documentationPlainStyle() { TextStyle textStyle = documentationStyle().copy(); // Font f = new Font(Display.getCurrent(), "Arial", 12, SWT.NONE); // textStyle.setFontData(f.getFontData()); // modifyFontData(textStyle, 12, SWT.NORMAL); // f.dispose(); // textStyle.setColor(new RGB(63, 95, 191)); return textStyle; } public TextStyle documentationStyle() { TextStyle textStyle = defaultTextStyle().copy(); textStyle.setColor(new RGB(63, 95, 191)); return textStyle; } public TextStyle italicKeywordLightStyle() { TextStyle textStyle = defaultTextStyle().copy(); textStyle.setColor(new RGB(127, 0, 85)); textStyle.setStyle(SWT.ITALIC); return textStyle; } protected void modifyFontData(TextStyle textStyle, int height, int style) { FontData fd = textStyle.getFontData()[0]; fd.setHeight(height); fd.setStyle(style); textStyle.setFontData(fd); } public TextStyle pathTextStyle() { TextStyle textStyle = defaultTextStyle().copy(); textStyle.setColor(new RGB(63, 95, 191)); textStyle.setStyle(SWT.ITALIC); return textStyle; } public TextStyle propertyTextStyle() { TextStyle textStyle = defaultTextStyle().copy(); textStyle.setColor(new RGB(0x99, 0x33, 0x00)); // Brownish return textStyle; } public TextStyle realTextStyle() { TextStyle textStyle = defaultTextStyle().copy(); textStyle.setColor(new RGB(125, 125, 125)); return textStyle; } public TextStyle regexpTextStyle() { TextStyle textStyle = defaultTextStyle().copy(); textStyle.setColor(new RGB(0, 0, 192)); textStyle.setStyle(SWT.BOLD); return textStyle; } public TextStyle resourceRefTextStyle() { TextStyle textStyle = defaultTextStyle().copy(); textStyle.setColor(new RGB(128, 0, 0)); // cayenne brown return textStyle; } public TextStyle resourceTitleTextStyle() { TextStyle textStyle = new TextStyle(); textStyle.setStyle(SWT.ITALIC); return textStyle; } public TextStyle specialSpaceTextStyle() { TextStyle textStyle = defaultTextStyle().copy(); // Affects what is behind the text and WS textStyle.setBackgroundColor(new RGB(255, 204, 102)); // light orange return textStyle; } public TextStyle taskTextStyle() { TextStyle textStyle = defaultTextStyle().copy(); textStyle.setColor(new RGB(68, 68, 68)); textStyle.setStyle(SWT.BOLD); return textStyle; } public TextStyle templateTextStyle() { TextStyle textStyle = stringTextStyle().copy(); // textStyle.setColor(new RGB(63, 95, 191)); // Affects what is behind the text and WS - important since this is a verbatim style // and whitespace counts. // textStyle.setBackgroundColor(new RGB(252, 255, 240)); // titanium white // textStyle.setBackgroundColor(new RGB(231, 255, 232)); // pale green // textStyle.setStyle(SWT.ITALIC); return textStyle; } public TextStyle variableTextStyle() { TextStyle textStyle = defaultTextStyle().copy(); return textStyle; } }