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.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.TemplateEngine;
+import net.sourceforge.phpdt.internal.ui.text.template.contentassist.TemplateEngine;
+import net.sourceforge.phpdt.ui.IWorkingCopyManager;
+import net.sourceforge.phpeclipse.PHPeclipsePlugin;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextViewer;
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 {
+
+ private static class PHPDocCompletionProposalComparator implements
+ Comparator {
public int compare(Object o1, Object o2) {
- ICompletionProposal c1= (ICompletionProposal) o1;
- ICompletionProposal c2= (ICompletionProposal) o2;
+ ICompletionProposal c1 = (ICompletionProposal) o1;
+ ICompletionProposal c2 = (ICompletionProposal) o2;
return c1.getDisplayString().compareTo(c2.getDisplayString());
}
};
-
-// private IEditorPart fEditor;
-// private IWorkingCopyManager fManager;
+
+ // 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$
+
+ private IEditorPart fEditor;
+
+ protected IWorkingCopyManager fManager;
+
+ public PHPDocCompletionProcessor(IEditorPart editor) {
+ fEditor = editor;
+ fManager = PHPeclipsePlugin.getDefault().getWorkingCopyManager();
+
+ // fEditor= editor;
+ // fManager= JavaPlugin.getDefault().getWorkingCopyManager();
+ TemplateContextType contextType = PHPeclipsePlugin.getDefault()
+ .getTemplateContextRegistry().getContextType("phpdoc"); //$NON-NLS-1$
if (contextType != null)
- fTemplateEngine= new TemplateEngine(contextType);
- fRestrictToMatchingCase= false;
-
- fComparator= new PHPCompletionProposalComparator();
+ 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.
+ * @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.
+ * Tells this processor to restrict is proposals to those starting with
+ * matching cases.
*
- * @param restrict <code>true</code> if proposals should be restricted
+ * @param restrict
+ * <code>true</code> if proposals should be restricted
*/
public void restrictProposalsToMatchingCases(boolean restrict) {
- fRestrictToMatchingCase= restrict;
+ fRestrictToMatchingCase = restrict;
}
-
+
/**
* @see IContentAssistProcessor#getErrorMessage()
*/
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
+ * @param activationSet
+ * the activation set
*/
- public void setCompletionProposalAutoActivationCharacters(char[] activationSet) {
- fProposalAutoActivationSet= activationSet;
+ public void setCompletionProposalAutoActivationCharacters(
+ char[] activationSet) {
+ fProposalAutoActivationSet = activationSet;
}
/**
* @see IContentAssistProcessor#computeContextInformation(ITextViewer, int)
*/
- public IContextInformation[] computeContextInformation(ITextViewer viewer, int offset) {
+ 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);
-// }
+ 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();
+ // try {
+ fTemplateEngine.reset();
+ fTemplateEngine.complete(viewer, documentOffset, unit);
+ // } catch (JavaModelException x) {
+ // }
+
+ IPHPCompletionProposal[] templateResults = fTemplateEngine
+ .getResults();
if (results.length == 0) {
- results= templateResults;
+ 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;
+ 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.
+ * 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;
+ return proposals;
}
}
\ No newline at end of file