/******************************************************************************* * Copyright (c) 2008, 2015 Zend Technologies 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: * Zend Technologies - initial API and implementation *******************************************************************************/ package org.eclipse.php.refactoring.ui.utils; import java.util.ArrayList; import org.eclipse.core.runtime.Assert; import org.eclipse.jface.contentassist.IContentAssistSubjectControl; import org.eclipse.jface.contentassist.ISubjectControlContentAssistProcessor; import org.eclipse.jface.text.ITextViewer; import org.eclipse.jface.text.contentassist.*; public class VariableNameProcessor implements IContentAssistProcessor, ISubjectControlContentAssistProcessor { private String[] fVariableNameProposals; private String fErrorMessage; public VariableNameProcessor(String[] variableNameProposals) { fVariableNameProposals = variableNameProposals; } public void explicitActivationRequest() { } public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int offset) { Assert.isTrue(false, "ITextViewer not supported"); //$NON-NLS-1$ return null; } public IContextInformation[] computeContextInformation(ITextViewer viewer, int offset) { Assert.isTrue(false, "ITextViewer not supported"); //$NON-NLS-1$ return null; } public char[] getCompletionProposalAutoActivationCharacters() { return null; } public char[] getContextInformationAutoActivationCharacters() { return null; } public IContextInformationValidator getContextInformationValidator() { return null; } public String getErrorMessage() { return fErrorMessage; } public ICompletionProposal[] computeCompletionProposals(IContentAssistSubjectControl contentAssistSubject, int documentOffset) { if (fVariableNameProposals.length == 0) return null; String input = contentAssistSubject.getDocument().get(); ArrayList<ICompletionProposal> proposals = new ArrayList<ICompletionProposal>(); String prefix = input.substring(0, documentOffset); for (int i = 0; i < fVariableNameProposals.length; i++) { String tempName = fVariableNameProposals[i]; if (tempName.length() == 0 || !tempName.startsWith(prefix)) continue; CompletionProposal proposal = new CompletionProposal(tempName, 0, input.length(), 0); proposals.add(proposal); } fErrorMessage = proposals.size() > 0 ? null : "No completions available"; //$NON-NLS-1$ return (ICompletionProposal[]) proposals.toArray(new ICompletionProposal[proposals.size()]); } public IContextInformation[] computeContextInformation(IContentAssistSubjectControl contentAssistSubjectControl, int documentOffset) { Assert.isTrue(false, "ITextViewer not supported"); //$NON-NLS-1$ return null; } }