/*
* Copyright (C) 2007 The Android Open Source Project
*
* Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php
*
* 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 com.android.ide.eclipse.editors;
import org.eclipse.jface.text.IAutoEditStrategy;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextHover;
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
import org.eclipse.jface.text.contentassist.IContentAssistant;
import org.eclipse.jface.text.formatter.IContentFormatter;
import org.eclipse.jface.text.source.ISourceViewer;
import org.eclipse.jface.viewers.IInputProvider;
import org.eclipse.wst.sse.core.text.IStructuredPartitions;
import org.eclipse.wst.xml.core.text.IXMLPartitions;
import org.eclipse.wst.xml.ui.StructuredTextViewerConfigurationXML;
import java.util.ArrayList;
/**
* Base Source Viewer Configuration for Android resources.
*/
public class AndroidSourceViewerConfig extends StructuredTextViewerConfigurationXML {
/** Content Assist Processor to use for all handled partitions. */
private IContentAssistProcessor mProcessor;
public AndroidSourceViewerConfig(IContentAssistProcessor processor) {
super();
mProcessor = processor;
}
@Override
public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
return super.getContentAssistant(sourceViewer);
}
/**
* Returns the content assist processors that will be used for content
* assist in the given source viewer and for the given partition type.
*
* @param sourceViewer the source viewer to be configured by this
* configuration
* @param partitionType the partition type for which the content assist
* processors are applicable
* @return IContentAssistProcessors or null if should not be supported
*/
@Override
protected IContentAssistProcessor[] getContentAssistProcessors(
ISourceViewer sourceViewer, String partitionType) {
ArrayList<IContentAssistProcessor> processors = new ArrayList<IContentAssistProcessor>();
if (partitionType == IStructuredPartitions.UNKNOWN_PARTITION ||
partitionType == IStructuredPartitions.DEFAULT_PARTITION ||
partitionType == IXMLPartitions.XML_DEFAULT) {
if (sourceViewer instanceof IInputProvider) {
IInputProvider input = (IInputProvider) sourceViewer;
Object a = input.getInput();
if (a != null)
a.toString();
}
IDocument doc = sourceViewer.getDocument();
if (doc != null)
doc.toString();
processors.add(mProcessor);
}
IContentAssistProcessor[] others = super.getContentAssistProcessors(sourceViewer,
partitionType);
if (others != null && others.length > 0) {
for (IContentAssistProcessor p : others) {
processors.add(p);
}
}
if (processors.size() > 0) {
return processors.toArray(new IContentAssistProcessor[processors.size()]);
} else {
return null;
}
}
@Override
public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType) {
// TODO text hover for android xml
return super.getTextHover(sourceViewer, contentType);
}
@Override
public IAutoEditStrategy[] getAutoEditStrategies(
ISourceViewer sourceViewer, String contentType) {
// TODO auto edit strategies for android xml
return super.getAutoEditStrategies(sourceViewer, contentType);
}
@Override
public IContentFormatter getContentFormatter(ISourceViewer sourceViewer) {
// TODO content formatter for android xml
return super.getContentFormatter(sourceViewer);
}
}
|