package fr.adrienbrault.idea.symfony2plugin.action.generator; import com.intellij.codeInsight.CodeInsightActionHandler; import com.intellij.codeInsight.actions.CodeInsightAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiFile; import com.intellij.psi.util.PsiUtilBase; import com.jetbrains.php.lang.psi.elements.PhpClass; import fr.adrienbrault.idea.symfony2plugin.Symfony2ProjectComponent; import fr.adrienbrault.idea.symfony2plugin.util.psi.PhpBundleFileFactory; import org.jetbrains.annotations.NotNull; /** * @author Daniel Espendiller <daniel@espendiller.net> */ public class PhpBundleCompilerPassGenerateAction extends CodeInsightAction { @Override public void update(AnActionEvent event) { super.update(event); boolean enabled = Symfony2ProjectComponent.isEnabled(event.getProject()); event.getPresentation().setVisible(enabled); event.getPresentation().setEnabled(enabled); } @Override protected boolean isValidForFile(@NotNull Project project, @NotNull Editor editor, @NotNull PsiFile file) { return PhpBundleFileFactory.getPhpClassForCreateCompilerScope(editor, file) != null; } @NotNull @Override protected CodeInsightActionHandler getHandler() { return new MyCodeInsightActionHandler(); } private class MyCodeInsightActionHandler implements CodeInsightActionHandler { @Override public void invoke(@NotNull Project project, @NotNull Editor editor, @NotNull PsiFile psiFile) { PhpClass phpClass = PhpBundleFileFactory.getPhpClassForCreateCompilerScope(editor, PsiUtilBase.getPsiFileInEditor(editor, project)); if(phpClass != null) { PhpBundleFileFactory.invokeCreateCompilerPass(phpClass, editor); } } @Override public boolean startInWriteAction() { return true; } } }