Parser detects wrong include files now
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / php / HTMLCompletionProcessor.java
index 9323dae..91e1339 100644 (file)
@@ -7,7 +7,7 @@ http://www.eclipse.org/legal/cpl-v10.html
 
 Contributors:
     IBM Corporation - Initial implementation
-    Klaus Hartlage - www.eclipseproject.de
+    www.phpeclipse.de
 **********************************************************************/
 package net.sourceforge.phpeclipse.phpeditor.php;
 
@@ -15,11 +15,12 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-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;
@@ -30,7 +31,9 @@ import org.eclipse.jface.text.contentassist.IContextInformation;
 import org.eclipse.jface.text.contentassist.IContextInformationExtension;
 import org.eclipse.jface.text.contentassist.IContextInformationPresenter;
 import org.eclipse.jface.text.contentassist.IContextInformationValidator;
+import org.eclipse.jface.text.templates.TemplateContextType;
 import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.IEditorPart;
 
 /**
  * HTML completion processor.
@@ -111,17 +114,25 @@ public class HTMLCompletionProcessor implements IContentAssistProcessor {
 
   protected IContextInformationValidator fValidator = new Validator();
   private TemplateEngine fTemplateEngine;
+  private char[] fProposalAutoActivationSet;
   private PHPCompletionProposalComparator fComparator;
   private int fNumberOfComputedResults = 0;
 
-  public HTMLCompletionProcessor() {
+  private IEditorPart fEditor;
 
-    ContextType contextType = ContextTypeRegistry.getInstance().getContextType("html"); //$NON-NLS-1$
+  protected IWorkingCopyManager fManager;
+
+  public HTMLCompletionProcessor(IEditorPart editor) {
+      fEditor = editor;
+      fManager = PHPeclipsePlugin.getDefault().getWorkingCopyManager();
+      
+    TemplateContextType contextType = PHPeclipsePlugin.getDefault().getTemplateContextRegistry().getContextType("html"); //$NON-NLS-1$
     if (contextType != null)
       fTemplateEngine = new TemplateEngine(contextType);
 
     fComparator = new PHPCompletionProposalComparator();
   }
+  
   /* (non-Javadoc)
    * Method declared on IContentAssistProcessor
    */
@@ -132,12 +143,13 @@ public class HTMLCompletionProcessor implements IContentAssistProcessor {
 
   private ICompletionProposal[] internalComputeCompletionProposals(ITextViewer viewer, int offset, int contextOffset) {
     IDocument document = viewer.getDocument();
+    ICompilationUnit unit= fManager.getWorkingCopy(fEditor.getEditorInput());
     
     if (fTemplateEngine != null) {
       ICompletionProposal[] results;
       //      try {
       fTemplateEngine.reset();
-      fTemplateEngine.complete(viewer, offset); //, unit);
+      fTemplateEngine.complete(viewer, offset, unit);
       //      } catch (JavaModelException x) {
       //        Shell shell= viewer.getTextWidget().getShell();
       //        ErrorDialog.openError(shell, JavaTextMessages.getString("CompletionProcessor.error.accessing.title"), JavaTextMessages.getString("CompletionProcessor.error.accessing.message"), x.getStatus()); //$NON-NLS-2$ //$NON-NLS-1$
@@ -209,13 +221,32 @@ public class HTMLCompletionProcessor implements IContentAssistProcessor {
     return proposals;
   }
 
-  /* (non-Javadoc)
-   * Method declared on IContentAssistProcessor
+  /**
+   * 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);
+  }
+  
+  /**
+   * @see IContentAssistProcessor#getCompletionProposalAutoActivationCharacters()
    */
   public char[] getCompletionProposalAutoActivationCharacters() {
-    return new char[] { '<', '&', '#' };
+    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;
+  }
+  
   /* (non-Javadoc)
    * Method declared on IContentAssistProcessor
    */