package com.intellij.lang.javascript.validation.fixes;
import com.intellij.codeInsight.template.Expression;
import com.intellij.codeInsight.template.Template;
import com.intellij.lang.javascript.flex.ImportUtils;
import com.intellij.lang.javascript.psi.JSReferenceExpression;
import com.intellij.openapi.util.Computable;
import com.intellij.psi.PsiFile;
public class CreateJSEventMethod extends CreateJSFunctionIntentionActionBase {
private final Computable<String> myEventTypeGenerator;
public CreateJSEventMethod(String invokedName, Computable<String> eventTypeGenerator) {
super(invokedName, "javascript.create.event.handler.intention.name");
myEventTypeGenerator = eventTypeGenerator;
}
@Override
protected void addParameters(Template template, JSReferenceExpression refExpr, PsiFile file) {
Expression expression = new MyExpression("event");
template.addVariable("$event$", expression, expression, true);
template.addTextSegment(":");
String text = myEventTypeGenerator.compute();
text = ImportUtils.importAndShortenReference(text, refExpr, true, true).first;
template.addTextSegment(text);
}
@Override
protected void addReturnType(Template template, JSReferenceExpression referenceExpression, PsiFile psifile) {
template.addTextSegment("void");
}
@Override
protected void addBody(Template template, JSReferenceExpression refExpr, PsiFile file) {
template.addTextSegment("\n");
template.addEndVariable();
template.addTextSegment("\n");
}
}