XDebugger: close evaluate dialog when session stops

(cherry-picked from f39d90e)
This commit is contained in:
Anton Makeev
2012-09-14 14:30:06 +02:00
parent af3e3a1612
commit d9e3c8de90
@@ -23,6 +23,7 @@ import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.wm.IdeFocusManager;
import com.intellij.xdebugger.XDebugSession;
import com.intellij.xdebugger.XDebugSessionAdapter;
import com.intellij.xdebugger.XDebuggerBundle;
import com.intellij.xdebugger.XSourcePosition;
import com.intellij.xdebugger.evaluation.EvaluationMode;
@@ -54,6 +55,7 @@ public class XDebuggerEvaluationDialog extends DialogWrapper {
private EvaluationMode myMode;
private final XSourcePosition mySourcePosition;
private final SwitchModeAction mySwitchModeAction;
private final XDebugSessionAdapter mySessionListener;
public XDebuggerEvaluationDialog(@NotNull XDebugSession session,
final @NotNull XDebuggerEditorsProvider editorsProvider,
@@ -68,6 +70,19 @@ public class XDebuggerEvaluationDialog extends DialogWrapper {
setOKButtonText(XDebuggerBundle.message("xdebugger.button.evaluate"));
setCancelButtonText(XDebuggerBundle.message("xdebugger.evaluate.dialog.close"));
mySessionListener = new XDebugSessionAdapter() {
@Override
public void sessionStopped() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
close(CANCEL_EXIT_CODE);
}
});
}
};
mySession.addSessionListener(mySessionListener);
myTreePanel = new XDebuggerTreePanel(session, editorsProvider, myDisposable, sourcePosition, XDebuggerActions.EVALUATE_DIALOG_TREE_POPUP_GROUP);
myResultPanel = new JPanel(new BorderLayout());
myResultPanel.add(new JLabel(XDebuggerBundle.message("xdebugger.evaluate.label.result")), BorderLayout.NORTH);
@@ -101,6 +116,12 @@ public class XDebuggerEvaluationDialog extends DialogWrapper {
init();
}
@Override
protected void dispose() {
mySession.removeSessionListener(mySessionListener);
super.dispose();
}
protected void doOKAction() {
evaluate();
}