/**
* Aptana Studio
* Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
* Licensed under the terms of the GNU Public License (GPL) v3 (with exceptions).
* Please see the license.html included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package com.aptana.editor.ruby;
import java.util.Map;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.text.IAutoEditStrategy;
import org.eclipse.jface.text.ITextDoubleClickStrategy;
import org.eclipse.jface.text.contentassist.IContentAssistant;
import org.eclipse.jface.text.source.ISourceViewer;
import com.aptana.editor.common.AbstractThemeableEditor;
import com.aptana.editor.common.ISourceViewerConfiguration;
import com.aptana.editor.common.SimpleSourceViewerConfiguration;
import com.aptana.editor.common.contentassist.ContentAssistant;
import com.aptana.editor.ruby.core.RubyDoubleClickStrategy;
public class RubySourceViewerConfiguration extends SimpleSourceViewerConfiguration
{
private RubyDoubleClickStrategy fDoubleClickStrategy;
/**
* RubySourceViewerConfiguration
*
* @param preferences
* @param editor
*/
public RubySourceViewerConfiguration(IPreferenceStore preferences, AbstractThemeableEditor editor)
{
super(preferences, editor);
}
/*
* (non-Javadoc)
* @seecom.aptana.editor.common.CommonSourceViewerConfiguration#getContentAssistant(org.eclipse.jface.text.source.
* ISourceViewer)
*/
@Override
public IContentAssistant getContentAssistant(ISourceViewer sourceViewer)
{
IContentAssistant assistant = super.getContentAssistant(sourceViewer);
if (assistant instanceof ContentAssistant)
{
// Turn on prefix completion (complete partially if all proposals share same prefix)
((ContentAssistant) assistant).enablePrefixCompletion(true);
}
return assistant;
}
/*
* (non-Javadoc)
* @see
* com.aptana.editor.common.CommonSourceViewerConfiguration#getDoubleClickStrategy(org.eclipse.jface.text.source
* .ISourceViewer, java.lang.String)
*/
@Override
public ITextDoubleClickStrategy getDoubleClickStrategy(ISourceViewer sourceViewer, String contentType)
{
if (fDoubleClickStrategy == null)
{
fDoubleClickStrategy = new RubyDoubleClickStrategy();
}
return fDoubleClickStrategy;
}
/*
* (non-Javadoc)
* @see
* com.aptana.editor.common.CommonSourceViewerConfiguration#getAutoEditStrategies(org.eclipse.jface.text.source.
* ISourceViewer, java.lang.String)
*/
@Override
public IAutoEditStrategy[] getAutoEditStrategies(ISourceViewer sourceViewer, String contentType)
{
return new IAutoEditStrategy[] { new RubyAutoIndentStrategy(contentType, this, sourceViewer, RubyEditorPlugin
.getDefault().getPreferenceStore()) };
}
/*
* (non-Javadoc)
* @see com.aptana.editor.common.SimpleSourceViewerConfiguration#getSourceViewerConfiguration()
*/
@Override
public ISourceViewerConfiguration getSourceViewerConfiguration()
{
return RubySourceConfiguration.getDefault();
}
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
protected Map getHyperlinkDetectorTargets(ISourceViewer sourceViewer)
{
Map targets = super.getHyperlinkDetectorTargets(sourceViewer);
targets.put("com.aptana.ruby.ui.rubyCode", getEditor()); //$NON-NLS-1$
return targets;
}
}