package jetbrains.mps.ide.actions; /*Generated by MPS */ import jetbrains.mps.workbench.action.BaseAction; import javax.swing.Icon; 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 jetbrains.mps.project.MPSProject; import org.jetbrains.annotations.NotNull; import jetbrains.mps.workbench.dialogs.RenameFileDialog; import com.intellij.ide.projectView.ProjectView; import com.intellij.openapi.application.ApplicationManager; import java.io.IOException; import com.intellij.openapi.ui.Messages; public class RenameFileOrDirectory_Action extends BaseAction { private static final Icon ICON = null; public RenameFileOrDirectory_Action() { super("Rename...", "", 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("ideaProject", p); if (p == null) { return false; } } { MPSProject p = event.getData(MPSCommonDataKeys.MPS_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) { String oldName = ((VirtualFile) MapSequence.fromMap(_params).get("selectedFile")).getName(); RenameFileDialog dialog = new RenameFileDialog(((Project) MapSequence.fromMap(_params).get("ideaProject")), oldName, ((VirtualFile) MapSequence.fromMap(_params).get("selectedFile")).isDirectory()); dialog.show(); if (!(dialog.isOK())) { return; } final String result = dialog.getResult(); ((MPSProject) MapSequence.fromMap(_params).get("project")).getRepository().getModelAccess().executeCommand(new Runnable() { public void run() { try { if (RenameFileOrDirectory_Action.this.isNotValid(result, _params)) { return; } ((VirtualFile) MapSequence.fromMap(_params).get("selectedFile")).rename(null, result); ProjectView.getInstance(((Project) MapSequence.fromMap(_params).get("ideaProject"))).refresh(); ApplicationManager.getApplication().invokeLater(new Runnable() { public void run() { ProjectView.getInstance(((Project) MapSequence.fromMap(_params).get("ideaProject"))).getCurrentProjectViewPane().select(null, ((VirtualFile) MapSequence.fromMap(_params).get("selectedFile")), true); } }); } catch (IOException e) { } } }); } /*package*/ boolean isNotValid(String result, final Map<String, Object> _params) { if (result == null || result.length() == 0) { Messages.showMessageDialog(((Project) MapSequence.fromMap(_params).get("ideaProject")), "Enter valid name", "Error", Messages.getErrorIcon()); return true; } if (check_m54w02_a0b0g(((VirtualFile) MapSequence.fromMap(_params).get("selectedFile")).getParent(), result) != null) { Messages.showMessageDialog(((Project) MapSequence.fromMap(_params).get("ideaProject")), result + " already exists", "Error", Messages.getErrorIcon()); return true; } return false; } private static VirtualFile check_m54w02_a0b0g(VirtualFile checkedDotOperand, String result) { if (null != checkedDotOperand) { return checkedDotOperand.findChild(result); } return null; } }