package net.sourceforge.phpdt.internal.ui.text.phpdoc; /* * (c) Copyright IBM Corp. 2000, 2001. * All Rights Reserved. */ import java.util.Arrays; //import java.util.Comparator; import net.sourceforge.phpdt.core.ICompilationUnit; import net.sourceforge.phpdt.internal.ui.text.java.IPHPCompletionProposal; import net.sourceforge.phpdt.internal.ui.text.java.PHPCompletionProposalComparator; import net.sourceforge.phpdt.internal.ui.text.template.contentassist.TemplateEngine; import net.sourceforge.phpdt.ui.IWorkingCopyManager; import net.sourceforge.phpeclipse.ui.WebUI; //import net.sourceforge.phpeclipse.PHPeclipsePlugin; //import org.eclipse.jface.text.IDocument; 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.IContextInformation; import org.eclipse.jface.text.contentassist.IContextInformationValidator; import org.eclipse.jface.text.templates.TemplateContextType; import org.eclipse.ui.IEditorPart; /** * Simple PHPDoc completion processor. */ public class PHPDocCompletionProcessor implements IContentAssistProcessor { // private static class PHPDocCompletionProposalComparator implements // Comparator { // public int compare(Object o1, Object o2) { // ICompletionProposal c1 = (ICompletionProposal) o1; // ICompletionProposal c2 = (ICompletionProposal) o2; // return c1.getDisplayString().compareTo(c2.getDisplayString()); // } // }; // private IEditorPart fEditor; // private IWorkingCopyManager fManager; private char[] fProposalAutoActivationSet; private PHPCompletionProposalComparator fComparator; private TemplateEngine fTemplateEngine; //private boolean fRestrictToMatchingCase; private IEditorPart fEditor; protected IWorkingCopyManager fManager; public PHPDocCompletionProcessor(IEditorPart editor) { fEditor = editor; fManager = WebUI.getDefault().getWorkingCopyManager(); // fEditor= editor; // fManager= JavaPlugin.getDefault().getWorkingCopyManager(); TemplateContextType contextType = WebUI.getDefault() .getTemplateContextRegistry().getContextType("phpdoc"); //$NON-NLS-1$ if (contextType != null) fTemplateEngine = new TemplateEngine(contextType); //fRestrictToMatchingCase = false; fComparator = new PHPCompletionProposalComparator(); } /** * Tells this processor to order the proposals alphabetically. * * @param order * true if proposals should be ordered. */ public void orderProposalsAlphabetically(boolean order) { fComparator.setOrderAlphabetically(order); } /** * Tells this processor to restrict is proposals to those starting with * matching cases. * * @param restrict * true if proposals should be restricted */ public void restrictProposalsToMatchingCases(boolean restrict) { //fRestrictToMatchingCase = restrict; } /** * @see IContentAssistProcessor#getErrorMessage() */ public String getErrorMessage() { return null; } /** * @see IContentAssistProcessor#getContextInformationValidator() */ public IContextInformationValidator getContextInformationValidator() { return null; } /** * @see IContentAssistProcessor#getContextInformationAutoActivationCharacters() */ public char[] getContextInformationAutoActivationCharacters() { return null; } /** * @see IContentAssistProcessor#getCompletionProposalAutoActivationCharacters() */ public char[] getCompletionProposalAutoActivationCharacters() { return fProposalAutoActivationSet; } /** * Sets this processor's set of characters triggering the activation of the * completion proposal computation. * * @param activationSet * the activation set */ public void setCompletionProposalAutoActivationCharacters( char[] activationSet) { fProposalAutoActivationSet = activationSet; } /** * @see IContentAssistProcessor#computeContextInformation(ITextViewer, int) */ public IContextInformation[] computeContextInformation(ITextViewer viewer, int offset) { return null; } /** * @see IContentAssistProcessor#computeCompletionProposals(ITextViewer, int) */ public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int documentOffset) { ICompilationUnit unit = fManager.getWorkingCopy(fEditor .getEditorInput()); //IDocument document = viewer.getDocument(); IPHPCompletionProposal[] results = new IPHPCompletionProposal[0]; // try { // if (unit != null) { // // int offset= documentOffset; // int length= 0; // // Point selection= viewer.getSelectedRange(); // if (selection.y > 0) { // offset= selection.x; // length= selection.y; // } // // JavaDocCompletionEvaluator evaluator= new // JavaDocCompletionEvaluator(unit, document, offset, length); // evaluator.restrictProposalsToMatchingCases(fRestrictToMatchingCase); // results= evaluator.computeProposals(); // } // } catch (JavaModelException e) { // JavaPlugin.log(e); // } if (fTemplateEngine != null) { // try { fTemplateEngine.reset(); fTemplateEngine.complete(viewer, documentOffset, unit); // } catch (JavaModelException x) { // } IPHPCompletionProposal[] templateResults = fTemplateEngine .getResults(); if (results.length == 0) { results = templateResults; } else { // concatenate arrays IPHPCompletionProposal[] total = new IPHPCompletionProposal[results.length + templateResults.length]; System.arraycopy(templateResults, 0, total, 0, templateResults.length); System.arraycopy(results, 0, total, templateResults.length, results.length); results = total; } } /* * Order here and not in result collector to make sure that the order * applies to all proposals and not just those of the compilation unit. */ return order(results); } /** * Order the given proposals. */ private IPHPCompletionProposal[] order(IPHPCompletionProposal[] proposals) { Arrays.sort(proposals, fComparator); return proposals; } }