diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointFactory.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointFactory.java index 4263d7c3a93b..79816ec5e8aa 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointFactory.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/BreakpointFactory.java @@ -123,7 +123,7 @@ public abstract class BreakpointFactory { BreakpointPropertiesPanel breakpointPropertiesPanel = createBreakpointPropertiesPanel(breakpoint.getProject(), false); if (breakpointPropertiesPanel != null) { - breakpointPropertiesPanel.initFrom(breakpoint, false); + breakpointPropertiesPanel.initFrom(breakpoint, true); final JPanel mainPanel = breakpointPropertiesPanel.getPanel(); panel.setDetailPanel(mainPanel); } diff --git a/platform/lang-impl/src/com/intellij/ide/bookmarks/actions/BookmarksAction.java b/platform/lang-impl/src/com/intellij/ide/bookmarks/actions/BookmarksAction.java index 77fe90dc886d..59b667dc2f22 100644 --- a/platform/lang-impl/src/com/intellij/ide/bookmarks/actions/BookmarksAction.java +++ b/platform/lang-impl/src/com/intellij/ide/bookmarks/actions/BookmarksAction.java @@ -119,6 +119,11 @@ public class BookmarksAction extends AnAction implements DumbAware, MasterDetail return BookmarkManager.getInstance(project).hasBookmarksWithMnemonics(); } + @Override + public boolean allowedToRemoveItem(ItemWrapper item) { + return true; + } + protected static class BookmarkInContextInfo { private final DataContext myDataContext; private final Project myProject; diff --git a/platform/lang-impl/src/com/intellij/ui/popup/util/MasterDetailPopupBuilder.java b/platform/lang-impl/src/com/intellij/ui/popup/util/MasterDetailPopupBuilder.java index 85c0d8c78790..d14ffd793b82 100644 --- a/platform/lang-impl/src/com/intellij/ui/popup/util/MasterDetailPopupBuilder.java +++ b/platform/lang-impl/src/com/intellij/ui/popup/util/MasterDetailPopupBuilder.java @@ -188,23 +188,26 @@ public class MasterDetailPopupBuilder { for (Object value : values) { ItemWrapper item = (ItemWrapper)value; - DefaultListModel model = myList.getModel() instanceof DefaultListModel ? (DefaultListModel)myList.getModel() : - (DefaultListModel)((FilteringListModel)myList.getModel()).getOriginalModel(); - model.removeElement(item); + DefaultListModel model = myList.getModel() instanceof DefaultListModel + ? (DefaultListModel)myList.getModel() + : (DefaultListModel)((FilteringListModel)myList.getModel()).getOriginalModel(); + if (myDelegate.allowedToRemoveItem(item)) { + model.removeElement(item); - if (model.getSize() > 0) { - if (model.getSize() == index) { - myList.setSelectedIndex(model.getSize() - 1); + if (model.getSize() > 0) { + if (model.getSize() == index) { + myList.setSelectedIndex(model.getSize() - 1); + } + else if (model.getSize() > index) { + myList.setSelectedIndex(index); + } } - else if (model.getSize() > index) { - myList.setSelectedIndex(index); + else { + myList.clearSelection(); } - } - else { - myList.clearSelection(); + myDelegate.itemRemoved(item, myProject); } - myDelegate.itemRemoved(item, myProject); } } else if (e.getModifiersEx() == 0) { @@ -238,6 +241,8 @@ public class MasterDetailPopupBuilder { void itemRemoved(ItemWrapper item, Project project); boolean hasItemsWithMnemonic(Project project); + + boolean allowedToRemoveItem(ItemWrapper item); } public class ItemRenderer extends JPanel implements ListCellRenderer { diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerSupport.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerSupport.java index 691a8a9363fb..b8c45e8f0b6f 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerSupport.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebuggerSupport.java @@ -22,8 +22,8 @@ import com.intellij.xdebugger.XDebugSession; import com.intellij.xdebugger.XDebuggerManager; import com.intellij.xdebugger.impl.actions.*; import com.intellij.xdebugger.impl.actions.handlers.*; +import com.intellij.xdebugger.impl.breakpoints.XBreakpointPanelProvider; import com.intellij.xdebugger.impl.breakpoints.ui.BreakpointPanelProvider; -import com.intellij.xdebugger.impl.breakpoints.ui.XBreakpointPanelProvider; import com.intellij.xdebugger.impl.evaluate.quick.XQuickEvaluateHandler; import com.intellij.xdebugger.impl.evaluate.quick.common.QuickEvaluateHandler; import com.intellij.xdebugger.impl.settings.DebuggerSettingsPanelProvider; diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XBreakpointPanelProvider.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointPanelProvider.java similarity index 88% rename from platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XBreakpointPanelProvider.java rename to platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointPanelProvider.java index 34cc81fad3d6..c5f4f86e5c47 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/XBreakpointPanelProvider.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointPanelProvider.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.intellij.xdebugger.impl.breakpoints.ui; +package com.intellij.xdebugger.impl.breakpoints; import com.intellij.openapi.editor.LogicalPosition; import com.intellij.openapi.editor.markup.GutterIconRenderer; @@ -33,6 +33,10 @@ import com.intellij.xdebugger.breakpoints.ui.BreakpointItem; import com.intellij.xdebugger.impl.breakpoints.XBreakpointBase; import com.intellij.xdebugger.impl.breakpoints.XBreakpointUtil; import com.intellij.xdebugger.impl.breakpoints.XLineBreakpointImpl; +import com.intellij.xdebugger.impl.breakpoints.ui.AbstractBreakpointPanel; +import com.intellij.xdebugger.impl.breakpoints.ui.BreakpointPanelProvider; +import com.intellij.xdebugger.impl.breakpoints.ui.XBreakpointPropertiesPanel; +import com.intellij.xdebugger.impl.breakpoints.ui.XBreakpointsPanel; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -139,6 +143,13 @@ public class XBreakpointPanelProvider extends BreakpointPanelProvider> propertiesPanel = + new XBreakpointPropertiesPanel>(project, ((XBreakpointBase)breakpoint).getBreakpointManager(), breakpoint); + + panel.setDetailPanel(propertiesPanel.getMainPanel()); } }; } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/BreakpointsMasterDetailPopupFactory.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/BreakpointsMasterDetailPopupFactory.java index b63287f7ea45..390df565d72b 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/BreakpointsMasterDetailPopupFactory.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/BreakpointsMasterDetailPopupFactory.java @@ -90,6 +90,11 @@ public class BreakpointsMasterDetailPopupFactory { public boolean hasItemsWithMnemonic(Project project) { return false; } + + @Override + public boolean allowedToRemoveItem(ItemWrapper item) { + return false; + } }).createMasterDetailPopup(); return popup;