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;
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;
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;
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);
}
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();
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;
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);
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();
}
}
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();
}
}
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();
}
}