Skip to content
Snippets Groups Projects
Commit c5387333 authored by Andreas Bayha's avatar Andreas Bayha
Browse files

Merge branch '4299' into 'master'

4299: Add comment handling to source editor (for highlighting)

See merge request !203
parents de9712a6 d2102637
No related branches found
No related tags found
1 merge request!2034299: Add comment handling to source editor (for highlighting)
...@@ -2,6 +2,6 @@ AdvancedTreeViewerEditorBase.java 9d9eded6848ee78991d1416592d1136efd71d2b7 GREEN ...@@ -2,6 +2,6 @@ AdvancedTreeViewerEditorBase.java 9d9eded6848ee78991d1416592d1136efd71d2b7 GREEN
FormsEditorBase.java b113501b98ffffcac362ca9f474ad02a42bde186 GREEN FormsEditorBase.java b113501b98ffffcac362ca9f474ad02a42bde186 GREEN
GEFEditorBase.java e668f596f45f07215994cbbd3929a9438331718f GREEN GEFEditorBase.java e668f596f45f07215994cbbd3929a9438331718f GREEN
SourceEditorBase.java 47e69e2e6788b9897339c384cd03f9a22755037c GREEN SourceEditorBase.java 47e69e2e6788b9897339c384cd03f9a22755037c GREEN
SourceEditorConfigurationBase.java e8b810c0d974c475f0a8e6f21aa5b6fd9e17c33a GREEN SourceEditorConfigurationBase.java 67c674248e31d467937ed33e455c07587ad0b3b1 GREEN
SourceEditorUndoRedo.java 08127a8e0afb4f9c2f4c21294ca3220282c25bf0 GREEN SourceEditorUndoRedo.java 08127a8e0afb4f9c2f4c21294ca3220282c25bf0 GREEN
TreeViewerEditorBase.java 1c59689ff57c4f3cc180d85f13021fc03461ecb0 GREEN TreeViewerEditorBase.java 1c59689ff57c4f3cc180d85f13021fc03461ecb0 GREEN
/*-------------------------------------------------------------------------+ /*-------------------------------------------------------------------------+
| Copyright 2012 fortiss GmbH | | Copyright 2023 fortiss GmbH |
| | | |
| Licensed under the Apache License, Version 2.0 (the "License"); | | Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. | | you may not use this file except in compliance with the License. |
...@@ -19,6 +19,7 @@ import static java.lang.Character.isLetterOrDigit; ...@@ -19,6 +19,7 @@ import static java.lang.Character.isLetterOrDigit;
import static org.eclipse.jface.text.IDocument.DEFAULT_CONTENT_TYPE; import static org.eclipse.jface.text.IDocument.DEFAULT_CONTENT_TYPE;
import static org.eclipse.wb.swt.SWTResourceManager.getColor; import static org.eclipse.wb.swt.SWTResourceManager.getColor;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EObject;
...@@ -29,6 +30,7 @@ import org.eclipse.jface.text.rules.IRule; ...@@ -29,6 +30,7 @@ import org.eclipse.jface.text.rules.IRule;
import org.eclipse.jface.text.rules.IToken; import org.eclipse.jface.text.rules.IToken;
import org.eclipse.jface.text.rules.ITokenScanner; import org.eclipse.jface.text.rules.ITokenScanner;
import org.eclipse.jface.text.rules.IWordDetector; import org.eclipse.jface.text.rules.IWordDetector;
import org.eclipse.jface.text.rules.PatternRule;
import org.eclipse.jface.text.rules.RuleBasedScanner; import org.eclipse.jface.text.rules.RuleBasedScanner;
import org.eclipse.jface.text.rules.WordRule; import org.eclipse.jface.text.rules.WordRule;
import org.eclipse.jface.text.source.IAnnotationHover; import org.eclipse.jface.text.source.IAnnotationHover;
...@@ -53,12 +55,21 @@ public abstract class SourceEditorConfigurationBase<T extends EObject> ...@@ -53,12 +55,21 @@ public abstract class SourceEditorConfigurationBase<T extends EObject>
this.editor = editor; this.editor = editor;
} }
/** Color constant used to display code dark red. */ /** Color constant used to display code in dark red. */
protected Color DARK_RED = getColor(128, 0, 0); protected Color DARK_RED = getColor(128, 0, 0);
/** Color constant used to display code dark blue. */ /** Color constant used to display code in dark blue. */
protected Color DARK_BLUE = getColor(0, 0, 128); protected Color DARK_BLUE = getColor(0, 0, 128);
/** Color constant used to display comments (green). */
protected Color COMMENT_COLOR = getColor(0, 148, 0);
/** Identifier for the start of a comment. */
public static final String COMMENT_START_IDENTIFIER = "/*";
/** Identifier for the end of a comment. */
public static final String COMMENT_END_IDENTIFIER = "*/";
/** Detector used to create the scanners. */ /** Detector used to create the scanners. */
protected IWordDetector detector = new IWordDetector() { protected IWordDetector detector = new IWordDetector() {
/** {@inheritDoc} */ /** {@inheritDoc} */
...@@ -99,10 +110,17 @@ public abstract class SourceEditorConfigurationBase<T extends EObject> ...@@ -99,10 +110,17 @@ public abstract class SourceEditorConfigurationBase<T extends EObject>
/** Returns the rule based scanner. */ /** Returns the rule based scanner. */
private RuleBasedScanner getScannerForSyntaxHighlighting() { private RuleBasedScanner getScannerForSyntaxHighlighting() {
List<WordRule> rules = getCommonRules(); List<IRule> allRules = new ArrayList<IRule>();
rules.add(getRuleSpecificToEditor());
allRules.addAll(getCommonRules());
allRules.add(getRuleSpecificToEditor());
allRules.add(getCommentRuleSpecificToEditor());
IRule[] rules = allRules.toArray(new IRule[0]);
RuleBasedScanner scanner = new RuleBasedScanner(); RuleBasedScanner scanner = new RuleBasedScanner();
scanner.setRules(rules.toArray(new IRule[0])); scanner.setRules(rules);
return scanner; return scanner;
} }
...@@ -112,6 +130,9 @@ public abstract class SourceEditorConfigurationBase<T extends EObject> ...@@ -112,6 +130,9 @@ public abstract class SourceEditorConfigurationBase<T extends EObject>
/** Returns a rule specific to the editor. */ /** Returns a rule specific to the editor. */
abstract protected WordRule getRuleSpecificToEditor(); abstract protected WordRule getRuleSpecificToEditor();
/** Returns the comment rule specific to the editor. */
abstract protected PatternRule getCommentRuleSpecificToEditor();
/** Adds the words to the rule with the given token. */ /** Adds the words to the rule with the given token. */
protected void addWordsToRule(List<String> words, WordRule rule, IToken token) { protected void addWordsToRule(List<String> words, WordRule rule, IToken token) {
for(String word : words) { for(String word : words) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment