--- /dev/null
+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.internal.corext.template.ContextType;
+import net.sourceforge.phpdt.internal.corext.template.ContextTypeRegistry;
+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.TemplateEngine;
+
+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.ui.IEditorPart;
+
+/**
+ * Simple PHPDoc completion processor.
+ */
+public class PHPDocCompletionProcessor implements IContentAssistProcessor {
+
+ private static class JavaDocCompletionProposalComparator 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;
+
+
+ public PHPDocCompletionProcessor() {// (IEditorPart editor) {
+
+// fEditor= editor;
+// fManager= JavaPlugin.getDefault().getWorkingCopyManager();
+ ContextType contextType= ContextTypeRegistry.getInstance().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 <code>true</code> 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 <code>true</code> 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;
+ }
+}
\ No newline at end of file