From aa68afdc9e1e39fab9c031b4cd49abcd361dbe8a Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Wed, 21 May 2014 21:47:07 +0400 Subject: [PATCH] IDEA-124119 [regression] Breakpoints dialog: checkbox for "condition" field is gone --- .../ui/XLightBreakpointPropertiesPanel.form | 14 ++++---- .../ui/XLightBreakpointPropertiesPanel.java | 34 +++++++++++++++---- 2 files changed, 35 insertions(+), 13 deletions(-) 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() {