Skip to content
Snippets Groups Projects
Commit 37be3236 authored by Sudeep Kanav's avatar Sudeep Kanav
Browse files

Implemented code review comments: YELLOW


Issue-Ref: 3536
Signed-off-by: default avatarSudeep Kanav <kanav@fortiss.org>
parent 956db690
No related branches found
No related tags found
1 merge request!40Moved the abstract source editor to tooling base.
...@@ -8,5 +8,6 @@ DiagramKeyHandler.java cfd15ac8f9fc933739cef5e7039960e19826d1ce GREEN ...@@ -8,5 +8,6 @@ DiagramKeyHandler.java cfd15ac8f9fc933739cef5e7039960e19826d1ce GREEN
FormsEditorBase.java 4046d340913d951340084ae7240d79f8e75cb8d4 GREEN FormsEditorBase.java 4046d340913d951340084ae7240d79f8e75cb8d4 GREEN
GEFEditorBase.java e668f596f45f07215994cbbd3929a9438331718f GREEN GEFEditorBase.java e668f596f45f07215994cbbd3929a9438331718f GREEN
SourceEditorBase.java 347d6b45d577abd7e23a7234904be118e82469f1 YELLOW SourceEditorBase.java 347d6b45d577abd7e23a7234904be118e82469f1 YELLOW
SourceEditorConfigurationBase.java db3898fe1cace33aab0dd83d9711205c235c9861 YELLOW
SourceEditorUndoRedo.java 5f5d1b05c8b1287a9e37d866eda3474b6dcbd014 YELLOW SourceEditorUndoRedo.java 5f5d1b05c8b1287a9e37d866eda3474b6dcbd014 YELLOW
TreeViewerEditorBase.java 1c59689ff57c4f3cc180d85f13021fc03461ecb0 GREEN TreeViewerEditorBase.java 1c59689ff57c4f3cc180d85f13021fc03461ecb0 GREEN
/*-------------------------------------------------------------------------+
| Copyright 2012 fortiss GmbH |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
+--------------------------------------------------------------------------*/
package org.fortiss.tooling.base.ui.editor;
import static org.eclipse.jface.text.IDocument.DEFAULT_CONTENT_TYPE;
import static org.eclipse.wb.swt.SWTResourceManager.getColor;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.text.presentation.IPresentationReconciler;
import org.eclipse.jface.text.presentation.PresentationReconciler;
import org.eclipse.jface.text.rules.DefaultDamagerRepairer;
import org.eclipse.jface.text.rules.IRule;
import org.eclipse.jface.text.rules.IToken;
import org.eclipse.jface.text.rules.ITokenScanner;
import org.eclipse.jface.text.rules.IWordDetector;
import org.eclipse.jface.text.rules.RuleBasedScanner;
import org.eclipse.jface.text.rules.WordRule;
import org.eclipse.jface.text.source.IAnnotationHover;
import org.eclipse.jface.text.source.ISourceViewer;
import org.eclipse.jface.text.source.SourceViewerConfiguration;
import org.eclipse.swt.graphics.Color;
import org.fortiss.tooling.base.ui.editor.SourceEditorBase;
import org.fortiss.tooling.base.ui.editor.annotations.AnnotationHover;
/**
* Class responsible for proper configuration of the {@link SourceEditorBase}.
*
* @author doebber
*/
public abstract class SourceEditorConfigurationBase<T extends EObject>
extends SourceViewerConfiguration {
/** Stores the actual editor object. */
protected SourceEditorBase<T> editor;
/** Constructor. */
public SourceEditorConfigurationBase(SourceEditorBase<T> editor) {
this.editor = editor;
}
/** Color constant used to display code dark red. */
protected Color DARK_RED = getColor(128, 0, 0);
/** Color constant used to display code dark blue. */
protected Color DARK_BLUE = getColor(0, 0, 128);
/** Detector used to create the scanners. */
protected IWordDetector detector = new IWordDetector() {
/** {@inheritDoc} */
@Override
public boolean isWordStart(char c) {
return Character.isLetterOrDigit(c);
}
/** {@inheritDoc} */
@Override
public boolean isWordPart(char c) {
return Character.isLetterOrDigit(c) || c == '_';
}
};
/** {@inheritDoc} */
@Override
public IPresentationReconciler getPresentationReconciler(ISourceViewer sourceViewer) {
PresentationReconciler reconciler = new PresentationReconciler();
DefaultDamagerRepairer dr = new DefaultDamagerRepairer(getScanner());
reconciler.setDamager(dr, DEFAULT_CONTENT_TYPE);
reconciler.setRepairer(dr, DEFAULT_CONTENT_TYPE);
return reconciler;
}
/** Returns the scanner. */
private ITokenScanner getScanner() {
return getScannerForSyntaxHighlighting();
}
/** Returns the annotation hover. */
@Override
public IAnnotationHover getAnnotationHover(ISourceViewer sourceViewer) {
return new AnnotationHover(editor.getAnnotationModel());
}
/** Returns the rule based scanner. */
private RuleBasedScanner getScannerForSyntaxHighlighting() {
List<WordRule> rules = getCommonRules();
rules.add(getRuleSpecificToEditor());
RuleBasedScanner scanner = new RuleBasedScanner();
scanner.setRules(rules.toArray(new IRule[0]));
return scanner;
}
/** Returns a list of rules common for the syntax highlighting. */
abstract protected List<WordRule> getCommonRules();
/** Returns a rule specific to the editor. */
abstract protected WordRule getRuleSpecificToEditor();
/** Adds the words to the rule with the given token. */
protected void addWordsToRule(List<String> words, WordRule rule, IToken token) {
for(String word : words) {
rule.addWord(word, token);
}
}
}
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