X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPCompletionProcessor.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPCompletionProcessor.java index 2de1ec7..cce63ca 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPCompletionProcessor.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/php/PHPCompletionProcessor.java @@ -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; @@ -49,7 +50,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; @@ -68,12 +68,10 @@ 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; -// import com.quantum.ExternalInterface; -// import com.quantum.util.connection.NotConnectedException; - /** * Example PHP completion processor. */ @@ -154,44 +152,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 ""; - } - 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 ""; +// } +// 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 +201,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor { /** * Tells this processor to order the proposals alphabetically. - * + * * @param order * true if proposals should be ordered. */ @@ -218,7 +212,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 +228,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 +261,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 +331,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 ""; - } +// 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 ""; +// } /** * 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()); @@ -524,8 +485,14 @@ 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]; + } } } @@ -571,13 +538,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 +553,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 +570,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 +613,6 @@ public class PHPCompletionProcessor implements IContentAssistProcessor { if (info != null && info.typeIdentifier != null) { typeRef = new String(info.typeIdentifier); } - } } if (typeRef != null) { @@ -668,7 +633,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 +666,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 +875,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) { - // + // // } // // } // }