Refactored packagename to net.sourceforge.phpdt.internal.compiler.ast
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / php / PHPCompletionProcessor.java
index 2de1ec7..7154b21 100644 (file)
@@ -29,6 +29,7 @@ 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.DefaultErrorHandlingPolicies;
+import net.sourceforge.phpdt.internal.compiler.ast.CompilationUnitDeclaration;
 import net.sourceforge.phpdt.internal.compiler.impl.CompilerOptions;
 import net.sourceforge.phpdt.internal.compiler.parser.Scanner;
 import net.sourceforge.phpdt.internal.compiler.parser.SyntaxError;
@@ -36,6 +37,8 @@ import net.sourceforge.phpdt.internal.compiler.parser.UnitParser;
 import net.sourceforge.phpdt.internal.compiler.parser.VariableInfo;
 import net.sourceforge.phpdt.internal.compiler.problem.DefaultProblemFactory;
 import net.sourceforge.phpdt.internal.compiler.problem.ProblemReporter;
+import net.sourceforge.phpdt.internal.core.CompilationUnit;
+import net.sourceforge.phpdt.internal.core.SourceType;
 import net.sourceforge.phpdt.internal.corext.template.php.JavaContext;
 import net.sourceforge.phpdt.internal.corext.template.php.JavaContextType;
 import net.sourceforge.phpdt.internal.ui.text.PHPCodeReader;
@@ -49,7 +52,6 @@ import net.sourceforge.phpdt.internal.ui.text.template.contentassist.TemplateEng
 import net.sourceforge.phpdt.ui.IWorkingCopyManager;
 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
 import net.sourceforge.phpeclipse.builder.IdentifierIndexManager;
-import net.sourceforge.phpeclipse.internal.compiler.ast.CompilationUnitDeclaration;
 import net.sourceforge.phpeclipse.phpeditor.PHPEditor;
 import net.sourceforge.phpeclipse.phpeditor.PHPSyntaxRdr;
 
@@ -71,9 +73,6 @@ import org.eclipse.swt.graphics.Point;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IFileEditorInput;
 
-// import com.quantum.ExternalInterface;
-// import com.quantum.util.connection.NotConnectedException;
-
 /**
  * Example PHP completion processor.
  */
@@ -154,44 +153,40 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                }
        };
 
-       private class TableName {
-               String fTableName;
-
-               TableName() {
-                       fTableName = null;
-               }
-
-               /**
-                * @return Returns the tableName.
-                */
-               public String getTableName() {
-                       if (fTableName == null) {
-                               return "<!--no-table-->";
-                       }
-                       return fTableName;
-               }
-
-               /**
-                * @param tableName
-                *          The tableName to set.
-                */
-               public void setTableName(String tableName) {
-                       fTableName = tableName;
-               }
-       }
+//     private class TableName {
+//             String fTableName;
+//
+//             TableName() {
+//                     fTableName = null;
+//             }
+//
+//             /**
+//              * @return Returns the tableName.
+//              */
+//             public String getTableName() {
+//                     if (fTableName == null) {
+//                             return "<!--no-table-->";
+//                     }
+//                     return fTableName;
+//             }
+//
+//             /**
+//              * @param tableName
+//              *          The tableName to set.
+//              */
+//             public void setTableName(String tableName) {
+//                     fTableName = tableName;
+//             }
+//     }
 
        private char[] fProposalAutoActivationSet;
 
-       protected IContextInformationValidator fValidator = null;// = new
-
-       // Validator();
+       protected IContextInformationValidator fValidator = null;
 
        private TemplateEngine fTemplateEngine;
 
        private PHPCompletionProposalComparator fComparator;
 
-       private int fNumberOfComputedResults = 0;
-
        private IEditorPart fEditor;
 
        protected IWorkingCopyManager fManager;
@@ -207,7 +202,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
 
        /**
         * Tells this processor to order the proposals alphabetically.
-        * 
+        *
         * @param order
         *          <code>true</code> if proposals should be ordered.
         */
@@ -218,7 +213,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
        /**
         * Sets this processor's set of characters triggering the activation of the
         * completion proposal computation.
-        * 
+        *
         * @param activationSet
         *          the activation set
         */
@@ -234,10 +229,11 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                return internalComputeCompletionProposals(viewer, documentOffset, contextInformationPosition);
        }
 
