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 java.awt.Frame; import org.jetbrains.annotations.NotNull; import jetbrains.mps.workbench.dialogs.MoveFileDialog; import org.jetbrains.mps.openapi.module.ModelAccess; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.ide.projectView.ProjectView; import com.intellij.openapi.application.ApplicationManager; import jetbrains.mps.ide.projectPane.fileSystem.FileViewProjectPane; import java.io.IOException; import javax.swing.JOptionPane; import jetbrains.mps.vfs.FileSystem; import java.io.File; public class MoveFileOrDirectory_Action extends BaseAction { private static final Icon ICON = null; public MoveFileOrDirectory_Action() { super("Move...", "", 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; } } { Frame p = event.getData(MPSCommonDataKeys.FRAME); MapSequence.fromMap(_params).put("frame", p); if (p == null) { return false; } } return true; } @Override public void doExecute(@NotNull final AnActionEvent event, final Map<String, Object> _params) { String path = ((VirtualFile) MapSequence.fromMap(_params).get("selectedFile")).getParent().getPath(); MoveFileDialog dialog = new MoveFileDialog(((Project) MapSequence.fromMap(_params).get("ideaProject")), path, ((VirtualFile) MapSequence.fromMap(_params).get("selectedFile")).isDirectory()); dialog.show(); if (!(dialog.isOK())) { return; } final String result = dialog.getResult(); ModelAccess modelAccess = ((MPSProject) MapSequence.fromMap(_params).get("project")).getRepository().getModelAccess(); modelAccess.executeCommand(new Runnable() { public void run() { try { if (MoveFileOrDirectory_Action.this.isNotValid(result, _params)) { return; } VirtualFile virtualFile = LocalFileSystem.getInstance().findFileByPath(result); ((VirtualFile) MapSequence.fromMap(_params).get("selectedFile")).move(null, virtualFile); 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"))).getProjectViewPaneById(FileViewProjectPane.ID).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) { JOptionPane.showMessageDialog(((Frame) MapSequence.fromMap(_params).get("frame")), "Enter valid name"); return true; } if (FileSystem.getInstance().getFile(result + File.separator + ((VirtualFile) MapSequence.fromMap(_params).get("selectedFile")).getName()).exists()) { JOptionPane.showMessageDialog(((Frame) MapSequence.fromMap(_params).get("frame")), ((VirtualFile) MapSequence.fromMap(_params).get("selectedFile")).getName() + " already exists"); return true; } return false; } }