/*
* This file is part of the PDT Extensions eclipse plugin.
*
* (c) Robert Gruendler <r.gruendler@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
package org.pdtextensions.core.ui.contentassist;
import org.eclipse.dltk.core.CompletionProposal;
import org.eclipse.dltk.core.IMethod;
import org.eclipse.dltk.core.ISourceModule;
import org.eclipse.dltk.ui.text.completion.IScriptCompletionProposal;
import org.eclipse.dltk.ui.text.completion.MethodProposalInfo;
import org.eclipse.jface.text.IDocument;
import org.eclipse.php.core.codeassist.ICompletionContextResolver;
import org.eclipse.php.core.codeassist.ICompletionStrategyFactory;
import org.eclipse.php.internal.core.codeassist.IPHPCompletionRequestorExtension;
import org.eclipse.php.internal.ui.editor.contentassist.PHPCompletionProposalCollector;
import org.eclipse.swt.graphics.Image;
import org.pdtextensions.core.codeassist.CompletionContextResolver;
import org.pdtextensions.core.codeassist.CompletionStrategyFactory;
import org.pdtextensions.core.codeassist.PDTCompletionInfo;
/**
*
*/
@SuppressWarnings("restriction")
public class PDTScriptCompletionProposalCollector extends
PHPCompletionProposalCollector implements IPHPCompletionRequestorExtension {
/**
* @param document
* @param cu
* @param explicit
*/
public PDTScriptCompletionProposalCollector(IDocument document,
ISourceModule cu, boolean explicit) {
super(document, cu, explicit);
}
@Override
protected IScriptCompletionProposal createScriptCompletionProposal(
CompletionProposal proposal) {
Object info = proposal.getExtraInfo();
if ( !(info instanceof PDTCompletionInfo) )
return null;
PDTCompletionInfo additional = (PDTCompletionInfo) info;
String completion = new String(proposal.getCompletion());
int replaceStart = proposal.getReplaceStart();
int length = getLength(proposal);
Image image = getImage(getLabelProvider().createTypeImageDescriptor(proposal));
String displayString = (getLabelProvider()).createLabel(proposal);
SuperclassMethodCompletionProposal scriptProposal = new SuperclassMethodCompletionProposal(completion,
replaceStart, length, image, displayString, 0, (IMethod) proposal.getModelElement(), additional.getSource());
scriptProposal.setRelevance(Integer.MAX_VALUE);
scriptProposal.setProposalInfo(new MethodProposalInfo(getScriptProject(), proposal));
return scriptProposal;
}
@Override
public ICompletionContextResolver[] getContextResolvers() {
return new ICompletionContextResolver[] {new CompletionContextResolver()};
}
@Override
public ICompletionStrategyFactory[] getStrategyFactories() {
return new ICompletionStrategyFactory[] {
new CompletionStrategyFactory()
};
}
}