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.editor.SelectionModel;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import org.jetbrains.plugins.clojure.ClojureBundle;
import org.jetbrains.plugins.clojure.ClojureIcons;
import org.jetbrains.plugins.clojure.psi.util.ClojurePsiFactory;
/**
* @author ilyas
*/
public class RunSelectedTextAction extends ClojureConsoleActionBase {
public RunSelectedTextAction(){
getTemplatePresentation().setIcon(ClojureIcons.REPL_EVAL);
}
@Override
public void actionPerformed(AnActionEvent e) {
final Editor editor = e.getData(DataKeys.EDITOR);
if (editor == null) {
return;
}
final SelectionModel selectionModel = editor.getSelectionModel();
String selectedText = selectionModel.getSelectedText();
if (selectedText == null || selectedText.trim().length() == 0) {
return;
}
final String text = selectedText.trim();
final Project project = editor.getProject();
final String msg = ClojurePsiFactory.getInstance(project).getErrorMessage(text);
if (msg != null) {
Messages.showErrorDialog(project,
ClojureBundle.message("evaluate.incorrect.form", msg),
ClojureBundle.message("evaluate.incorrect.cannot.evaluate"));
return;
}
executeCommand(project, text);
}
}