fixed add stepping filter action for threads view
authorEgor.Ushakov <egor.ushakov@jetbrains.com>
Thu, 30 Jul 2015 16:19:08 +0000 (19:19 +0300)
committerEgor.Ushakov <egor.ushakov@jetbrains.com>
Thu, 30 Jul 2015 16:55:29 +0000 (19:55 +0300)
java/debugger/impl/src/com/intellij/debugger/actions/AddSteppingFilterAction.java
java/debugger/impl/src/com/intellij/debugger/actions/PopFrameAction.java

index 8a0a63f1387317dedd6fb26bf414837aa98a230f..4b549a7a4bdd832825c31a6e8869f245a6f5a0d0 100644 (file)
@@ -25,6 +25,9 @@ import com.intellij.debugger.engine.events.DebuggerCommandImpl;
 import com.intellij.debugger.impl.DebuggerContextImpl;
 import com.intellij.debugger.jdi.StackFrameProxyImpl;
 import com.intellij.debugger.settings.DebuggerSettings;
+import com.intellij.debugger.ui.impl.watch.DebuggerTreeNodeImpl;
+import com.intellij.debugger.ui.impl.watch.StackFrameDescriptorImpl;
+import com.intellij.debugger.ui.tree.ThreadDescriptor;
 import com.intellij.openapi.actionSystem.AnActionEvent;
 import com.intellij.openapi.actionSystem.CommonDataKeys;
 import com.intellij.openapi.application.ApplicationManager;
@@ -42,9 +45,10 @@ public class AddSteppingFilterAction extends DebuggerAction {
     if (process == null) {
       return;
     }
+    final StackFrameDescriptorImpl descriptor = PopFrameAction.getSelectedStackFrameDescriptor(e);
     process.getManagerThread().schedule(new DebuggerCommandImpl() {
       protected void action() throws Exception {
-        final String name = getClassName(debuggerContext.getFrameProxy());
+        final String name = getClassName(descriptor != null ? descriptor.getFrameProxy() : debuggerContext.getFrameProxy());
         if (name == null) {
           return;
         }
@@ -65,7 +69,13 @@ public class AddSteppingFilterAction extends DebuggerAction {
   }
 
   public void update(AnActionEvent e) {
-    e.getPresentation().setEnabled(true);
+    DebuggerTreeNodeImpl selectedNode = getSelectedNode(e.getDataContext());
+    if (selectedNode != null && selectedNode.getDescriptor() instanceof ThreadDescriptor) {
+      e.getPresentation().setEnabledAndVisible(false);
+    }
+    else {
+      e.getPresentation().setEnabledAndVisible(true);
+    }
   }
 
   private static String getClassName(StackFrameProxyImpl stackFrameProxy) {
index 3eba87e44a96ec6c8e87d9104f0443b4b24a6a53..a6c178e6c29dbd89edef04bdc1c64e4500190725 100644 (file)
@@ -243,7 +243,7 @@ public class PopFrameAction extends DebuggerAction {
   }
 
   @Nullable
-  private static StackFrameDescriptorImpl getSelectedStackFrameDescriptor(AnActionEvent e) {
+  static StackFrameDescriptorImpl getSelectedStackFrameDescriptor(AnActionEvent e) {
     DebuggerTreeNodeImpl selectedNode = getSelectedNode(e.getDataContext());
     if(selectedNode != null) {
       NodeDescriptorImpl descriptor = selectedNode.getDescriptor();