Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/contentassist/el/FunctionCompletionStrategy.java')
-rw-r--r--jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/contentassist/el/FunctionCompletionStrategy.java239
1 files changed, 0 insertions, 239 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/contentassist/el/FunctionCompletionStrategy.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/contentassist/el/FunctionCompletionStrategy.java
deleted file mode 100644
index ff58d1b5c..000000000
--- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/internal/contentassist/el/FunctionCompletionStrategy.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Oracle Corporation.
- * 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:
- * Cameron Bateman/Oracle - initial API and implementation
- *
- ********************************************************************************/
-package org.eclipse.jst.jsf.core.internal.contentassist.el;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
-import org.eclipse.jface.text.contentassist.ICompletionProposal;
-import org.eclipse.jst.jsf.context.resolver.structureddocument.IStructuredDocumentContextResolverFactory;
-import org.eclipse.jst.jsf.context.resolver.structureddocument.internal.ITextRegionContextResolver;
-import org.eclipse.jst.jsf.context.structureddocument.IStructuredDocumentContext;
-import org.eclipse.jst.jsf.context.symbol.IMethodSymbol;
-import org.eclipse.jst.jsf.context.symbol.IObjectSymbol;
-import org.eclipse.jst.jsf.context.symbol.ISymbol;
-import org.eclipse.jst.jsf.context.symbol.provider.IContentProposalProvider;
-import org.eclipse.jst.jsf.context.symbol.provider.ProposalCreationFactoryAdapter;
-import org.eclipse.jst.jsf.context.symbol.provider.IContentProposalProvider.IProposalCreationFactory;
-import org.eclipse.jst.jsf.designtime.resolver.ISymbolContextResolver;
-import org.eclipse.jst.jsf.designtime.resolver.StructuredDocumentSymbolResolverFactory;
-import org.eclipse.jst.jsp.core.internal.regions.DOMJSPRegionContexts;
-import org.eclipse.swt.graphics.Image;
-
-/**
- * A completion strategy for function completions like:
- *
- * v a r .
- * ^
- *
- * @author cbateman
- *
- */
-public class FunctionCompletionStrategy extends ContentAssistStrategy
-{
- /**
- * @param value
- * @param proposalStart
- */
- public FunctionCompletionStrategy(final String value, final String proposalStart)
- {
- super(ContentAssistStrategy.PREFIX_TYPE_DOT_COMPLETION, value, proposalStart);
- }
-
- @Override
- public List<ICompletionProposal> getProposals(final IStructuredDocumentContext context)
- {
- List<ICompletionProposal> completionList = Collections.EMPTY_LIST;
- final ISymbolContextResolver symbolResolver =
- StructuredDocumentSymbolResolverFactory.getInstance().
- getSymbolContextResolver(context);
-
- final ISymbol symbol = SymbolResolveUtil.getSymbolForVariableSuffixExpr(context, getValue(), false);
-
- // if we get a completion symbol, get it's proposals
- if (symbol instanceof IObjectSymbol)
- {
- final List expectedMethodBindings = new ArrayList();
- final ISymbol[] suffixes = getSymbols((IObjectSymbol) symbol,
- context,
- symbolResolver,
- expectedMethodBindings);
-
- final ComposedAdapterFactory factory =
- new ComposedAdapterFactory(
- ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
- final IProposalCreationFactory creationInfo =
- new MyProposalFactory(context, getProposalStart().length(),
- expectedMethodBindings);
-
- completionList = new ArrayList<ICompletionProposal>();
- for (final ISymbol propSymbol : suffixes) {
- final Object provider =
- factory.adapt(propSymbol, IContentProposalProvider.class);
-
- if (provider instanceof IContentProposalProvider)
- {
- final ICompletionProposal[] proposal =
- ((IContentProposalProvider) provider).
- getProposals(propSymbol, creationInfo);
- if (proposal != null)
- {
- addProposalsMatchingProposalStart(completionList,
- proposal);
- }
- }
- }
- }
-
- return Collections.unmodifiableList(completionList);
- }
-
- private ISymbol[] getSymbols(final IObjectSymbol symbol,
- final IStructuredDocumentContext context,
- final ISymbolContextResolver symbolResolver,
- final List expectedMethodBindings)
- {
- final List symbols = new ArrayList();
-
- if (SymbolResolveUtil.isMethodBindingExpected(context, expectedMethodBindings))
- {
- symbols.addAll(Arrays.asList(
- symbolResolver.getMethods(symbol)));
- }
-
- symbols.addAll(Arrays.asList(symbolResolver.getProperties(symbol)));
-
- return (ISymbol[]) symbols.toArray(ISymbol.EMPTY_SYMBOL_ARRAY);
- }
-
- private static class MyProposalFactory extends ProposalCreationFactoryAdapter
- {
- private final static int DEFAULT_RELEVANCE = 1;
-
- private final static int HIGH_RELEVANCE = 2;
- private final static int NORMAL_RELEVANCE = 1;
- private final static int LOW_RELEVANCE = 0;
-
- private final List _expectedMethodBindings;
- private final IStructuredDocumentContext _context;
-
- /**
- * @param context
- * @param replacementLength
- * @param expectedMethodBindings
- */
- public MyProposalFactory(final IStructuredDocumentContext context, final int replacementLength,
- final List expectedMethodBindings) {
- super(context.getDocumentPosition() - replacementLength, replacementLength);
- _context = context;
- _expectedMethodBindings = expectedMethodBindings;
- }
-
- @Override
- public ICompletionProposal createProposal(final String replacementText,
- final String displayText,
- final String additionalText,
- final Image displayImage,
- final Object target)
- {
- int replacementOffset = _replacementOffset;
- int replacementLength = _replacementLength;
-
- // TODO: I regard this as a bit of hack, but until we write our
- // proposal implementation, it's basically the only way I can
- // see to do this
- // if it's an array, we must check if we need to replace a
- // preceding '.'
- if (replacementText.startsWith("[")) //$NON-NLS-1$
- {
- ITextRegionContextResolver textResolver =
- IStructuredDocumentContextResolverFactory.INSTANCE.getTextRegionResolver(_context);
-
- if (textResolver.getRegionType().equals(DOMJSPRegionContexts.JSP_VBL_CLOSE))
- {
- textResolver =
- IStructuredDocumentContextResolverFactory.
- INSTANCE.getTextRegionResolver(textResolver.getPreviousContext());
- }
-
- final String regionText = textResolver.getRegionText();
- final int regionStart = textResolver.getStartOffset();
-
- if (DOMJSPRegionContexts.JSP_VBL_CONTENT.equals(textResolver.getRegionType())
- && regionText != null
- && regionStart != -1
- && regionStart < _context.getDocumentPosition())
- {
- final int relativeOffset = _context.getDocumentPosition() - regionStart - 1;
-
- if (regionText.charAt(relativeOffset) == '.')
- {
- // we must replace a length of 1 (the dot)
- // at an offset on prior
- replacementOffset--;
- replacementLength = 1;
- }
- }
- }
-
- return createDefaultProposal(replacementText,
- replacementOffset,
- replacementLength,
- replacementText.length(),
- displayImage,
- displayText,
- null,
- additionalText,
- getRelevance(target, DEFAULT_RELEVANCE));
- }
-
- private int getRelevance(final Object target, final int defaultRelevance)
- {
- // if method bindings are expected, then list exact signature
- // matches top most. Still list non-matching methods, but put
- // them at the bottom
- if (_expectedMethodBindings.size() > 0)
- {
- if (target instanceof IMethodSymbol)
- {
- final IMethodSymbol methodSymbol = (IMethodSymbol) target;
-
- for (final Iterator it = _expectedMethodBindings.iterator();
- it.hasNext();)
- {
- final String methodType = (String) it.next();
-
- // we have a match, so push to the top
- if (methodType.equals(methodSymbol.getSignature()))
- {
- return HIGH_RELEVANCE;
- }
- }
-
- // if we get out of the loop, then this method doesn't
- // match the expected signature
- return LOW_RELEVANCE;
- }
-
- // non-method targets have normal relevance when mb expected
- return NORMAL_RELEVANCE;
- }
-
- // otherwise, simply return the default for all
- return defaultRelevance;
- }
- }
-}

Back to the top