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
FormsEditorBase.java 4046d340913d951340084ae7240d79f8e75cb8d4 GREEN
GEFEditorBase.java e668f596f45f07215994cbbd3929a9438331718f GREEN
SourceEditorBase.java 347d6b45d577abd7e23a7234904be118e82469f1 YELLOW
SourceEditorConfigurationBase.java db3898fe1cace33aab0dd83d9711205c235c9861 YELLOW
SourceEditorUndoRedo.java 5f5d1b05c8b1287a9e37d866eda3474b6dcbd014 YELLOW
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