fixed add stepping filter action for threads view
[idea/community.git] / java / debugger / impl / src / com / intellij / debugger / actions / AddSteppingFilterAction.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) {