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 jetbrains.mps.internal.collections.runtime.MapSequence; import org.jetbrains.annotations.NotNull; import java.awt.Frame; import com.intellij.openapi.project.Project; import com.intellij.openapi.actionSystem.CommonDataKeys; import java.io.StringWriter; import java.io.PrintWriter; import java.awt.datatransfer.StringSelection; import com.intellij.ide.CopyPasteManagerEx; public class AnalyzeStacktrace_Action extends BaseAction { private static final Icon ICON = null; public AnalyzeStacktrace_Action() { super("Analyze Stacktrace...", "Open console with the navigation stacktrace", ICON); this.setIsAlwaysVisible(false); this.setExecuteOutsideCommand(true); this.setMnemonic("S".charAt(0)); } @Override public boolean isDumbAware() { return true; } @Override public boolean isApplicable(AnActionEvent event, final Map<String, Object> _params) { if (MPSActionPlaces.MPS_MESSAGES_POPUP.equals(event.getPlace())) { return ((Throwable) MapSequence.fromMap(_params).get("exception")) != null; } return true; } @Override public void doUpdate(@NotNull AnActionEvent event, final Map<String, Object> _params) { this.setEnabledState(event.getPresentation(), this.isApplicable(event, _params)); } @Override protected boolean collectActionData(AnActionEvent event, final Map<String, Object> _params) { if (!(super.collectActionData(event, _params))) { return false; } { Frame p = event.getData(MPSCommonDataKeys.FRAME); MapSequence.fromMap(_params).put("frame", p); if (p == null) { return false; } } { Project p = event.getData(CommonDataKeys.PROJECT); MapSequence.fromMap(_params).put("project", p); if (p == null) { return false; } } { Throwable p = event.getData(MPSCommonDataKeys.EXCEPTION); MapSequence.fromMap(_params).put("exception", p); } return true; } @Override public void doExecute(@NotNull final AnActionEvent event, final Map<String, Object> _params) { Throwable exc = ((Throwable) MapSequence.fromMap(_params).get("exception")); if (exc != null) { StringWriter writer = new StringWriter(); exc.printStackTrace(new PrintWriter(writer)); StringSelection contents = new StringSelection(writer.toString()); CopyPasteManagerEx.getInstanceEx().setContents(contents); } final AnalyzeStacktraceDialog dialog = new AnalyzeStacktraceDialog(((Project) MapSequence.fromMap(_params).get("project"))); dialog.show(); } }