package org.jetbrains.plugins.clojure.repl.actions;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.DataKeys;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiManager;
import org.jetbrains.plugins.clojure.psi.api.ClojureFile;
/**
* @author Alefas
* @since 18.03.14
*/
public class SwitchNamespaceClojureFileInConsoleAction extends ClojureConsoleActionBase {
@Override
public void actionPerformed(AnActionEvent event) {
Editor editor = event.getData(DataKeys.EDITOR);
if (editor == null) { return; }
Project project = editor.getProject();
if (project == null) { return; }
VirtualFile vfile = FileDocumentManager.getInstance().getFile(editor.getDocument());
if (vfile == null) return;
PsiFile psiFile = PsiManager.getInstance(project).findFile(vfile);
if (psiFile == null || !(psiFile instanceof ClojureFile)) { return; }
final String namespace = ((ClojureFile) psiFile).getNamespace();
if (namespace == null) return;
final String command = "(ns " + namespace + ")";
executeCommand(project, command);
}
}