/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.plugin.ij.intentions;
import com.intellij.codeInsight.intention.IntentionAction;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiFile;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;
import static com.intellij.codeInsight.CodeInsightUtilBase.prepareFileForWrite;
public abstract class BaseIntentionAction implements IntentionAction {
private String myText = "";
@Override
public final void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException {
if (editor == null || !prepareFileForWrite(getAffectedFiles(file))) {
return;
}
invokeImpl(project, editor, file);
}
protected PsiFile getAffectedFiles(PsiFile file) {
return file;
}
protected abstract void invokeImpl(Project project, Editor editor, PsiFile file);
@Override
public boolean startInWriteAction() {
return true;
}
@Override
public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile file) {
return true;
}
@Override
@NotNull
public String getText() {
return myText;
}
protected void setText(@NotNull String text) {
myText = text;
}
@Override
public String toString() {
return getText();
}
}