misc changes
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / php / PHPCompletionProcessor.java
index 69f3124..84bfadb 100644 (file)
@@ -18,25 +18,12 @@ import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import java.util.Map;
 import java.util.SortedMap;
 
-import net.sourceforge.phpdt.core.IBuffer;
-import net.sourceforge.phpdt.core.ICompilationUnit;
-import net.sourceforge.phpdt.core.IJavaProject;
-import net.sourceforge.phpdt.core.JavaModelException;
 import net.sourceforge.phpdt.core.ToolFactory;
 import net.sourceforge.phpdt.core.compiler.ITerminalSymbols;
 import net.sourceforge.phpdt.core.compiler.InvalidInputException;
-import net.sourceforge.phpdt.internal.compiler.IProblemFactory;
-import net.sourceforge.phpdt.internal.compiler.SourceElementParser;
-import net.sourceforge.phpdt.internal.compiler.impl.CompilerOptions;
 import net.sourceforge.phpdt.internal.compiler.parser.Scanner;
-import net.sourceforge.phpdt.internal.compiler.problem.DefaultProblemFactory;
-import net.sourceforge.phpdt.internal.core.CompilationUnit;
-import net.sourceforge.phpdt.internal.core.CompilationUnitStructureRequestor;
-import net.sourceforge.phpdt.internal.core.JavaModelManager;
-import net.sourceforge.phpdt.internal.core.JavaProject;
 import net.sourceforge.phpdt.internal.corext.template.ContextType;
 import net.sourceforge.phpdt.internal.corext.template.ContextTypeRegistry;
 import net.sourceforge.phpdt.internal.corext.template.php.CompilationUnitContextType;
@@ -50,13 +37,12 @@ import net.sourceforge.phpdt.internal.ui.text.template.IdentifierEngine;
 import net.sourceforge.phpdt.internal.ui.text.template.SQLProposal;
 import net.sourceforge.phpdt.internal.ui.text.template.TemplateEngine;
 import net.sourceforge.phpdt.ui.IWorkingCopyManager;
-import net.sourceforge.phpeclipse.IPreferenceConstants;
 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
 import net.sourceforge.phpeclipse.builder.IdentifierIndexManager;
-import net.sourceforge.phpeclipse.internal.compiler.ast.CompilationUnitDeclaration;
-import net.sourceforge.phpeclipse.overlaypages.Util;
 import net.sourceforge.phpeclipse.phpeditor.PHPEditor;
 import net.sourceforge.phpeclipse.phpeditor.PHPSyntaxRdr;
+import net.sourceforge.phpeclipse.ui.IPreferenceConstants;
+import net.sourceforge.phpeclipse.ui.overlaypages.Util;
 
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
@@ -282,12 +268,24 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
         scanner.setPHPMode(true);
         int beforeLastToken = ITerminalSymbols.TokenNameEOF;
         int lastToken = ITerminalSymbols.TokenNameEOF;
+        char[] ident;
         try {
           token = scanner.getNextToken();
           lastToken = token;
           while (token != ITerminalSymbols.TokenNameERROR
               && token != ITerminalSymbols.TokenNameEOF) {
             beforeLastToken = lastToken;
+            if (lastToken==ITerminalSymbols.TokenNameVariable) {
+              ident = scanner.getCurrentTokenSource();
+              if (ident.length==5 &&
+                  ident[0]=='$' &&
+                  ident[1]=='t' &&
+                  ident[2]=='h' &&
+                  ident[3]=='i' &&
+                  ident[4]=='s') {
+                beforeLastToken = ITerminalSymbols.TokenNamethis_PHP_COMPLETION;
+              }
+            }
             lastToken = token;
             //                                                         System.out.println(scanner.toStringAction(lastToken));
             token = scanner.getNextToken();
@@ -534,61 +532,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
         //        }
       }
     }
-
-    final ICompilationUnit unit = fManager.getWorkingCopy(fEditor
-        .getEditorInput());
-
-    //  get buffer contents
-    final IBuffer buffer;
-    CompilationUnitDeclaration unitDecl=null;
-    try {
-      buffer = unit.getBuffer();
-
-      if (project != null && buffer != null) {
-
-        //     final char[] contents = buffer == null ? null :
-        // buffer.getCharacters();
-        //
-        //     // generate structure and compute syntax problems if needed
-        //     CompilationUnitStructureRequestor requestor = new
-        // CompilationUnitStructureRequestor(this, unitInfo, newElements);
-        //     JavaModelManager.PerWorkingCopyInfo perWorkingCopyInfo =
-        // getPerWorkingCopyInfo();
-        //     IJavaProject project = getJavaProject();
-        //     boolean computeProblems =
-        // JavaProject.hasJavaNature(project.getProject()) && perWorkingCopyInfo
-        // != null && perWorkingCopyInfo.isActive();
-        IProblemFactory problemFactory = new DefaultProblemFactory();
-        //     Map options = project.getOptions(true);
-        SourceElementParser parser = new SourceElementParser(null,
-            problemFactory, new CompilerOptions(null));
-        //, true/*report local declarations*/);
-        unitDecl = parser.parseCompletionUnit(
-            new net.sourceforge.phpdt.internal.compiler.env.ICompilationUnit() {
-              public char[] getContents() {
-                return buffer.getCharacters();
-              }
-
-              public char[] getMainTypeName() {
-                return null;
-              }
-
-              public char[][] getPackageName() {
-                return null;
-              }
-
-              public char[] getFileName() {
-                return null;
-              }
-            }, true /* full parse to find local elements */);
-
-      }
-//      System.out.println(unit.toString());
-    } catch (Exception e1) {
-      // TODO Auto-generated catch block
-      e1.printStackTrace();
-    }
-
+    
     ContextType phpContextType = ContextTypeRegistry.getInstance()
         .getContextType("php"); //$NON-NLS-1$
     ((CompilationUnitContextType) phpContextType).setContextParameters(
@@ -599,7 +543,8 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
     int lastSignificantToken = getLastToken(viewer, offset, context, sqlTable);
     boolean useClassMembers = (lastSignificantToken == ITerminalSymbols.TokenNameMINUS_GREATER)
         || (lastSignificantToken == ITerminalSymbols.TokenNameVariable)
-        || (lastSignificantToken == ITerminalSymbols.TokenNamenew);
+        || (lastSignificantToken == ITerminalSymbols.TokenNamenew)
+        || (lastSignificantToken == ITerminalSymbols.TokenNamethis_PHP_COMPLETION);
     boolean emptyPrefix = prefix == null || prefix.equals("");
     if (fTemplateEngine != null) {
       IPHPCompletionProposal[] templateResults = new IPHPCompletionProposal[0];
@@ -630,7 +575,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
           IdentifierIndexManager indexManager = PHPeclipsePlugin.getDefault()
               .getIndexManager(project);
           SortedMap sortedMap = indexManager.getIdentifierMap();
-          declarationEngine = new DeclarationEngine(contextType,
+          declarationEngine = new DeclarationEngine(project, contextType,
               lastSignificantToken, file);
           declarationEngine.complete(viewer, offset, sortedMap);
           declarationResults = declarationEngine.getResults();