1) Moved net.sourceforge.phpeclipse.ui\src\net\sourceforge\phpdt back to net.sourcefo...
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / php / PHPCompletionProcessor.java
index 7154b21..4638f76 100644 (file)
@@ -27,6 +27,7 @@ import net.sourceforge.phpdt.core.IType;
 import net.sourceforge.phpdt.core.JavaCore;
 import net.sourceforge.phpdt.core.ToolFactory;
 import net.sourceforge.phpdt.core.compiler.ITerminalSymbols;
+import net.sourceforge.phpdt.core.compiler.ITerminalSymbols.TokenName;
 import net.sourceforge.phpdt.core.compiler.InvalidInputException;
 import net.sourceforge.phpdt.internal.compiler.DefaultErrorHandlingPolicies;
 import net.sourceforge.phpdt.internal.compiler.ast.CompilationUnitDeclaration;
@@ -37,8 +38,6 @@ 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;
@@ -70,6 +69,7 @@ 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.IEditorInput;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IFileEditorInput;
 
@@ -111,7 +111,8 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
        // return false;
        // }
        // };
-       private static class ContextInformationWrapper implements IContextInformation, IContextInformationExtension {
+       private static class ContextInformationWrapper implements
+                       IContextInformation, IContextInformationExtension {
                private final IContextInformation fContextInformation;
 
                private int fPosition;
@@ -153,31 +154,31 @@ 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;
 
@@ -194,7 +195,8 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
        public PHPCompletionProcessor(IEditorPart editor) {
                fEditor = editor;
                fManager = PHPeclipsePlugin.getDefault().getWorkingCopyManager();
-               TemplateContextType contextType = PHPeclipsePlugin.getDefault().getTemplateContextRegistry().getContextType("php"); //$NON-NLS-1$
+               TemplateContextType contextType = PHPeclipsePlugin.getDefault()
+                               .getTemplateContextRegistry().getContextType("php"); //$NON-NLS-1$
                if (contextType != null)
                        fTemplateEngine = new TemplateEngine(contextType);
                fComparator = new PHPCompletionProposalComparator();
@@ -202,9 +204,9 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
 
        /**
         * Tells this processor to order the proposals alphabetically.
-        *
+        * 
         * @param order
-        *          <code>true</code> if proposals should be ordered.
+        *            <code>true</code> if proposals should be ordered.
         */
        public void orderProposalsAlphabetically(boolean order) {
                fComparator.setOrderAlphabetically(order);
@@ -213,42 +215,47 @@ 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
+        *            the activation set
         */
-       public void setCompletionProposalAutoActivationCharacters(char[] activationSet) {
+       public void setCompletionProposalAutoActivationCharacters(
+                       char[] activationSet) {
                fProposalAutoActivationSet = activationSet;
        }
 
        /*
         * (non-Javadoc) Method declared on IContentAssistProcessor
         */
-       public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int documentOffset) {
-               int contextInformationPosition = guessContextInformationPosition(viewer, documentOffset);
-               return internalComputeCompletionProposals(viewer, documentOffset, contextInformationPosition);
+       public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer,
+                       int documentOffset) {
+               int contextInformationPosition = guessContextInformationPosition(
+                               viewer, documentOffset);
+               return internalComputeCompletionProposals(viewer, documentOffset,
+                               contextInformationPosition);
        }
 
-       private int getLastToken(List list, ITextViewer viewer, int completionPosition, JavaContext context) {
-//                     TableName tableName) {
+       private TokenName 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;
+               TokenName lastSignificantToken = ITerminalSymbols.TokenName.EOF;
                try {
                        // begin search 2 lines behind of this
                        int j = start;
                        if (j != 0) {
                                char ch;
-                               while (j-- > 0) {
-                                       ch = document.getChar(j);
+                               while (j > 0) {
+                                       ch = document.getChar(--j);
                                        if (ch == '\n') {
                                                break;
                                        }
                                }
-                               while (j-- > 0) {
-                                       ch = document.getChar(j);
+                               while (j > 0) {
+                                       ch = document.getChar(--j);
                                        if (ch == '\n') {
                                                break;
                                        }
@@ -260,24 +267,28 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                                if (Scanner.DEBUG) {
                                        System.out.println(startText);
                                }
-                               int token = ITerminalSymbols.TokenNameEOF;
+                               TokenName token = ITerminalSymbols.TokenName.EOF;
                                // token = getLastSQLToken(startText);
-//                             tableName.setTableName(getLastSQLTableName(startText));
-                               Scanner scanner = ToolFactory.createScanner(false, false, false);
+                               // tableName.setTableName(getLastSQLTableName(startText));
+                               Scanner scanner = ToolFactory
+                                               .createScanner(false, false, false);
                                scanner.setSource(startText.toCharArray());
                                scanner.setPHPMode(true);
-                               int beforeLastToken = ITerminalSymbols.TokenNameEOF;
-                               int lastToken = ITerminalSymbols.TokenNameEOF;
+                               TokenName beforeLastToken = ITerminalSymbols.TokenName.EOF;
+                               TokenName lastToken = ITerminalSymbols.TokenName.EOF;
                                char[] ident = null;
                                try {
                                        token = scanner.getNextToken();
                                        lastToken = token;
-                                       while (token != ITerminalSymbols.TokenNameERROR && token != ITerminalSymbols.TokenNameEOF) {
+                                       while (token != ITerminalSymbols.TokenName.ERROR
+                                                       && token != ITerminalSymbols.TokenName.EOF) {
                                                beforeLastToken = lastToken;
-                                               if (token == ITerminalSymbols.TokenNameVariable) {
+                                               if (token == ITerminalSymbols.TokenName.VARIABLE) {
                                                        ident = scanner.getCurrentTokenSource();
-                                                       if (ident.length == 5 && ident[0] == '$' && ident[1] == 't' && ident[2] == 'h' && ident[3] == 'i' && ident[4] == 's') {
-                                                               token = ITerminalSymbols.TokenNamethis_PHP_COMPLETION;
+                                                       if (ident.length == 5 && ident[0] == '$'
+                                                                       && ident[1] == 't' && ident[2] == 'h'
+                                                                       && ident[3] == 'i' && ident[4] == 's') {
+                                                               token = ITerminalSymbols.TokenName.THIS_PHP_COMPLETION;
                                                        }
                                                }
                                                lastToken = token;
@@ -288,19 +299,19 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                                } catch (SyntaxError e) {
                                }
                                switch (lastToken) {
-                               case ITerminalSymbols.TokenNameMINUS_GREATER:
+                               case MINUS_GREATER:
                                        // dereferencing operator '->' found
-                                       lastSignificantToken = ITerminalSymbols.TokenNameMINUS_GREATER;
-                                       if (beforeLastToken == ITerminalSymbols.TokenNameVariable) {
-                                               lastSignificantToken = ITerminalSymbols.TokenNameVariable;
+                                       lastSignificantToken = ITerminalSymbols.TokenName.MINUS_GREATER;
+                                       if (beforeLastToken == ITerminalSymbols.TokenName.VARIABLE) {
+                                               lastSignificantToken = ITerminalSymbols.TokenName.VARIABLE;
                                                list.set(0, ident);
-                                       } else if (beforeLastToken == ITerminalSymbols.TokenNamethis_PHP_COMPLETION) {
-                                               lastSignificantToken = ITerminalSymbols.TokenNamethis_PHP_COMPLETION;
+                                       } else if (beforeLastToken == ITerminalSymbols.TokenName.THIS_PHP_COMPLETION) {
+                                               lastSignificantToken = ITerminalSymbols.TokenName.THIS_PHP_COMPLETION;
                                                list.set(0, ident);
                                        }
                                        break;
-                               case ITerminalSymbols.TokenNamenew:
-                                       lastSignificantToken = ITerminalSymbols.TokenNamenew;
+                               case NEW:
+                                       lastSignificantToken = ITerminalSymbols.TokenName.NEW;
                                        break;
                                }
                        }
@@ -320,165 +331,168 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                                        tableNameStart = currentCharacterPosition - 1;
                                } else {
                                        if (!Scanner.isPHPIdentifierPart(ch)) {
-                                               return sqlText.substring(tableNameStart, currentCharacterPosition - 1);
+                                               return sqlText.substring(tableNameStart,
+                                                               currentCharacterPosition - 1);
                                        }
                                }
                        }
                } catch (IndexOutOfBoundsException e) {
                        if (tableNameStart >= 0) {
-                               return sqlText.substring(tableNameStart, currentCharacterPosition - 1);
+                               return sqlText.substring(tableNameStart,
+                                               currentCharacterPosition - 1);
                        }
                }
                return "";
        }
 
-//     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-->";
-//     }
+       // 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.TokenName.SQLset;
+       // // 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;
-//             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());
+       // 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.TokenName.SQLset;
+       // return token;
+       // }
+       // break;
+       // case 4:
+       // if (ident.equals("from")) {
+       // // System.out.println("from");
+       // token = ITerminalSymbols.TokenName.SQLfrom;
+       // // getSQLTableName();
+       // return token;
+       // } else if (ident.equals("into")) {
+       // // System.out.println("into");
+       // token = ITerminalSymbols.TokenName.SQLinto;
+       // return token;
+       // }
+       // break;
+       // case 5:
+       // if (ident.equals("where")) {
+       // // System.out.println("where");
+       // token = ITerminalSymbols.TokenName.SQLwhere;
+       // return token;
+       // }
+       // break;
+       // case 6:
+       // if (ident.equals("select")) {
+       // // System.out.println("select");
+       // token = ITerminalSymbols.TokenName.SQLselect;
+       // return token;
+       // } else if (ident.equals("insert")) {
+       // // System.out.println("insert");
+       // token = ITerminalSymbols.TokenName.SQLinsert;
+       // return token;
+       // } else if (ident.equals("update")) {
+       // // System.out.println("update");
+       // token = ITerminalSymbols.TokenName.SQLupdate;
+       // return token;
+       // } else if (ident.equals("values")) {
+       // // System.out.println("values");
+       // token = ITerminalSymbols.TokenName.SQLvalues;
+       // return token;
+       // }
+       // break;
+       // }
+       // }
+       // identEnd = -1;
+       // }
+       // }
+       // } catch (IndexOutOfBoundsException e) {
+       // }
+       // return ITerminalSymbols.TokenName.EOF;
+       // }
+       private ICompletionProposal[] internalComputeCompletionProposals(
+                       ITextViewer viewer, int offset, int contextOffset) {
+               ICompilationUnit unit = fManager.getWorkingCopy(fEditor
+                               .getEditorInput());
                IDocument document = viewer.getDocument();
                IFile file = null;
                IProject project = null;
@@ -486,8 +500,13 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                        PHPEditor editor = null;
                        if (fEditor != null && (fEditor instanceof PHPEditor)) {
                                editor = (PHPEditor) fEditor;
-                               file = ((IFileEditorInput) editor.getEditorInput()).getFile();
-                               project = file.getProject();
+                               IEditorInput editorInput = editor.getEditorInput();
+                               if (editorInput instanceof IFileEditorInput) {
+                                       file = ((IFileEditorInput) editorInput).getFile();
+                                       project = file.getProject();
+                               } else {
+                                       return new ICompletionProposal[0];
+                               }
                        }
                }
 
@@ -505,7 +524,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                        // restrict auto activation for '>' character to '->' token
 
                        try {
-                               char ch = document.getChar(offset-1);
+                               char ch = document.getChar(offset - 1);
                                if (ch == '>') {
                                        for (int i = 0; i < fProposalAutoActivationSet.length; i++) {
                                                ch = fProposalAutoActivationSet[i];
@@ -523,24 +542,28 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                        }
                }
 
-               JavaContextType phpContextType = (JavaContextType) PHPeclipsePlugin.getDefault().getTemplateContextRegistry().getContextType(
-                               "php"); //$NON-NLS-1$
-               JavaContext context = (JavaContext) phpContextType.createContext(document, offset, selection.y, unit);
+               JavaContextType phpContextType = (JavaContextType) PHPeclipsePlugin
+                               .getDefault().getTemplateContextRegistry()
+                               .getContextType("php"); //$NON-NLS-1$
+               JavaContext context = (JavaContext) phpContextType.createContext(
+                               document, offset, selection.y, unit);
                context.setVariable("selection", selectedText); //$NON-NLS-1$
                String prefix = context.getKey();
 
                HashMap methodVariables = null;
                // 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;
-                }
-               IMethod method = (IMethod) context.findEnclosingElement(IJavaElement.METHOD);
+               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;
+               }
+               IMethod method = (IMethod) context
+                               .findEnclosingElement(IJavaElement.METHOD);
                // if (method != null) {
                // methodVariables = ((SourceMethod) method).variables;
                // }
@@ -554,24 +577,30 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                        HashSet localVariables = new HashSet();
                        if (compilationUnit != null) {
                                unitVariables = getUnitVariables(unitVariables, compilationUnit);
-                               getVariableProposals(localVariables, viewer, project, context, unitVariables, lowerCasePrefix, 94);
+                               getVariableProposals(localVariables, viewer, project, context,
+                                               unitVariables, lowerCasePrefix, 94);
                        }
                        if (method != null) {
                                methodVariables = getMethodVariables(methodVariables, method);
-                               getVariableProposals(localVariables, viewer, project, context, methodVariables, lowerCasePrefix, 99);
+                               getVariableProposals(localVariables, viewer, project, context,
+                                               methodVariables, lowerCasePrefix, 99);
                        }
                        if (!localVariables.isEmpty()) {
-                               localVariableResults = (IPHPCompletionProposal[]) localVariables.toArray(new IPHPCompletionProposal[localVariables.size()]);
+                               localVariableResults = (IPHPCompletionProposal[]) localVariables
+                                               .toArray(new IPHPCompletionProposal[localVariables
+                                                               .size()]);
                        }
                }
 
-//             TableName sqlTable = new TableName();
+               // TableName sqlTable = new TableName();
                ArrayList list = new ArrayList();
                list.add(null);
-               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);
+               TokenName lastSignificantToken = getLastToken(list, viewer, offset, context); // ,
+                                                                                                                                                               // sqlTable);
+               boolean useClassMembers = (lastSignificantToken == ITerminalSymbols.TokenName.MINUS_GREATER)
+                               || (lastSignificantToken == ITerminalSymbols.TokenName.VARIABLE)
+                               || (lastSignificantToken == ITerminalSymbols.TokenName.NEW)
+                               || (lastSignificantToken == ITerminalSymbols.TokenName.THIS_PHP_COMPLETION);
 
                if (fTemplateEngine != null) {
                        IPHPCompletionProposal[] templateResults = new IPHPCompletionProposal[0];
@@ -588,23 +617,29 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                        IPHPCompletionProposal[] declarationResults = new IPHPCompletionProposal[0];
                        if (project != null) {
                                DeclarationEngine declarationEngine;
-                               JavaContextType contextType = (JavaContextType) PHPeclipsePlugin.getDefault().getTemplateContextRegistry().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);
+                                       IdentifierIndexManager indexManager = PHPeclipsePlugin
+                                                       .getDefault().getIndexManager(project);
                                        SortedMap sortedMap;
-                                       declarationEngine = new DeclarationEngine(project, contextType, lastSignificantToken, file);
-                                       if (lastSignificantToken == ITerminalSymbols.TokenNamethis_PHP_COMPLETION) {
+                                       declarationEngine = new DeclarationEngine(project,
+                                                       contextType, lastSignificantToken, file);
+                                       if (lastSignificantToken == ITerminalSymbols.TokenName.THIS_PHP_COMPLETION) {
                                                // complete '$this->'
                                                sortedMap = indexManager.getIdentifiers(file);
-                                               declarationEngine.completeObject(viewer, offset, sortedMap, unit);
+                                               declarationEngine.completeObject(viewer, offset,
+                                                               sortedMap, unit);
                                        } else {
                                                String typeRef = null;
                                                char[] varName = (char[]) list.get(0);
                                                if (varName != null) {
                                                        if (method != null) {
-                                                               methodVariables = getMethodVariables(methodVariables, method);
-                                                               VariableInfo info = (VariableInfo) methodVariables.get(new String(varName));
+                                                               methodVariables = getMethodVariables(
+                                                                               methodVariables, method);
+                                                               VariableInfo info = (VariableInfo) methodVariables
+                                                                               .get(new String(varName));
                                                                if (info != null && info.typeIdentifier != null) {
                                                                        typeRef = new String(info.typeIdentifier);
                                                                }
@@ -613,11 +648,13 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                                                if (typeRef != null) {
                                                        // complete '$variable->' with type information
                                                        sortedMap = indexManager.getIdentifiers(typeRef);
-                                                       declarationEngine.completeObject(viewer, offset, sortedMap, unit);
+                                                       declarationEngine.completeObject(viewer, offset,
+                                                                       sortedMap, unit);
                                                } else {
                                                        // complete '$variable->' without type information
                                                        sortedMap = indexManager.getIdentifierMap();
-                                                       declarationEngine.complete(viewer, offset, sortedMap, unit);
+                                                       declarationEngine.complete(viewer, offset,
+                                                                       sortedMap, unit);
                                                }
                                        }
                                        declarationResults = declarationEngine.getResults();
@@ -628,8 +665,9 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                        IPHPCompletionProposal[] builtinResults = new IPHPCompletionProposal[0];
                        if ((!useClassMembers) && syntaxbuffer != null) {
                                BuiltInEngine builtinEngine;
-                               JavaContextType contextType = (JavaContextType) PHPeclipsePlugin.getDefault().getTemplateContextRegistry().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, unit);
@@ -643,28 +681,40 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                        // }
                        // concatenate the result arrays
                        IPHPCompletionProposal[] total;
-                       total = new IPHPCompletionProposal[localVariableResults.length + templateResults.length + identifierResults.length
+                       total = new IPHPCompletionProposal[localVariableResults.length
+                                       + templateResults.length + identifierResults.length
                                        + builtinResults.length + declarationResults.length];// +
                        // sqlResults.length];
-                       System.arraycopy(templateResults, 0, total, 0, templateResults.length);
-                       System.arraycopy(identifierResults, 0, total, templateResults.length, identifierResults.length);
-                       System.arraycopy(builtinResults, 0, total, templateResults.length + identifierResults.length, builtinResults.length);
-                       System.arraycopy(declarationResults, 0, total, templateResults.length + identifierResults.length + builtinResults.length,
-                                       declarationResults.length);
+                       System.arraycopy(templateResults, 0, total, 0,
+                                       templateResults.length);
+                       System.arraycopy(identifierResults, 0, total,
+                                       templateResults.length, identifierResults.length);
+                       System.arraycopy(builtinResults, 0, total, templateResults.length
+                                       + identifierResults.length, builtinResults.length);
+                       System.arraycopy(declarationResults, 0, total,
+                                       templateResults.length + identifierResults.length
+                                                       + builtinResults.length, declarationResults.length);
                        // System.arraycopy(sqlResults, 0, total, templateResults.length +
                        // identifierResults.length + builtinResults.length
                        // + declarationResults.length, sqlResults.length);
-                       // System.arraycopy(localVariableResults, 0, total, templateResults.length
+                       // System.arraycopy(localVariableResults, 0, total,
+                       // templateResults.length
                        // + identifierResults.length + builtinResults.length
                        // + declarationResults.length + sqlResults.length,
                        // localVariableResults.length);
-                       System.arraycopy(localVariableResults, 0, total, templateResults.length + identifierResults.length + builtinResults.length
-                                       + declarationResults.length, localVariableResults.length);
+                       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.
+                        * 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.
                         */
                        return order(results);
                }
@@ -675,16 +725,20 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
         * @param unitVariables
         * @param unit
         */
-       private HashMap getUnitVariables(HashMap unitVariables, ICompilationUnit unit) {
+       private HashMap getUnitVariables(HashMap unitVariables,
+                       ICompilationUnit unit) {
                if (unitVariables == null) {
                        try {
                                String unitText = unit.getSource();
                                unitVariables = new HashMap();
 
-                               ProblemReporter problemReporter = new ProblemReporter(DefaultErrorHandlingPolicies.exitAfterAllProblems(),
-                                               new CompilerOptions(JavaCore.getOptions()), new DefaultProblemFactory());
+                               ProblemReporter problemReporter = new ProblemReporter(
+                                               DefaultErrorHandlingPolicies.exitAfterAllProblems(),
+                                               new CompilerOptions(JavaCore.getOptions()),
+                                               new DefaultProblemFactory());
                                UnitParser parser = new UnitParser(problemReporter);
-                               parser.compilationUnit = new CompilationUnitDeclaration(problemReporter, null, unitText.length());
+                               parser.compilationUnit = new CompilationUnitDeclaration(
+                                               problemReporter, null, unitText.length());
                                parser.parse(unitText, unitVariables);
 
                        } catch (Exception e) {
@@ -705,10 +759,13 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                        try {
                                String methodText = method.getSource();
                                methodVariables = new HashMap();
-                               ProblemReporter problemReporter = new ProblemReporter(DefaultErrorHandlingPolicies.exitAfterAllProblems(),
-                                               new CompilerOptions(JavaCore.getOptions()), new DefaultProblemFactory());
+                               ProblemReporter problemReporter = new ProblemReporter(
+                                               DefaultErrorHandlingPolicies.exitAfterAllProblems(),
+                                               new CompilerOptions(JavaCore.getOptions()),
+                                               new DefaultProblemFactory());
                                UnitParser parser = new UnitParser(problemReporter);
-                               parser.compilationUnit = new CompilationUnitDeclaration(problemReporter, null, methodText.length());
+                               parser.compilationUnit = new CompilationUnitDeclaration(
+                                               problemReporter, null, methodText.length());
                                parser.parseFunction(methodText, methodVariables);
                        } catch (Exception e) {
                                // TODO Auto-generated catch block
@@ -726,7 +783,8 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
         * @param prefix
         * @return
         */
-       private void getVariableProposals(HashSet localVariables, ITextViewer viewer, IProject project, JavaContext context,
+       private void getVariableProposals(HashSet localVariables,
+                       ITextViewer viewer, IProject project, JavaContext context,
                        HashMap variables, String prefix, int relevance) {
                // try {
                int start = context.getStart();
@@ -734,7 +792,8 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                IRegion region = new Region(start, end - start);
                // IMethod method = (IMethod)
                // context.findEnclosingElement(IJavaElement.METHOD);
-               // if (method != null && (method instanceof SourceMethod) && ((SourceMethod)
+               // if (method != null && (method instanceof SourceMethod) &&
+               // ((SourceMethod)
                // method).variables != null) {
                // HashMap map = ((SourceMethod) method).variables;
                Set set = variables.keySet();
@@ -746,7 +805,8 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                        if (varName.length() >= prefix.length()) {
                                matchesVarName = true;
                                for (int i = 0; i < prefix.length(); i++) {
-                                       if (prefix.charAt(i) != Character.toLowerCase(varName.charAt(i))) {
+                                       if (prefix.charAt(i) != Character.toLowerCase(varName
+                                                       .charAt(i))) {
                                                matchesVarName = false;
                                                break;
                                        }
@@ -754,10 +814,12 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                                if (matchesVarName) {
                                        LocalVariableProposal prop;
                                        // if (varName.length == prefix.length()) {
-                                       // prop = new LocalVariableProposal(new String(varName), region,
+                                       // prop = new LocalVariableProposal(new String(varName),
+                                       // region,
                                        // viewer, relevance-10);
                                        // } else {
-                                       prop = new LocalVariableProposal(new String(varName), region, viewer, relevance);
+                                       prop = new LocalVariableProposal(new String(varName),
+                                                       region, viewer, relevance);
                                        // }
                                        localVariables.add(prop);
                                }
@@ -773,9 +835,9 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                // Scanner scanner = new Scanner();
                // scanner.setSource(source);
                // scanner.phpMode = true;
-               // int token = Scanner.TokenNameWHITESPACE;
-               // while ((token = scanner.getNextToken()) != Scanner.TokenNameEOF) {
-               // if (token == Scanner.TokenNameVariable) {
+               // int token = Scanner.TokenName.WHITESPACE;
+               // while ((token = scanner.getNextToken()) != Scanner.TokenName.EOF) {
+               // if (token == Scanner.TokenName.Variable) {
                // varName = scanner.getCurrentTokenSource();
                // if (varName.length >= prefix.length()) {
                // matchesVarName = true;
@@ -798,7 +860,8 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
                // }
                // }
                // } catch (Throwable e) {
-               // // ignore - Syntax exceptions could occur, if there are syntax errors !
+               // // ignore - Syntax exceptions could occur, if there are syntax errors
+               // !
                // }
        }
 
@@ -811,7 +874,8 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
         * @param sqlResults
         * @return
         */
-       // private ICompletionProposal[] getSQLProposals(ITextViewer viewer, IProject
+       // private ICompletionProposal[] getSQLProposals(ITextViewer viewer,
+       // IProject
        // project, DocumentTemplateContext context,
        // String prefix, TableName sqlTable) {
        // ICompletionProposal[] sqlResults = new ICompletionProposal[0];
@@ -930,19 +994,25 @@ public class PHPCompletionProcessor implements IContentAssistProcessor {
        /**
         * @see IContentAssistProcessor#computeContextInformation(ITextViewer, int)
         */
-       public IContextInformation[] computeContextInformation(ITextViewer viewer, int offset) {
-               int contextInformationPosition = guessContextInformationPosition(viewer, offset);
+       public IContextInformation[] computeContextInformation(ITextViewer viewer,
+                       int offset) {
+               int contextInformationPosition = guessContextInformationPosition(
+                               viewer, offset);
                List result = addContextInformations(viewer, contextInformationPosition);
-               return (IContextInformation[]) result.toArray(new IContextInformation[result.size()]);
+               return (IContextInformation[]) result
+                               .toArray(new IContextInformation[result.size()]);
        }
 
        private List addContextInformations(ITextViewer viewer, int offset) {
-               ICompletionProposal[] proposals = internalComputeCompletionProposals(viewer, offset, -1);
+               ICompletionProposal[] proposals = internalComputeCompletionProposals(
+                               viewer, offset, -1);
                List result = new ArrayList();
                for (int i = 0; i < proposals.length; i++) {
-                       IContextInformation contextInformation = proposals[i].getContextInformation();
+                       IContextInformation contextInformation = proposals[i]
+                                       .getContextInformation();
                        if (contextInformation != null) {
-                               ContextInformationWrapper wrapper = new ContextInformationWrapper(contextInformation);
+                               ContextInformationWrapper wrapper = new ContextInformationWrapper(
+                                               contextInformation);
                                wrapper.setContextInformationPosition(offset);
                                result.add(wrapper);
                        }