/*******************************************************************************
* Copyright (c) 2008, 2017 Phil Muldoon and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Phil Muldoon <pkmuldoon@picobot.org> - initial API and implementation.
*******************************************************************************/
package org.eclipse.linuxtools.internal.systemtap.ui.ide.editors.stp;
import org.eclipse.jface.text.IAutoEditStrategy;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextDoubleClickStrategy;
import org.eclipse.jface.text.ITextHover;
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.reconciler.IReconciler;
import org.eclipse.jface.text.reconciler.MonoReconciler;
import org.eclipse.jface.text.source.ISourceViewer;
import org.eclipse.jface.text.source.SourceViewerConfiguration;
public class STPConfiguration extends SourceViewerConfiguration {
private STPEditor editor;
private DoubleClickStrategy doubleClickStrategy;
private STPCompletionProcessor processor;
public STPConfiguration(STPEditor editor) {
this.editor = editor;
this.processor = new STPCompletionProcessor();
}
@Override
public String[] getConfiguredContentTypes(ISourceViewer sourceViewer) {
return new String[] {
IDocument.DEFAULT_CONTENT_TYPE,
STPPartitionScanner.STP_COMMENT,
STPPartitionScanner.STP_CONDITIONAL};
}
@Override
public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
ContentAssistant assistant = new ContentAssistant();
assistant.enableAutoActivation(true);
assistant.setAutoActivationDelay(500);
assistant.setProposalPopupOrientation(IContentAssistant.PROPOSAL_OVERLAY);
assistant
.setContextInformationPopupOrientation(IContentAssistant.CONTEXT_INFO_ABOVE);
assistant.setContentAssistProcessor(processor,IDocument.DEFAULT_CONTENT_TYPE);
assistant.setContentAssistProcessor(processor,STPPartitionScanner.STP_CONDITIONAL);
assistant.setInformationControlCreator(getInformationControlCreator(sourceViewer));
return assistant;
}
@Override
public IReconciler getReconciler(ISourceViewer sourceViewer)
{
STPReconcilingStrategy strategy = new STPReconcilingStrategy();
strategy.setEditor(editor);
return new MonoReconciler(strategy,false);
}
/**
* Instantiates and returns a double click strategy object if one does not exist, and returns the
* current one if it does.
*/
@Override
public ITextDoubleClickStrategy getDoubleClickStrategy(ISourceViewer sourceViewer,String contentType) {
if (doubleClickStrategy == null) {
doubleClickStrategy = new DoubleClickStrategy();
}
return doubleClickStrategy;
}
@Override
public IPresentationReconciler getPresentationReconciler(
ISourceViewer sourceViewer) {
return new STPPresentationReconciler();
}
@Override
public IAutoEditStrategy[] getAutoEditStrategies(
ISourceViewer sourceViewer, String contentType) {
return new IAutoEditStrategy[] {new STPAutoEditStrategy(STPPartitionScanner.STP_PARTITIONING, null)};
}
@Override
public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType) {
return processor;
}
@Override
public String[] getDefaultPrefixes(ISourceViewer sourceViewer,
String contentType) {
return new String[] { "//", "" }; //$NON-NLS-1$//$NON-NLS-2$
}
}