package jetbrains.mps.ide.actions; /*Generated by MPS */ import jetbrains.mps.workbench.action.BaseAction; import javax.swing.Icon; import com.intellij.icons.AllIcons; import com.intellij.openapi.actionSystem.AnActionEvent; import java.util.Map; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.actionSystem.CommonDataKeys; import jetbrains.mps.internal.collections.runtime.MapSequence; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; import com.intellij.openapi.ui.InputValidator; import com.intellij.openapi.application.ApplicationManager; import java.io.IOException; import com.intellij.openapi.ui.Messages; import com.intellij.ide.IdeBundle; import com.intellij.ide.projectView.ProjectView; import jetbrains.mps.ide.projectPane.fileSystem.FileViewProjectPane; public class NewFile_Action extends BaseAction { private static final Icon ICON = AllIcons.FileTypes.Any_type; public NewFile_Action() { super("File", "", ICON); this.setIsAlwaysVisible(false); this.setExecuteOutsideCommand(true); } @Override public boolean isDumbAware() { return true; } @Override protected boolean collectActionData(AnActionEvent event, final Map<String, Object> _params) { if (!(super.collectActionData(event, _params))) { return false; } { VirtualFile p = event.getData(CommonDataKeys.VIRTUAL_FILE); MapSequence.fromMap(_params).put("selectedFile", p); if (p == null) { return false; } } { Project p = event.getData(CommonDataKeys.PROJECT); MapSequence.fromMap(_params).put("project", p); if (p == null) { return false; } } return true; } @Override public void doExecute(@NotNull final AnActionEvent event, final Map<String, Object> _params) { final VirtualFile dir = (((VirtualFile) MapSequence.fromMap(_params).get("selectedFile")).isDirectory() ? ((VirtualFile) MapSequence.fromMap(_params).get("selectedFile")) : ((VirtualFile) MapSequence.fromMap(_params).get("selectedFile")).getParent()); final VirtualFile[] result = new VirtualFile[1]; InputValidator validator = new InputValidator() { @Override public boolean checkInput(String p) { return true; } @Override public boolean canClose(final String p) { if (p.length() == 0) { return false; } if (p.contains(System.getProperty("file.separator"))) { return false; } ApplicationManager.getApplication().runWriteAction(new Runnable() { public void run() { try { result[0] = dir.createChildData(null, p); } catch (IOException e) { } } }); return true; } }; Messages.showInputDialog(((Project) MapSequence.fromMap(_params).get("project")), IdeBundle.message("prompt.enter.new.file.name"), IdeBundle.message("title.new.file"), Messages.getQuestionIcon(), "", validator); if (result[0] != null) { ProjectView.getInstance(((Project) MapSequence.fromMap(_params).get("project"))).refresh(); ApplicationManager.getApplication().invokeLater(new Runnable() { public void run() { ProjectView.getInstance(((Project) MapSequence.fromMap(_params).get("project"))).getProjectViewPaneById(FileViewProjectPane.ID).select(null, result[0], true); } }); } } }