com.nokia.testfw.stf.scripteditor.editors.ScriptEditorConfiguration.java Source code

Java tutorial

Introduction

Here is the source code for com.nokia.testfw.stf.scripteditor.editors.ScriptEditorConfiguration.java

Source

/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/

package com.nokia.testfw.stf.scripteditor.editors;

import java.util.ArrayList;

import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.text.DefaultTextHover;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.ITextHover;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.contentassist.ContentAssistant;
import org.eclipse.jface.text.contentassist.IContentAssistant;
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.source.DefaultAnnotationHover;
import org.eclipse.jface.text.source.IAnnotationHover;
import org.eclipse.jface.text.source.ISourceViewer;
import org.eclipse.jface.text.source.SourceViewerConfiguration;

import com.nokia.testfw.stf.scripteditor.Activator;
import com.nokia.testfw.stf.scripteditor.editors.scripter.ScripterAssistProcessor;
import com.nokia.testfw.stf.scripteditor.preference.PreferenceConstants;
import com.nokia.testfw.stf.scripteditor.utils.Command;

/**
 * Config source editor configuration
 * 
 */

public class ScriptEditorConfiguration extends SourceViewerConfiguration {

    /**
     * Creates Script Editor configuration
     */
    public ScriptEditorConfiguration() {
        assistant = new ContentAssistant();
        reconciler = new PresentationReconciler();
        scriptScanner = new ScriptScanner();
        repairer = new DefaultDamagerRepairer(scriptScanner);
        scripterAssistProcessor = new ScripterAssistProcessor();

        IPreferenceStore store = Activator.getDefault().getPreferenceStore();

        assistant.enableAutoActivation(store.getBoolean(PreferenceConstants.AUTO_ACTIVATION));
        assistant.setAutoActivationDelay(store.getInt(PreferenceConstants.AUTO_ACTIVATION_DELAY));
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.ui.editors.text.TextSourceViewerConfiguration#getAnnotationHover
     */
    public IAnnotationHover getAnnotationHover(ISourceViewer sourceViewer) {
        return new DefaultAnnotationHover();
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.text.source.SourceViewerConfiguration#getPresentationReconciler(org.eclipse.jface.text.source.ISourceViewer)
     */
    public IPresentationReconciler getPresentationReconciler(ISourceViewer arg0) {
        reconciler.setRepairer(repairer, IDocument.DEFAULT_CONTENT_TYPE);
        reconciler.setDamager(repairer, IDocument.DEFAULT_CONTENT_TYPE);
        return reconciler;
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.text.source.SourceViewerConfiguration#getContentAssistant(org.eclipse.jface.text.source.ISourceViewer)
     */
    public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
        assistant.setInformationControlCreator(getInformationControlCreator(sourceViewer));
        return assistant;
    }

    public IContentAssistant getContentAssistant() {
        return assistant;
    }

    /**
     * Changes Script Editor mode
     */
    public void changeConfigurationMode(ArrayList<String> subSectionContent) {
        assistant.setContentAssistProcessor(scripterAssistProcessor, IDocument.DEFAULT_CONTENT_TYPE);
        scriptScanner.changeSetOfKeywords(subSectionContent);
    }

    public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType) {
        return new DefaultTextHover(sourceViewer) {

            public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {
                try {
                    String keyword = textViewer.getDocument().get(hoverRegion.getOffset(), hoverRegion.getLength());
                    ArrayList<Command> cmds = scripterAssistProcessor.getCommand();

                    for (Command cmd : cmds) {
                        if (keyword.equals(cmd.getCommandName())) {
                            return cmd.getCommandInfo();
                        }
                    }
                    return null;
                } catch (Exception e) {
                    return null;
                }

            }

        };
    }

    public String[] getDefaultPrefixes(ISourceViewer sourceViewer, String contentType) {
        return super.getDefaultPrefixes(sourceViewer, contentType);
    }

    private ContentAssistant assistant;

    private PresentationReconciler reconciler;

    private DefaultDamagerRepairer repairer;

    private ScriptScanner scriptScanner;

    private ScripterAssistProcessor scripterAssistProcessor;
}