| /******************************************************************************* |
| * Copyright (c) 2011 BestSolution.at |
| * |
| * This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.e4.tools.emf.ui.script.js.text; |
| |
| import javax.inject.Inject; |
| |
| import org.eclipse.e4.tools.emf.ui.script.js.ResourceProvider; |
| import org.eclipse.e4.tools.emf.ui.script.js.text.scanners.IJavaScriptPartitions; |
| import org.eclipse.e4.tools.emf.ui.script.js.text.scanners.JavaScriptSourceViewerConfiguration; |
| import org.eclipse.e4.tools.emf.ui.script.js.text.scanners.JavaScriptTextTools; |
| import org.eclipse.e4.tools.emf.ui.script.js.text.scanners.PreferenceConstants; |
| import org.eclipse.e4.tools.services.IResourcePool; |
| import org.eclipse.jface.preference.PreferenceStore; |
| import org.eclipse.jface.resource.JFaceResources; |
| import org.eclipse.jface.text.Document; |
| import org.eclipse.jface.text.source.SourceViewer; |
| import org.eclipse.jface.text.source.VerticalRuler; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.graphics.Font; |
| import org.eclipse.swt.graphics.FontData; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Control; |
| |
| public class JavaScriptEditor { |
| private static final int VERTICAL_RULER_WIDTH = 12; |
| |
| private static PreferenceStore store = new PreferenceStore(); |
| |
| private Document document; |
| |
| private SourceViewer viewer; |
| |
| static { |
| store.setDefault(ResourceProvider.JAVADOC_KEYWORD+PreferenceConstants.EDITOR_BOLD_SUFFIX, true); |
| store.setDefault(ResourceProvider.JAVA_KEYWORD+PreferenceConstants.EDITOR_BOLD_SUFFIX, true); |
| store.setDefault(ResourceProvider.JAVA_KEYWORD_RETURN+PreferenceConstants.EDITOR_BOLD_SUFFIX, true); |
| } |
| |
| @Inject |
| public JavaScriptEditor(Composite parent, IResourcePool pool) { |
| this.document = new Document(); |
| VerticalRuler verticalRuler = new VerticalRuler(VERTICAL_RULER_WIDTH); |
| |
| int styles= SWT.V_SCROLL | SWT.H_SCROLL | SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION; |
| viewer = new SourceViewer(parent, verticalRuler, styles); |
| |
| Font f = null; |
| if( ! JFaceResources.getFontRegistry().hasValueFor("JavaEditorFont") ) { |
| if( SWT.getPlatform().equals("carbon") || SWT.getPlatform().equals("cocoa") ) { |
| JFaceResources.getFontRegistry().put("JavaEditorFont", new FontData[] {new FontData("Monaco",11,SWT.NONE)}); |
| } |
| } |
| |
| f = JFaceResources.getFontRegistry().get("JavaEditorFont"); |
| viewer.getTextWidget().setFont(f); |
| |
| JavaScriptTextTools textTools = new JavaScriptTextTools(pool, store); |
| viewer.configure(new JavaScriptSourceViewerConfiguration(textTools)); |
| |
| textTools.setupJavaDocumentPartitioner(document, IJavaScriptPartitions.JAVA_PARTITIONING); |
| viewer.setDocument(document); |
| } |
| |
| public Control getControl() { |
| return viewer.getControl(); |
| } |
| |
| public String getContent() { |
| return document.get(); |
| } |
| } |