X-Git-Url: http://git.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 8ea69f7..5d50dee 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 @@ -18,29 +18,16 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Map; import java.util.SortedMap; -import net.sourceforge.phpdt.core.IBuffer; import net.sourceforge.phpdt.core.ICompilationUnit; -import net.sourceforge.phpdt.core.IJavaProject; -import net.sourceforge.phpdt.core.JavaModelException; import net.sourceforge.phpdt.core.ToolFactory; import net.sourceforge.phpdt.core.compiler.ITerminalSymbols; import net.sourceforge.phpdt.core.compiler.InvalidInputException; -import net.sourceforge.phpdt.internal.compiler.IProblemFactory; -import net.sourceforge.phpdt.internal.compiler.SourceElementParser; -import net.sourceforge.phpdt.internal.compiler.impl.CompilerOptions; import net.sourceforge.phpdt.internal.compiler.parser.Scanner; -import net.sourceforge.phpdt.internal.compiler.problem.DefaultProblemFactory; -import net.sourceforge.phpdt.internal.core.CompilationUnit; -import net.sourceforge.phpdt.internal.core.CompilationUnitStructureRequestor; -import net.sourceforge.phpdt.internal.core.JavaModelManager; -import net.sourceforge.phpdt.internal.core.JavaProject; -import net.sourceforge.phpdt.internal.corext.template.ContextType; -import net.sourceforge.phpdt.internal.corext.template.ContextTypeRegistry; import net.sourceforge.phpdt.internal.corext.template.php.CompilationUnitContextType; -import net.sourceforge.phpdt.internal.corext.template.php.PHPUnitContext; +import net.sourceforge.phpdt.internal.corext.template.php.JavaContext; +import net.sourceforge.phpdt.internal.corext.template.php.JavaContextType; import net.sourceforge.phpdt.internal.ui.PHPUiImages; import net.sourceforge.phpdt.internal.ui.text.java.IPHPCompletionProposal; import net.sourceforge.phpdt.internal.ui.text.java.PHPCompletionProposalComparator; @@ -48,15 +35,14 @@ import net.sourceforge.phpdt.internal.ui.text.template.BuiltInEngine; import net.sourceforge.phpdt.internal.ui.text.template.DeclarationEngine; import net.sourceforge.phpdt.internal.ui.text.template.IdentifierEngine; import net.sourceforge.phpdt.internal.ui.text.template.SQLProposal; -import net.sourceforge.phpdt.internal.ui.text.template.TemplateEngine; +import net.sourceforge.phpdt.internal.ui.text.template.contentassist.TemplateEngine; import net.sourceforge.phpdt.ui.IWorkingCopyManager; -import net.sourceforge.phpeclipse.IPreferenceConstants; import net.sourceforge.phpeclipse.PHPeclipsePlugin; import net.sourceforge.phpeclipse.builder.IdentifierIndexManager; -import net.sourceforge.phpeclipse.internal.compiler.ast.CompilationUnitDeclaration; -import net.sourceforge.phpeclipse.overlaypages.Util; import net.sourceforge.phpeclipse.phpeditor.PHPEditor; import net.sourceforge.phpeclipse.phpeditor.PHPSyntaxRdr; +import net.sourceforge.phpeclipse.ui.IPreferenceConstants; +import net.sourceforge.phpeclipse.ui.overlaypages.Util; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; @@ -72,7 +58,9 @@ import org.eclipse.jface.text.contentassist.IContextInformation; import org.eclipse.jface.text.contentassist.IContextInformationExtension; import org.eclipse.jface.text.contentassist.IContextInformationPresenter; import org.eclipse.jface.text.contentassist.IContextInformationValidator; +import org.eclipse.jface.text.templates.TemplateContextType; import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.Point; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IFileEditorInput; @@ -204,7 +192,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor { public PHPCompletionProcessor(IEditorPart editor) { fEditor = editor; fManager = PHPeclipsePlugin.getDefault().getWorkingCopyManager(); - ContextType contextType = ContextTypeRegistry.getInstance().getContextType( + TemplateContextType contextType = PHPeclipsePlugin.getDefault().getTemplateContextRegistry().getContextType( "php"); //$NON-NLS-1$ if (contextType != null) fTemplateEngine = new TemplateEngine(contextType); @@ -244,7 +232,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor { } private int getLastToken(ITextViewer viewer, int completionPosition, - PHPUnitContext context, TableName tableName) { + JavaContext context, TableName tableName) { IDocument document = viewer.getDocument(); int start = context.getStart(); int end = context.getEnd(); @@ -528,7 +516,7 @@ public class PHPCompletionProcessor implements IContentAssistProcessor { private ICompletionProposal[] internalComputeCompletionProposals( ITextViewer viewer, int offset, int contextOffset) { - + ICompilationUnit unit= fManager.getWorkingCopy(fEditor.getEditorInput()); IDocument document = viewer.getDocument(); Object[] identifiers = null; IFile file = null; @@ -539,19 +527,25 @@ public class PHPCompletionProcessor implements IContentAssistProcessor { editor = (PHPEditor) fEditor; file = ((IFileEditorInput) editor.getEditorInput()).getFile(); project = file.getProject(); - // outlinePage = editor.getfOutlinePage(); - // TODO: get the identifiers from the new model - // if (outlinePage instanceof PHPContentOutlinePage) { - // identifiers = ((PHPContentOutlinePage) outlinePage).getVariables(); - // } } } - ContextType phpContextType = ContextTypeRegistry.getInstance() - .getContextType("php"); //$NON-NLS-1$ - ((CompilationUnitContextType) phpContextType).setContextParameters( - document, offset, 0); - PHPUnitContext context = (PHPUnitContext) phpContextType.createContext(); + Point selection= viewer.getSelectedRange(); + + // remember selected text + String selectedText= null; + if (selection.y != 0) { + try { + selectedText= document.get(selection.x, selection.y); + } catch (BadLocationException e) {} + } + + JavaContextType phpContextType = (JavaContextType)PHPeclipsePlugin.getDefault().getTemplateContextRegistry().getContextType( + "php"); //$NON-NLS-1$ +// ((CompilationUnitContextType) phpContextType).setContextParameters( +// document, offset, 0); + JavaContext context = (JavaContext) phpContextType.createContext(document, offset,selection.y,unit); + context.setVariable("selection", selectedText); //$NON-NLS-1$ String prefix = context.getKey(); TableName sqlTable = new TableName(); int lastSignificantToken = getLastToken(viewer, offset, context, sqlTable); @@ -565,17 +559,17 @@ public class PHPCompletionProcessor implements IContentAssistProcessor { ICompletionProposal[] results; if (!emptyPrefix) { fTemplateEngine.reset(); - fTemplateEngine.complete(viewer, offset); //, unit); + fTemplateEngine.complete(viewer, offset, unit); templateResults = fTemplateEngine.getResults(); } IPHPCompletionProposal[] identifierResults = new IPHPCompletionProposal[0]; if ((!useClassMembers) && identifiers != null) { IdentifierEngine identifierEngine; - ContextType contextType = ContextTypeRegistry.getInstance() - .getContextType("php"); //$NON-NLS-1$ + JavaContextType contextType = (JavaContextType)PHPeclipsePlugin.getDefault().getTemplateContextRegistry().getContextType( + "php"); //$NON-NLS-1$ if (contextType != null) { identifierEngine = new IdentifierEngine(contextType); - identifierEngine.complete(viewer, offset, identifiers); + identifierEngine.complete(viewer, offset, identifiers,unit); identifierResults = identifierEngine.getResults(); } } @@ -583,15 +577,15 @@ public class PHPCompletionProcessor implements IContentAssistProcessor { IPHPCompletionProposal[] declarationResults = new IPHPCompletionProposal[0]; if (project != null) { DeclarationEngine declarationEngine; - ContextType contextType = ContextTypeRegistry.getInstance() - .getContextType("php"); //$NON-NLS-1$ + JavaContextType contextType = (JavaContextType)PHPeclipsePlugin.getDefault().getTemplateContextRegistry().getContextType( + "php"); //$NON-NLS-1$ if (contextType != null) { IdentifierIndexManager indexManager = PHPeclipsePlugin.getDefault() .getIndexManager(project); SortedMap sortedMap = indexManager.getIdentifierMap(); declarationEngine = new DeclarationEngine(project, contextType, lastSignificantToken, file); - declarationEngine.complete(viewer, offset, sortedMap); + declarationEngine.complete(viewer, offset, sortedMap,unit); declarationResults = declarationEngine.getResults(); } } @@ -601,11 +595,11 @@ public class PHPCompletionProcessor implements IContentAssistProcessor { if ((!useClassMembers) && syntaxbuffer != null) { BuiltInEngine builtinEngine; String proposal; - ContextType contextType = ContextTypeRegistry.getInstance() - .getContextType("php"); //$NON-NLS-1$ + JavaContextType contextType = (JavaContextType)PHPeclipsePlugin.getDefault().getTemplateContextRegistry().getContextType( + "php"); //$NON-NLS-1$ if (contextType != null) { builtinEngine = new BuiltInEngine(contextType); - builtinEngine.complete(viewer, offset, syntaxbuffer); + builtinEngine.complete(viewer, offset, syntaxbuffer, unit); builtinResults = builtinEngine.getResults(); } }