package org.maziarz.yiiclipse.completion; import org.eclipse.dltk.compiler.CharOperation; import org.eclipse.dltk.core.CompletionProposal; import org.eclipse.dltk.core.IScriptProject; 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.dltk.ui.text.completion.ProposalInfo; import org.eclipse.dltk.ui.text.completion.ScriptCompletionProposal; import org.eclipse.dltk.ui.text.completion.ScriptCompletionProposalCollector; import org.eclipse.php.internal.core.project.PHPNature; public class YiiclipseCompletionProposalCollector extends ScriptCompletionProposalCollector { protected YiiclipseCompletionProposalCollector(ISourceModule cu) { super(cu); } @Override protected IScriptCompletionProposal createScriptCompletionProposal(CompletionProposal proposal) { if (proposal.getKind() == CompletionProposal.POTENTIAL_METHOD_DECLARATION) { return createPotentialMethodDeclaration(proposal); } return super.createScriptCompletionProposal(proposal); } private IScriptCompletionProposal createPotentialMethodDeclaration(CompletionProposal proposal) { if (getSourceModule() == null) { return null; } IScriptProject scriptProject = getSourceModule().getScriptProject(); String name = proposal.getName(); String[] paramTypes = CharOperation.NO_STRINGS; int start = proposal.getReplaceStart(); int length = getLength(proposal); String label = proposal.getName();// + "()";// getLabelProvider().createOverrideMethodProposalLabel(proposal); ScriptCompletionProposal scriptProposal = new YiiclipseOverrideCompletionProposal(proposal, getSourceModule(), name, paramTypes, start, length, label, String.valueOf(proposal.getCompletion())); scriptProposal.setImage(getImage(getLabelProvider().createMethodImageDescriptor(proposal))); ProposalInfo info = new MethodProposalInfo(scriptProject, proposal); scriptProposal.setProposalInfo(info); scriptProposal.setRelevance(computeRelevance(proposal)); return scriptProposal; } @Override protected String getNatureId() { return PHPNature.ID; } @Override protected void processUnprocessedProposal(CompletionProposal proposal) { final IScriptCompletionProposal scriptProposal = createScriptCompletionProposal(proposal); if (scriptProposal != null) { addProposal(scriptProposal, proposal); } } /*- private void acceptPotentialMethodDeclarationLocal(CompletionProposal proposal) { if (getSourceModule() == null) return; // String prefix = String.valueOf(proposal.getName()); // int completionStart = proposal.getReplaceStart(); // int completionEnd = proposal.getReplaceEnd(); // int relevance = computeRelevance(proposal); try { IModelElement element = getSourceModule().getElementAt(proposal .getCompletionLocation() + 1); if (element != null) { IType type = (IType) element.getAncestor(IModelElement.TYPE); if (type != null) { System.out.println("Add method here: "+proposal.getCompletion()); //GetterSetterCompletionProposal.evaluateProposals(type, // prefix, completionStart, completionEnd // - completionStart, relevance + 1, // fSuggestedMethodNames, fJavaProposals); // MethodCompletionProposal.evaluateProposals(type, prefix, // completionStart, completionEnd - completionStart, // relevance, fSuggestedMethodNames, fJavaProposals); } } } catch (CoreException e) { YiiclipseBundle.logError(e.getMessage(), e); } } */ }