package org.maziarz.yiiclipse.completion; import org.eclipse.dltk.core.CompletionRequestor; import org.eclipse.dltk.core.IMethod; import org.eclipse.dltk.core.IModelElement; import org.eclipse.dltk.core.IModelElementVisitor; import org.eclipse.dltk.internal.core.SourceMethod; import org.eclipse.dltk.internal.core.SourceRange; import org.eclipse.php.core.codeassist.ICompletionContext; import org.eclipse.php.internal.core.PHPVersion; import org.eclipse.php.internal.core.ast.nodes.ASTNode; import org.eclipse.php.internal.core.ast.nodes.ASTParser; import org.eclipse.php.internal.core.ast.nodes.Program; import org.eclipse.php.internal.core.codeassist.ICompletionReporter; import org.eclipse.php.internal.core.codeassist.strategies.AbstractCompletionStrategy; import org.eclipse.php.internal.core.typeinference.FakeMethod; public class InControllerNewActionStrategy extends AbstractCompletionStrategy { public InControllerNewActionStrategy(ICompletionContext context) { super(context); } @Override public void apply(ICompletionReporter reporter) throws Exception { InControllerContext ctx = null; if (getContext() instanceof InControllerContext) { ctx = (InControllerContext) getContext(); } final String prefix = ctx.getPrefix(); CompletionRequestor requstor = ctx.getCompletionRequestor(); ctx.getSourceModule().getElementAt(ctx.getOffset()); /*- ASTParser parser = ASTParser.newParser(PHPVersion.PHP5_4, ctx.getSourceModule()); Program p = parser.createAST(null); ASTNode node = p.getElementAt(ctx.getOffset()); */ IMethod method = ctx.getSourceModule().getMethod(prefix); SourceMethod sm = (SourceMethod) method; ctx.getOffset(); SourceRange replacementRange = this.getReplacementRange(ctx); int offset = replacementRange.getOffset(); int length = replacementRange.getLength(); SourceRange r = new SourceRange(offset - prefix.length(), length+prefix.length()); // reporter.reportKeyword("Create "+prefix+" method", "(){$this->render('" + prefix + "', array());}", r); //reporter.reportMethod(method, "(){$this->render('" + prefix + "');\n}", replacementRange, new Object()); } }