Java tutorial
package com.bitbakery.plugin.arc.actions; import com.bitbakery.plugin.arc.ArcIcons; import com.bitbakery.plugin.arc.ArcStrings; import com.bitbakery.plugin.arc.ArcFileType; import com.bitbakery.plugin.arc.templates.ArcTemplatesFactory; import static com.bitbakery.plugin.arc.ArcStrings.message; import com.intellij.ide.IdeView; import com.intellij.ide.actions.CreateElementActionBase; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.actionSystem.DataKeys; import com.intellij.openapi.actionSystem.Presentation; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.ui.Messages; import com.intellij.psi.*; import com.intellij.util.IncorrectOperationException; import com.intellij.CommonBundle; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import javax.swing.*; /* * Copyright (c) Kurt Christensen, 2009 * * Licensed under the Artistic License, Version 2.0 (the "License"); you may not use this * file except in compliance with the License. You may obtain a copy of the License at: * * http://www.opensource.org/licenses/artistic-license-2.0.php * * Unless required by applicable law or agreed to in writing, software distributed under * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS * OF ANY KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License.. */ /** * Created by IntelliJ IDEA. * User: kurtc * Date: Mar 2, 2009 * Time: 2:14:30 PM * To change this template use File | Settings | File Templates. */ public class NewArcFileAction extends CreateElementActionBase { public NewArcFileAction() { super(message("action.ArcCreateNewFile.text"), message("action.ArcCreateNewFile.description"), ArcIcons.ARC_FILE_ICON); } @NotNull protected final PsiElement[] invokeDialog(final Project project, final PsiDirectory directory) { MyInputValidator validator = new MyInputValidator(project, directory); Messages.showInputDialog(project, getDialogPrompt(), getDialogTitle(), Messages.getQuestionIcon(), "", validator); return validator.getCreatedElements(); } protected String getActionName(PsiDirectory directory, String newName) { return message("action.ArcCreateNewFile.text"); } protected String getDialogPrompt() { return message("action.ArcCreateNewFile.dlg.prompt"); } protected String getDialogTitle() { return message("action.ArcCreateNewFile.dlg.title"); } protected String getCommandName() { return message("action.ArcCreateNewFile.text"); } public void update(final AnActionEvent event) { super.update(event); final Presentation presentation = event.getPresentation(); presentation.setEnabled(true); presentation.setVisible(true); } @NotNull protected PsiElement[] create(String newName, PsiDirectory directory) throws Exception { return doCreate(newName, directory); } protected static PsiFile createFileFromTemplate(final PsiDirectory directory, String name, @NonNls String templateName, @NonNls String... parameters) throws IncorrectOperationException { return ArcTemplatesFactory.createFromTemplate(directory, name, name + "." + ArcFileType.EXTENSION, templateName, parameters); } protected String getErrorTitle() { return CommonBundle.getErrorTitle(); } protected void checkBeforeCreate(String newName, PsiDirectory directory) throws IncorrectOperationException { JavaDirectoryService.getInstance().checkCreateClass(directory, newName); } @NotNull protected PsiElement[] doCreate(String newName, PsiDirectory directory) throws Exception { return new PsiElement[] { createFileFromTemplate(directory, newName, "ArcFile.arc") }; } }