-       private int getLastToken(List list, ITextViewer viewer, int completionPosition, JavaContext context, TableName tableName) {
+       private int getLastToken(List list, ITextViewer viewer, int completionPosition, JavaContext context) {
+//                     TableName tableName) {
                IDocument document = viewer.getDocument();
                int start = context.getStart();
-               int end = context.getEnd();
+//             int end = context.getEnd();
                String startText;
                int lastSignificantToken = ITerminalSymbols.TokenNameEOF;
                try {
@@ -266,7 +262,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                                }
                                int token = ITerminalSymbols.TokenNameEOF;
                                // token = getLastSQLToken(startText);
-                               tableName.setTableName(getLastSQLTableName(startText));
+//                             tableName.setTableName(getLastSQLTableName(startText));
                                Scanner scanner = ToolFactory.createScanner(false, false, false);
                                scanner.setSource(startText.toCharArray());
                                scanner.setPHPMode(true);
@@ -336,184 +332,150 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                return "";
        }
 
-       private String getLastSQLTableName(String startText) {
-               int token;
-               // scan for sql identifiers
-               char ch = ' ';
-               int currentSQLPosition = startText.length();
-               int identEnd = -1;
-               String ident = null;
-               boolean whiteSpace = true;
-               try {
-                       while (true) {
-                               ch = startText.charAt(--currentSQLPosition);
-                               if (Scanner.isSQLIdentifierPart(ch)) {
-                                       // if (ch >= 'A' && ch <= 'Z') {
-                                       if (identEnd < 0) {
-                                               identEnd = currentSQLPosition + 1;
-                                       }
-                                       // } else if (ch >= 'a' && ch <= 'z') {
-                                       // if (identEnd < 0) {
-                                       // identEnd = currentSQLPosition + 1;
-                                       // }
-                               } else if (identEnd >= 0) {
-                                       ident = startText.substring(currentSQLPosition + 1, identEnd);
-                                       // select -- from -- where --
-                                       // update -- set -- where --
-                                       // insert into -- ( -- ) values ( -- )
-                                       if (ident.length() >= 4 && ident.length() <= 6) {
-                                               ident = ident.toLowerCase();
-                                               switch (ident.length()) {
-                                               // case 3 :
-                                               // if (ident.equals("set")) {
-                                               // // System.out.println("set");
-                                               // token = ITerminalSymbols.TokenNameSQLset;
-                                               // return token;
-                                               // }
-                                               // break;
-                                               case 4:
-                                                       if (ident.equals("from")) {
-                                                               // System.out.println("from");
-                                                               token = ITerminalSymbols.TokenNameSQLfrom;
-                                                               return getSQLTableName(startText, identEnd);
-                                                       } else if (ident.equals("into")) {
-                                                               // System.out.println("into");
-                                                               token = ITerminalSymbols.TokenNameSQLinto;
-                                                               return getSQLTableName(startText, identEnd);
-                                                       }
-                                                       break;
-                                               // case 5 :
-                                               // if (ident.equals("where")) {
-                                               // // System.out.println("where");
-                                               // token = ITerminalSymbols.TokenNameSQLwhere;
-                                               // return token;
-                                               // }
-                                               // break;
-                                               case 6:
-                                                       // if (ident.equals("select")) {
-                                                       // // System.out.println("select");
-                                                       // token = ITerminalSymbols.TokenNameSQLselect;
-                                                       // return token;
-                                                       // } else if (ident.equals("insert")) {
-                                                       // // System.out.println("insert");
-                                                       // token = ITerminalSymbols.TokenNameSQLinsert;
-                                                       // return token;
-                                                       // } else
-                                                       if (ident.equals("update")) {
-                                                               // System.out.println("update");
-                                                               token = ITerminalSymbols.TokenNameSQLupdate;
-                                                               return getSQLTableName(startText, identEnd);
-                                                       }
-                                                       // else if (ident.equals("values")) {
-                                                       // // System.out.println("values");
-                                                       // token = ITerminalSymbols.TokenNameSQLvalues;
-                                                       // return token;
-                                                       // }
-                                                       break;
-                                               }
-                                       }
-                                       whiteSpace = false;
-                                       identEnd = -1;
-                               } else if (Character.isWhitespace(ch)) {
-                               } else {
-                                       whiteSpace = false;
-                               }
-                       }
-               } catch (IndexOutOfBoundsException e) {
-               }
-               return "<!--no-table-->";
-       }
+//     private String getLastSQLTableName(String startText) {
+//             // scan for sql identifiers
+//             char ch = ' ';
+//             int currentSQLPosition = startText.length();
+//             int identEnd = -1;
+//             String ident = null;
+//             try {
+//                     while (true) {
+//                             ch = startText.charAt(--currentSQLPosition);
+//                             if (Scanner.isSQLIdentifierPart(ch)) {
+//                                     // if (ch >= 'A' && ch <= 'Z') {
+//                                     if (identEnd < 0) {
+//                                             identEnd = currentSQLPosition + 1;
+//                                     }
+//                                     // } else if (ch >= 'a' && ch <= 'z') {
+//                                     // if (identEnd < 0) {
+//                                     // identEnd = currentSQLPosition + 1;
+//                                     // }
+//                             } else if (identEnd >= 0) {
+//                                     ident = startText.substring(currentSQLPosition + 1, identEnd);
+//                                     // select -- from -- where --
+//                                     // update -- set -- where --
+//                                     // insert into -- ( -- ) values ( -- )
+//                                     if (ident.length() >= 4 && ident.length() <= 6) {
+//                                             ident = ident.toLowerCase();
+//                                             switch (ident.length()) {
+//                                             // case 3 :
+//                                             // if (ident.equals("set")) {
+//                                             // // System.out.println("set");
+//                                             // token = ITerminalSymbols.TokenNameSQLset;
+//                                             // return token;
+//                                             // }
+//                                             // break;
+//                                             case 4:
+//                                                     if (ident.equals("from")) {
+//                                                             // System.out.println("from");
+//                                                             return getSQLTableName(startText, identEnd);
+//                                                     } else if (ident.equals("into")) {
+//                                                             // System.out.println("into");
+//                                                             return getSQLTableName(startText, identEnd);
+//                                                     }
+//                                                     break;
+//                                             case 6:
+//                                                     if (ident.equals("update")) {
+//                                                             // System.out.println("update");
+//                                                             return getSQLTableName(startText, identEnd);
+//                                                     }
+//                                                     break;
+//                                             }
+//                                     }
+//                                     identEnd = -1;
+//                             } else if (Character.isWhitespace(ch)) {
+//                             }
+//                     }
+//             } catch (IndexOutOfBoundsException e) {
+//             }
+//             return "<!--no-table-->";
+//     }
 
        /**
         * Detect the last significant SQL token in the text before the completion
-        * 
+        *
         * @param startText
         */
-       private int getLastSQLToken(String startText) {
-               int token;
-               // scan for sql identifiers
-               char ch = ' ';
-               int currentSQLPosition = startText.length();
-               int identEnd = -1;
-               String ident = null;
-               boolean whiteSpace = true;
-               try {
-                       while (true) {
-                               ch = startText.charAt(--currentSQLPosition);
-                               if (ch >= 'A' && ch <= 'Z') {
-                                       if (identEnd < 0) {
-                                               identEnd = currentSQLPosition + 1;
-                                       }
-                               } else if (ch >= 'a' && ch <= 'z') {
-                                       if (identEnd < 0) {
-                                               identEnd = currentSQLPosition + 1;
-                                       }
-                               } else if (identEnd >= 0) {
-                                       ident = startText.substring(currentSQLPosition + 1, identEnd);
-                                       // select -- from -- where --
-                                       // update -- set -- where --
-                                       // insert into -- ( -- ) values ( -- )
-                                       if (ident.length() >= 3 && ident.length() <= 6) {
-                                               ident = ident.toLowerCase();
-                                               switch (ident.length()) {
-                                               case 3:
-                                                       if (ident.equals("set")) {
-                                                               // System.out.println("set");
-                                                               token = ITerminalSymbols.TokenNameSQLset;
-                                                               return token;
-                                                       }
-                                                       break;
-                                               case 4:
-                                                       if (ident.equals("from")) {
-                                                               // System.out.println("from");
-                                                               token = ITerminalSymbols.TokenNameSQLfrom;
-                                                               // getSQLTableName();
-                                                               return token;
-                                                       } else if (ident.equals("into")) {
-                                                               // System.out.println("into");
-                                                               token = ITerminalSymbols.TokenNameSQLinto;
-                                                               return token;
-                                                       }
-                                                       break;
-                                               case 5:
-                                                       if (ident.equals("where")) {
-                                                               // System.out.println("where");
-                                                               token = ITerminalSymbols.TokenNameSQLwhere;
-                                                               return token;
-                                                       }
-                                                       break;
-                                               case 6:
-                                                       if (ident.equals("select")) {
-                                                               // System.out.println("select");
-                                                               token = ITerminalSymbols.TokenNameSQLselect;
-                                                               return token;
-                                                       } else if (ident.equals("insert")) {
-                                                               // System.out.println("insert");
-                                                               token = ITerminalSymbols.TokenNameSQLinsert;
-                                                               return token;
-                                                       } else if (ident.equals("update")) {
-                                                               // System.out.println("update");
-                                                               token = ITerminalSymbols.TokenNameSQLupdate;
-                                                               return token;
-                                                       } else if (ident.equals("values")) {
-                                                               // System.out.println("values");
-                                                               token = ITerminalSymbols.TokenNameSQLvalues;
-                                                               return token;
-                                                       }
-                                                       break;
-                                               }
-                                       }
-                                       whiteSpace = false;
-                                       identEnd = -1;
-                               } else if (Character.isWhitespace(ch)) {
-                               } else {
-                                       whiteSpace = false;
-                               }
-                       }
-               } catch (IndexOutOfBoundsException e) {
-               }
-               return ITerminalSymbols.TokenNameEOF;
-       }
+//     private int getLastSQLToken(String startText) {
+//             int token;
+//             // scan for sql identifiers
+//             char ch = ' ';
+//             int currentSQLPosition = startText.length();
+//             int identEnd = -1;
+//             String ident = null;
+//             try {
+//                     while (true) {
+//                             ch = startText.charAt(--currentSQLPosition);
+//                             if (ch >= 'A' && ch <= 'Z') {
+//                                     if (identEnd < 0) {
+//                                             identEnd = currentSQLPosition + 1;
+//                                     }
+//                             } else if (ch >= 'a' && ch <= 'z') {
+//                                     if (identEnd < 0) {
+//                                             identEnd = currentSQLPosition + 1;
+//                                     }
+//                             } else if (identEnd >= 0) {
+//                                     ident = startText.substring(currentSQLPosition + 1, identEnd);
+//                                     // select -- from -- where --
+//                                     // update -- set -- where --
+//                                     // insert into -- ( -- ) values ( -- )
+//                                     if (ident.length() >= 3 && ident.length() <= 6) {
+//                                             ident = ident.toLowerCase();
+//                                             switch (ident.length()) {
+//                                             case 3:
+//                                                     if (ident.equals("set")) {
+//                                                             // System.out.println("set");
+//                                                             token = ITerminalSymbols.TokenNameSQLset;
+//                                                             return token;
+//                                                     }
+//                                                     break;
+//                                             case 4:
+//                                                     if (ident.equals("from")) {
+//                                                             // System.out.println("from");
+//                                                             token = ITerminalSymbols.TokenNameSQLfrom;
+//                                                             // getSQLTableName();
+//                                                             return token;
+//                                                     } else if (ident.equals("into")) {
+//                                                             // System.out.println("into");
+//                                                             token = ITerminalSymbols.TokenNameSQLinto;
+//                                                             return token;
+//                                                     }
+//                                                     break;
+//                                             case 5:
+//                                                     if (ident.equals("where")) {
+//                                                             // System.out.println("where");
+//                                                             token = ITerminalSymbols.TokenNameSQLwhere;
+//                                                             return token;
+//                                                     }
+//                                                     break;
+//                                             case 6:
+//                                                     if (ident.equals("select")) {
+//                                                             // System.out.println("select");
+//                                                             token = ITerminalSymbols.TokenNameSQLselect;
+//                                                             return token;
+//                                                     } else if (ident.equals("insert")) {
+//                                                             // System.out.println("insert");
+//                                                             token = ITerminalSymbols.TokenNameSQLinsert;
+//                                                             return token;
+//                                                     } else if (ident.equals("update")) {
+//                                                             // System.out.println("update");
+//                                                             token = ITerminalSymbols.TokenNameSQLupdate;
+//                                                             return token;
+//                                                     } else if (ident.equals("values")) {
+//                                                             // System.out.println("values");
+//                                                             token = ITerminalSymbols.TokenNameSQLvalues;
+//                                                             return token;
+//                                                     }
+//                                                     break;
+//                                             }
+//                                     }
+//                                     identEnd = -1;
+//                             }
+//                     }
+//             } catch (IndexOutOfBoundsException e) {
+//             }
+//             return ITerminalSymbols.TokenNameEOF;
+//     }
 
        private ICompletionProposal[] internalComputeCompletionProposals(ITextViewer viewer, int offset, int contextOffset) {
                ICompilationUnit unit = fManager.getWorkingCopy(fEditor.getEditorInput());
@@ -571,13 +533,13 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                // HashMap typeVariables = null;
                HashMap unitVariables = null;
                ICompilationUnit compilationUnit = (ICompilationUnit) context.findEnclosingElement(IJavaElement.COMPILATION_UNIT);
-               // if (compilationUnit != null) {
-               // unitVariables = ((CompilationUnit) compilationUnit).variables;
-               // }
-               // IType type = (IType) context.findEnclosingElement(IJavaElement.TYPE);
-               // if (type != null) {
-               // typeVariables = ((SourceType) type).variables;
-               // }
+//              if (compilationUnit != null) {
+//              unitVariables = ((CompilationUnit) compilationUnit).variables;
+//              }
+                IType type = (IType) context.findEnclosingElement(IJavaElement.TYPE);
+                if (type != null) {
+//              typeVariables = ((SourceType) type).variables;
+                }
                IMethod method = (IMethod) context.findEnclosingElement(IJavaElement.METHOD);
                // if (method != null) {
                // methodVariables = ((SourceMethod) method).variables;
@@ -586,9 +548,8 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                boolean emptyPrefix = prefix == null || prefix.equals("");
                IPHPCompletionProposal[] localVariableResults = new IPHPCompletionProposal[0];
 
-               if (!emptyPrefix && prefix.length() >= 1 && prefix.charAt(0) == '$') { // php
-                       // Variable
-                       // ?
+               if (!emptyPrefix && prefix.length() >= 1 && prefix.charAt(0) == '$') {
+                       // php Variable ?
                        String lowerCasePrefix = prefix.toLowerCase();
                        HashSet localVariables = new HashSet();
                        if (compilationUnit != null) {
@@ -604,10 +565,10 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                        }
                }
 
-               TableName sqlTable = new TableName();
+//             TableName sqlTable = new TableName();
                ArrayList list = new ArrayList();
                list.add(null);
-               int lastSignificantToken = getLastToken(list, viewer, offset, context, sqlTable);
+               int lastSignificantToken = getLastToken(list, viewer, offset, context); //, sqlTable);
                boolean useClassMembers = (lastSignificantToken == ITerminalSymbols.TokenNameMINUS_GREATER)
                                || (lastSignificantToken == ITerminalSymbols.TokenNameVariable) || (lastSignificantToken == ITerminalSymbols.TokenNamenew)
                                || (lastSignificantToken == ITerminalSymbols.TokenNamethis_PHP_COMPLETION);
@@ -647,7 +608,6 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                                                                if (info != null && info.typeIdentifier != null) {
                                                                        typeRef = new String(info.typeIdentifier);
                                                                }
-
                                                        }
                                                }
                                                if (typeRef != null) {
@@ -668,7 +628,6 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                        IPHPCompletionProposal[] builtinResults = new IPHPCompletionProposal[0];
                        if ((!useClassMembers) && syntaxbuffer != null) {
                                BuiltInEngine builtinEngine;
-                               String proposal;
                                JavaContextType contextType = (JavaContextType) PHPeclipsePlugin.getDefault().getTemplateContextRegistry().getContextType(
                                                "php"); //$NON-NLS-1$
                                if (contextType != null) {
@@ -702,7 +661,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                        System.arraycopy(localVariableResults, 0, total, templateResults.length + identifierResults.length + builtinResults.length
                                        + declarationResults.length, localVariableResults.length);
                        results = total;
-                       fNumberOfComputedResults = (results == null ? 0 : results.length);
+//                     fNumberOfComputedResults = (results == null ? 0 : results.length);
                        /*
                         * 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.
@@ -911,13 +870,13 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
        // sqlList.add(new SQLProposal(columnNames[i], context, region, viewer,
        // PHPUiImages.get(PHPUiImages.IMG_TABLE)));
        // }
-       //        
+       //
        // sqlResults = new IPHPCompletionProposal[sqlList.size()];
        // for (int i = 0; i < sqlList.size(); i++) {
        // sqlResults[i] = (SQLProposal) sqlList.get(i);
        // }
        // } catch (Exception /* NotConnectedException */ e) {
-       //        
+       //
        // }
        // // }
        // }