Syntax highlighting is changeable.
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / php / PHPCompletionProcessor.java
index 84bfadb..5d50dee 100644 (file)
@@ -20,14 +20,14 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.SortedMap;
 
+import net.sourceforge.phpdt.core.ICompilationUnit;
 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.parser.Scanner;
-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;
-import net.sourceforge.phpdt.internal.corext.template.php.PHPUnitContext;
+import net.sourceforge.phpdt.internal.corext.template.php.JavaContext;
+import net.sourceforge.phpdt.internal.corext.template.php.JavaContextType;
 import net.sourceforge.phpdt.internal.ui.PHPUiImages;
 import net.sourceforge.phpdt.internal.ui.text.java.IPHPCompletionProposal;
 import net.sourceforge.phpdt.internal.ui.text.java.PHPCompletionProposalComparator;
@@ -35,7 +35,7 @@ import net.sourceforge.phpdt.internal.ui.text.template.BuiltInEngine;
 import net.sourceforge.phpdt.internal.ui.text.template.DeclarationEngine;
 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.internal.ui.text.template.contentassist.TemplateEngine;
 import net.sourceforge.phpdt.ui.IWorkingCopyManager;
 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
 import net.sourceforge.phpeclipse.builder.IdentifierIndexManager;
@@ -58,7 +58,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.swt.graphics.Point;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IFileEditorInput;
 
@@ -190,7 +192,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
   public PHPCompletionProcessor(IEditorPart editor) {
     fEditor = editor;
     fManager = PHPeclipsePlugin.getDefault().getWorkingCopyManager();
-    ContextType contextType = ContextTypeRegistry.getInstance().getContextType(
+    TemplateContextType contextType = PHPeclipsePlugin.getDefault().getTemplateContextRegistry().getContextType(
         "php"); //$NON-NLS-1$
     if (contextType != null)
       fTemplateEngine = new TemplateEngine(contextType);
@@ -230,7 +232,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
   }
 
   private int getLastToken(ITextViewer viewer, int completionPosition,
-      PHPUnitContext context, TableName tableName) {
+      JavaContext context, TableName tableName) {
     IDocument document = viewer.getDocument();
     int start = context.getStart();
     int end = context.getEnd();
@@ -514,7 +516,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
 
   private ICompletionProposal[] internalComputeCompletionProposals(
       ITextViewer viewer, int offset, int contextOffset) {
-
+    ICompilationUnit unit= fManager.getWorkingCopy(fEditor.getEditorInput());
     IDocument document = viewer.getDocument();
     Object[] identifiers = null;
     IFile file = null;
@@ -525,19 +527,25 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
         editor = (PHPEditor) fEditor;
         file = ((IFileEditorInput) editor.getEditorInput()).getFile();
         project = file.getProject();
-        //        outlinePage = editor.getfOutlinePage();
-        // TODO: get the identifiers from the new model
-        //        if (outlinePage instanceof PHPContentOutlinePage) {
-        //          identifiers = ((PHPContentOutlinePage) outlinePage).getVariables();
-        //        }
       }
     }
     
-    ContextType phpContextType = ContextTypeRegistry.getInstance()
-        .getContextType("php"); //$NON-NLS-1$
-    ((CompilationUnitContextType) phpContextType).setContextParameters(
-        document, offset, 0);
-    PHPUnitContext context = (PHPUnitContext) phpContextType.createContext();
+    Point selection= viewer.getSelectedRange();
+
+       // remember selected text
+       String selectedText= null;
+       if (selection.y != 0) {
+               try {
+                       selectedText= document.get(selection.x, selection.y);
+               } catch (BadLocationException e) {}
+       }
+
+    JavaContextType phpContextType = (JavaContextType)PHPeclipsePlugin.getDefault().getTemplateContextRegistry().getContextType(
+    "php"); //$NON-NLS-1$
+//    ((CompilationUnitContextType) phpContextType).setContextParameters(
+//        document, offset, 0);
+    JavaContext context = (JavaContext) phpContextType.createContext(document, offset,selection.y,unit);
+    context.setVariable("selection", selectedText); //$NON-NLS-1$
     String prefix = context.getKey();
     TableName sqlTable = new TableName();
     int lastSignificantToken = getLastToken(viewer, offset, context, sqlTable);
@@ -551,17 +559,17 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
       ICompletionProposal[] results;
       if (!emptyPrefix) {
         fTemplateEngine.reset();
-        fTemplateEngine.complete(viewer, offset); //, unit);
+        fTemplateEngine.complete(viewer, offset, unit);
         templateResults = fTemplateEngine.getResults();
       }
       IPHPCompletionProposal[] identifierResults = new IPHPCompletionProposal[0];
       if ((!useClassMembers) && identifiers != null) {
         IdentifierEngine identifierEngine;
-        ContextType contextType = ContextTypeRegistry.getInstance()
-            .getContextType("php"); //$NON-NLS-1$
+        JavaContextType contextType = (JavaContextType)PHPeclipsePlugin.getDefault().getTemplateContextRegistry().getContextType(
+        "php"); //$NON-NLS-1$
         if (contextType != null) {
           identifierEngine = new IdentifierEngine(contextType);
-          identifierEngine.complete(viewer, offset, identifiers);
+          identifierEngine.complete(viewer, offset, identifiers,unit);
           identifierResults = identifierEngine.getResults();
         }
       }
@@ -569,15 +577,15 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
       IPHPCompletionProposal[] declarationResults = new IPHPCompletionProposal[0];
       if (project != null) {
         DeclarationEngine declarationEngine;
-        ContextType contextType = ContextTypeRegistry.getInstance()
-            .getContextType("php"); //$NON-NLS-1$
+        JavaContextType contextType = (JavaContextType)PHPeclipsePlugin.getDefault().getTemplateContextRegistry().getContextType(
+        "php"); //$NON-NLS-1$
         if (contextType != null) {
           IdentifierIndexManager indexManager = PHPeclipsePlugin.getDefault()
               .getIndexManager(project);
           SortedMap sortedMap = indexManager.getIdentifierMap();
           declarationEngine = new DeclarationEngine(project, contextType,
               lastSignificantToken, file);
-          declarationEngine.complete(viewer, offset, sortedMap);
+          declarationEngine.complete(viewer, offset, sortedMap,unit);
           declarationResults = declarationEngine.getResults();
         }
       }
@@ -587,11 +595,11 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
       if ((!useClassMembers) && syntaxbuffer != null) {
         BuiltInEngine builtinEngine;
         String proposal;
-        ContextType contextType = ContextTypeRegistry.getInstance()
-            .getContextType("php"); //$NON-NLS-1$
+        JavaContextType contextType = (JavaContextType)PHPeclipsePlugin.getDefault().getTemplateContextRegistry().getContextType(
+        "php"); //$NON-NLS-1$
         if (contextType != null) {
           builtinEngine = new BuiltInEngine(contextType);
-          builtinEngine.complete(viewer, offset, syntaxbuffer);
+          builtinEngine.complete(viewer, offset, syntaxbuffer, unit);
           builtinResults = builtinEngine.getResults();
         }
       }