X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/template/DeclarationEngine.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/template/DeclarationEngine.java index 91ce5e7..56274cd 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/template/DeclarationEngine.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/template/DeclarationEngine.java @@ -8,15 +8,17 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.SortedMap; +import net.sourceforge.phpdt.core.ICompilationUnit; import net.sourceforge.phpdt.core.compiler.ITerminalSymbols; -import net.sourceforge.phpdt.internal.corext.template.ContextType; 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.text.java.IPHPCompletionProposal; import net.sourceforge.phpeclipse.PHPeclipsePlugin; import net.sourceforge.phpeclipse.builder.PHPIdentifierLocation; import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IRegion; @@ -28,30 +30,32 @@ import org.eclipse.swt.graphics.Point; public class DeclarationEngine { /** The context type. */ - private ContextType fContextType; + private JavaContextType fContextType; /** The result proposals. */ private ArrayList fProposals = new ArrayList(); /** Token determines last which declarations are allowed for proposal */ private int fLastSignificantToken; + private IProject fProject; private IFile fFile; - private String fFileName; +// private String fFileName; /** * Creates the template engine for a particular context type. * See TemplateContext for supported context types. */ - public DeclarationEngine(ContextType contextType, int lastSignificantToken, IFile file) { + public DeclarationEngine(IProject project, JavaContextType contextType, int lastSignificantToken, IFile file) { // Assert.isNotNull(contextType); + fProject = project; fContextType = contextType; fLastSignificantToken = lastSignificantToken; fFile = file; - if (fFile != null) { - fFileName = fFile.getFullPath().toString(); - } else { - fFileName = ""; - } +// if (fFile != null) { +// fFileName = fFile.getFullPath().toString(); +// } else { +// fFileName = ""; +// } } /** @@ -78,7 +82,7 @@ public class DeclarationEngine { * @param completionPosition the context position in the document of the text viewer * @param compilationUnit the compilation unit (may be null) */ - public void complete(ITextViewer viewer, int completionPosition, SortedMap map) { + public void complete(ITextViewer viewer, int completionPosition, SortedMap map, ICompilationUnit compilationUnit) { IDocument document = viewer.getDocument(); if (!(fContextType instanceof CompilationUnitContextType)) @@ -96,9 +100,12 @@ public class DeclarationEngine { } } - ((CompilationUnitContextType) fContextType).setContextParameters(document, completionPosition, selection.y); +// ((CompilationUnitContextType) fContextType).setContextParameters(document, completionPosition, selection.y); + +// CompilationUnitContext context = (CompilationUnitContext) fContextType.createContext(); + JavaContext context = (JavaContext) fContextType.createContext(document, completionPosition,selection.y,compilationUnit); + context.setVariable("selection", selectedText); //$NON-NLS-1$ - PHPUnitContext context = (PHPUnitContext) fContextType.createContext(); int start = context.getStart(); int end = context.getEnd(); String prefix = context.getKey(); @@ -124,13 +131,19 @@ public class DeclarationEngine { continue; // for loop } break; - case ITerminalSymbols.TokenNamethis : + case ITerminalSymbols.TokenNameVariable : if (type != PHPIdentifierLocation.METHOD && type != PHPIdentifierLocation.VARIABLE) { continue; // for loop } - if (!fFileName.equals(location.getFilename())) { + break; + case ITerminalSymbols.TokenNamethis_PHP_COMPLETION: + if (type != PHPIdentifierLocation.METHOD && type != PHPIdentifierLocation.VARIABLE) { continue; // for loop } + // check all filenames of the subclasses +// if (!fFileName.equals(location.getFilename())) { +// continue; // for loop +// } break; case ITerminalSymbols.TokenNamenew : if (type != PHPIdentifierLocation.CLASS && type != PHPIdentifierLocation.CONSTRUCTOR) { @@ -145,7 +158,7 @@ public class DeclarationEngine { if (maxProposals-- < 0) { return; } - fProposals.add(new DeclarationProposal(identifier, location, context, region, viewer)); + fProposals.add( new DeclarationProposal(fProject, identifier, location, context, region, viewer)); } } }