diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.form b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.form
index 4679ee1baf90..64239d330fd1 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.form
+++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.form
@@ -23,20 +23,20 @@
-
+
-
+
-
+
-
-
-
-
+
+
+
+
diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.java
index add75e01489a..6b84eee8a659 100644
--- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.java
+++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XLightBreakpointPropertiesPanel.java
@@ -18,7 +18,10 @@ package com.intellij.xdebugger.impl.breakpoints.ui;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.wm.IdeFocusManager;
import com.intellij.ui.components.JBCheckBox;
+import com.intellij.ui.components.JBLabel;
import com.intellij.ui.popup.util.DetailView;
+import com.intellij.xdebugger.XDebuggerBundle;
+import com.intellij.xdebugger.XExpression;
import com.intellij.xdebugger.breakpoints.XBreakpointManager;
import com.intellij.xdebugger.breakpoints.XBreakpointType;
import com.intellij.xdebugger.breakpoints.ui.XBreakpointCustomPropertiesPanel;
@@ -29,6 +32,8 @@ import com.intellij.xdebugger.impl.ui.DebuggerUIUtil;
import com.intellij.xdebugger.impl.ui.XDebuggerExpressionComboBox;
import javax.swing.*;
+import javax.swing.border.EmptyBorder;
+import javax.swing.plaf.basic.BasicRadioButtonUI;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -83,6 +88,7 @@ public class XLightBreakpointPropertiesPanel> i
private JPanel myCustomRightPropertiesPanelWrapper;
private JBCheckBox myConditionEnabledCheckbox;
private JPanel myCustomTopPropertiesPanelWrapper;
+ private JPanel myConditionEnabledPanel;
private final List> myCustomPanels;
private List> mySubPanels = new ArrayList>();
@@ -91,12 +97,17 @@ public class XLightBreakpointPropertiesPanel> i
private B myBreakpoint;
+ private final boolean myShowAllOptions;
+ private static final String CONDITION_ENABLED_LABEL = "label";
+ private static final String CONDITION_ENABLED_CHECKBOX = "checkbox";
+
public void setDetailView(DetailView detailView) {
myMasterBreakpointPanel.setDetailView(detailView);
}
public XLightBreakpointPropertiesPanel(Project project, XBreakpointManager breakpointManager, B breakpoint, boolean showAllOptions) {
myBreakpoint = breakpoint;
+ myShowAllOptions = showAllOptions;
XBreakpointType breakpointType = XBreakpointUtil.getType(breakpoint);
mySuspendPolicyPanel.init(project, breakpointManager, breakpoint);
@@ -112,6 +123,13 @@ public class XLightBreakpointPropertiesPanel> i
myCustomPanels = new ArrayList>();
if (debuggerEditorsProvider != null) {
+ myConditionEnabledCheckbox = new JBCheckBox(XDebuggerBundle.message("xbreakpoints.condition.checkbox"));
+ JBLabel conditionEnabledLabel = new JBLabel(XDebuggerBundle.message("xbreakpoints.condition.checkbox"));
+ conditionEnabledLabel.setBorder(new EmptyBorder(0, ((BasicRadioButtonUI)myConditionEnabledCheckbox.getUI()).getDefaultIcon().getIconWidth() +
+ myConditionEnabledCheckbox.getIconTextGap() +
+ myConditionEnabledCheckbox.getBorder().getBorderInsets(myConditionEnabledCheckbox).left, 0, 0));
+ myConditionEnabledPanel.add(myConditionEnabledCheckbox, CONDITION_ENABLED_CHECKBOX);
+ myConditionEnabledPanel.add(conditionEnabledLabel, CONDITION_ENABLED_LABEL);
myConditionComboBox = new XDebuggerExpressionComboBox(project, debuggerEditorsProvider, CONDITION_HISTORY_ID, myBreakpoint.getSourcePosition());
JComponent conditionComponent = myConditionComboBox.getComponent();
myConditionExpressionPanel.add(conditionComponent, BorderLayout.CENTER);
@@ -161,7 +179,7 @@ public class XLightBreakpointPropertiesPanel> i
@Override
public void focusGained(FocusEvent event) {
if (myConditionComboBox != null) {
- IdeFocusManager.findInstance().requestFocus(myConditionComboBox.getComponent(), false);
+ IdeFocusManager.findInstance().requestFocus(myConditionComboBox.getEditorComponent(), false);
}
}
});
@@ -187,7 +205,8 @@ public class XLightBreakpointPropertiesPanel> i
if (myConditionComboBox != null) {
myBreakpoint.setConditionEnabled(myConditionEnabledCheckbox.isSelected());
- myBreakpoint.setConditionExpression(myConditionComboBox.getExpression());
+ XExpression expression = myConditionComboBox.getExpression();
+ myBreakpoint.setConditionExpression(expression != null && !expression.getExpression().isEmpty() ? expression : null);
myConditionComboBox.saveTextInHistory();
}
@@ -203,8 +222,13 @@ public class XLightBreakpointPropertiesPanel> i
}
if (myConditionComboBox != null) {
- myConditionEnabledCheckbox.setSelected(myBreakpoint.isConditionEnabled());
- myConditionComboBox.setExpression(myBreakpoint.getConditionExpressionInt());
+ XExpression condition = myBreakpoint.getConditionExpressionInt();
+ myConditionComboBox.setExpression(condition);
+ boolean hideCheckbox = !myShowAllOptions && condition == null;
+ myConditionEnabledCheckbox.setSelected(hideCheckbox || (myBreakpoint.isConditionEnabled() && condition != null));
+ ((CardLayout)myConditionEnabledPanel.getLayout()).show(myConditionEnabledPanel, hideCheckbox ? CONDITION_ENABLED_LABEL : CONDITION_ENABLED_CHECKBOX);
+
+ onCheckboxChanged();
}
for (XBreakpointCustomPropertiesPanel customPanel : myCustomPanels) {
@@ -212,8 +236,6 @@ public class XLightBreakpointPropertiesPanel> i
}
myEnabledCheckbox.setSelected(myBreakpoint.isEnabled());
myEnabledCheckbox.setText(XBreakpointUtil.getShortText(myBreakpoint) + " enabled");
-
- onCheckboxChanged();
}
public JPanel getMainPanel() {