aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/AndroidSourceViewerConfig.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/AndroidSourceViewerConfig.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/AndroidSourceViewerConfig.java243
1 files changed, 0 insertions, 243 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/AndroidSourceViewerConfig.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/AndroidSourceViewerConfig.java
deleted file mode 100644
index b2c10ec3b..000000000
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/AndroidSourceViewerConfig.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * 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.adt.internal.editors;
-
-
-import com.android.ide.eclipse.adt.internal.editors.formatting.AndroidXmlFormatter;
-import com.android.ide.eclipse.adt.internal.editors.formatting.AndroidXmlFormattingStrategy;
-
-import org.eclipse.jface.text.DefaultAutoIndentStrategy;
-import org.eclipse.jface.text.IAutoEditStrategy;
-import org.eclipse.jface.text.ITextHover;
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.jface.text.contentassist.ICompletionProposal;
-import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
-import org.eclipse.jface.text.contentassist.IContentAssistant;
-import org.eclipse.jface.text.contentassist.IContextInformation;
-import org.eclipse.jface.text.contentassist.IContextInformationValidator;
-import org.eclipse.jface.text.formatter.IContentFormatter;
-import org.eclipse.jface.text.formatter.MultiPassContentFormatter;
-import org.eclipse.jface.text.source.ISourceViewer;
-import org.eclipse.wst.sse.core.text.IStructuredPartitions;
-import org.eclipse.wst.xml.core.text.IXMLPartitions;
-import org.eclipse.wst.xml.ui.StructuredTextViewerConfigurationXML;
-import org.eclipse.wst.xml.ui.internal.contentassist.XMLContentAssistProcessor;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Base Source Viewer Configuration for Android resources.
- */
-@SuppressWarnings({"restriction", "deprecation"}) // XMLContentAssistProcessor etc
-public abstract class AndroidSourceViewerConfig extends StructuredTextViewerConfigurationXML {
-
- public AndroidSourceViewerConfig() {
- super();
- }
-
- @Override
- public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
- return super.getContentAssistant(sourceViewer);
- }
-
- /**
- * Returns the IContentAssistProcessor that
- * {@link #getContentAssistProcessors(ISourceViewer, String)} should use
- * for XML and default/unknown partitions.
- *
- * @return An {@link IContentAssistProcessor} or null.
- */
- public abstract IContentAssistProcessor getAndroidContentAssistProcessor(
- ISourceViewer sourceViewer,
- String partitionType);
-
- /**
- * 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) {
-
- IContentAssistProcessor processor =
- getAndroidContentAssistProcessor(sourceViewer, partitionType);
-
- if (processor != null) {
- processors.add(processor);
- }
- }
-
- IContentAssistProcessor[] others = super.getContentAssistProcessors(sourceViewer,
- partitionType);
- if (others != null && others.length > 0) {
- for (IContentAssistProcessor p : others) {
- // Builtin Eclipse WTP code completion assistant? If so,
- // wrap it with our own filter which hides some unwanted completions.
- if (p instanceof XMLContentAssistProcessor
- // On Eclipse 3.7, XMLContentAssistProcessor is no longer used,
- // and instead org.eclipse.wst.xml.ui.internal.contentassist.
- // XMLStructuredContentAssistProcessor is used - which isn't available
- // at compile time in 3.5.
- || p.getClass().getSimpleName().equals(
- "XMLStructuredContentAssistProcessor")) { //$NON-NLS-1$
- processors.add(new FilteringContentAssistProcessor(p));
- } else {
- 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) {
- IAutoEditStrategy[] strategies = super.getAutoEditStrategies(sourceViewer, contentType);
- List<IAutoEditStrategy> s = new ArrayList<IAutoEditStrategy>(strategies.length + 1);
- s.add(new AndroidXmlAutoEditStrategy());
-
- // Add other registered strategies, except the builtin indentation strategy which is
- // now handled by the above AndroidXmlAutoEditStrategy
- for (IAutoEditStrategy strategy : strategies) {
- if (strategy instanceof DefaultAutoIndentStrategy) {
- continue;
- }
- s.add(strategy);
- }
-
- return s.toArray(new IAutoEditStrategy[s.size()]);
- }
-
- @Override
- public IContentFormatter getContentFormatter(ISourceViewer sourceViewer) {
- IContentFormatter formatter = super.getContentFormatter(sourceViewer);
-
- if (formatter instanceof MultiPassContentFormatter) {
- ((MultiPassContentFormatter) formatter).setMasterStrategy(
- new AndroidXmlFormattingStrategy());
- return formatter;
- } else {
- return new AndroidXmlFormatter();
- }
- }
-
- @Override
- protected Map<String, ?> getHyperlinkDetectorTargets(final ISourceViewer sourceViewer) {
- @SuppressWarnings("unchecked")
- Map<String, ?> targets = super.getHyperlinkDetectorTargets(sourceViewer);
- // If we want to look up more context in our HyperlinkDetector via the
- // getAdapter method, we should place an IAdaptable object into the map here.
- targets.put("com.android.ide.eclipse.xmlCode", null); //$NON-NLS-1$
- return targets;
- }
-
- /**
- * A delegating {@link IContentAssistProcessor} whose purpose is to filter out some
- * default Eclipse XML completions which are distracting in Android XML files
- */
- private static class FilteringContentAssistProcessor implements IContentAssistProcessor {
- private IContentAssistProcessor mDelegate;
-
- public FilteringContentAssistProcessor(IContentAssistProcessor delegate) {
- super();
- mDelegate = delegate;
- }
-
- @Override
- public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int offset) {
- ICompletionProposal[] result = mDelegate.computeCompletionProposals(viewer, offset);
- if (result == null) {
- return null;
- }
-
- List<ICompletionProposal> proposals =
- new ArrayList<ICompletionProposal>(result.length);
- for (ICompletionProposal proposal : result) {
- String replacement = proposal.getDisplayString();
- if (replacement.charAt(0) == '"' &&
- replacement.charAt(replacement.length() - 1) == '"') {
- // Filter out attribute values. In Android XML files (where there is no DTD
- // etc) the default Eclipse XML code completion simply provides the
- // existing value as a completion. This is often misleading, since if you
- // for example have a typo, completion will show your current (wrong)
- // value as a valid completion.
- } else if (replacement.contains("Namespace") //$NON-NLS-1$
- || replacement.startsWith("XSL ") //$NON-NLS-1$
- || replacement.contains("Schema")) { //$NON-NLS-1$
- // Eclipse adds in a number of namespace and schema related completions which
- // are not usually applicable in our files.
- } else {
- proposals.add(proposal);
- }
- }
-
- if (proposals.size() == result.length) {
- return result;
- } else {
- return proposals.toArray(new ICompletionProposal[proposals.size()]);
- }
- }
-
- @Override
- public IContextInformation[] computeContextInformation(ITextViewer viewer, int offset) {
- return mDelegate.computeContextInformation(viewer, offset);
- }
-
- @Override
- public char[] getCompletionProposalAutoActivationCharacters() {
- return mDelegate.getCompletionProposalAutoActivationCharacters();
- }
-
- @Override
- public char[] getContextInformationAutoActivationCharacters() {
- return mDelegate.getContextInformationAutoActivationCharacters();
- }
-
- @Override
- public IContextInformationValidator getContextInformationValidator() {
- return mDelegate.getContextInformationValidator();
- }
-
- @Override
- public String getErrorMessage() {
- return mDelegate.getErrorMessage();
- }
- }
-}