package fr.adrienbrault.idea.symfony2plugin.action.bundle; import com.intellij.openapi.application.Result; import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.fileEditor.OpenFileDescriptor; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiElement; import com.jetbrains.php.lang.psi.elements.PhpClass; import fr.adrienbrault.idea.symfony2plugin.Symfony2Icons; import fr.adrienbrault.idea.symfony2plugin.util.psi.PhpBundleFileFactory; import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.util.HashMap; /** * @author Daniel Espendiller <daniel@espendiller.net> */ public class NewBundleTwigExtensionAction extends NewBundleFileActionAbstract { public NewBundleTwigExtensionAction() { super("Twig Extension", "Create Twig Extension", Symfony2Icons.SYMFONY); } protected void write(@NotNull final Project project, @NotNull final PhpClass phpClass, @NotNull final String className) { new WriteCommandAction(project) { @Override protected void run(@NotNull Result result) throws Throwable { PsiElement bundleFile = null; try { String name = className; if(name.endsWith("Extension")) { name = name.substring(0, name.length() - "Extension".length()); } final String finalName = name; bundleFile = PhpBundleFileFactory.createBundleFile(phpClass, "twig_extension", "Twig\\Extension\\" + className, new HashMap<String, String>() {{ put("name", fr.adrienbrault.idea.symfony2plugin.util.StringUtils.underscore(finalName)); }}); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Error:" + e.getMessage()); return; } if(bundleFile != null) { new OpenFileDescriptor(getProject(), bundleFile.getContainingFile().getVirtualFile(), 0).navigate(true); } } @Override public String getGroupID() { return "Create Twig Extension"; } }.execute(); } }