From 285ad4ea23478158fa6c2c0fb65717cbafb2a584 Mon Sep 17 00:00:00 2001 From: "andrey.zaytsev" Date: Sun, 10 Feb 2013 03:59:51 +0400 Subject: [PATCH] IDEA-100730 View breakpoints window: breakpoints grouped first by class then by package (should be other way around) --- .../ui/XBreakpointGroupingByCategoryRule.java | 6 +++++ .../ui/XBreakpointGroupingByClassRule.java | 7 +++++- .../ui/XBreakpointGroupingByPackageRule.java | 9 ++++--- .../ui/XBreakpointGroupingRule.java | 4 ++++ .../ui/XBreakpointsGroupingPriorities.java | 24 +++++++++++++++++++ .../grouping/XBreakpointFileGroupingRule.java | 6 +++++ .../XBreakpointGroupingByTypeRule.java | 6 +++++ .../BreakpointMasterDetailPopupBuilder.java | 14 +++++++---- 8 files changed, 67 insertions(+), 9 deletions(-) create mode 100644 platform/xdebugger-api/src/com/intellij/xdebugger/breakpoints/ui/XBreakpointsGroupingPriorities.java diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/XBreakpointGroupingByCategoryRule.java b/java/debugger/impl/src/com/intellij/debugger/ui/XBreakpointGroupingByCategoryRule.java index f3cf9b9d5eb8..f9dc88af07ac 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/XBreakpointGroupingByCategoryRule.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/XBreakpointGroupingByCategoryRule.java @@ -21,6 +21,7 @@ import com.intellij.debugger.ui.breakpoints.BreakpointFactory; import com.intellij.debugger.ui.breakpoints.ExceptionBreakpoint; import com.intellij.openapi.util.Key; import com.intellij.xdebugger.breakpoints.ui.XBreakpointGroupingRule; +import com.intellij.xdebugger.breakpoints.ui.XBreakpointsGroupingPriorities; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -35,6 +36,11 @@ class XBreakpointGroupingByCategoryRule extends XBreakpointGroupingRule groups) { if (b instanceof Breakpoint) { diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/XBreakpointGroupingByClassRule.java b/java/debugger/impl/src/com/intellij/debugger/ui/XBreakpointGroupingByClassRule.java index aa28158221ae..338f65df70e6 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/XBreakpointGroupingByClassRule.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/XBreakpointGroupingByClassRule.java @@ -16,8 +16,8 @@ package com.intellij.debugger.ui; import com.intellij.debugger.ui.breakpoints.Breakpoint; -import com.intellij.debugger.ui.breakpoints.BreakpointFactory; import com.intellij.xdebugger.breakpoints.ui.XBreakpointGroupingRule; +import com.intellij.xdebugger.breakpoints.ui.XBreakpointsGroupingPriorities; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -32,6 +32,11 @@ class XBreakpointGroupingByClassRule extends XBreakpointGroupingRule groups) { if (b instanceof Breakpoint) { diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/XBreakpointGroupingByPackageRule.java b/java/debugger/impl/src/com/intellij/debugger/ui/XBreakpointGroupingByPackageRule.java index a9f43cc444ee..12ff08b890b4 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/XBreakpointGroupingByPackageRule.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/XBreakpointGroupingByPackageRule.java @@ -18,10 +18,8 @@ package com.intellij.debugger.ui; import com.intellij.debugger.ui.breakpoints.BreakpointWithHighlighter; import com.intellij.debugger.ui.breakpoints.ExceptionBreakpoint; import com.intellij.openapi.util.text.StringUtil; -import com.intellij.xdebugger.breakpoints.ui.XBreakpointGroup; import com.intellij.xdebugger.breakpoints.ui.XBreakpointGroupingRule; -import org.jetbrains.annotations.Nls; -import org.jetbrains.annotations.NonNls; +import com.intellij.xdebugger.breakpoints.ui.XBreakpointsGroupingPriorities; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -32,6 +30,11 @@ public class XBreakpointGroupingByPackageRule extends XBreakpointGroupingRule super("XBreakpointGroupingByPackageRule", "Group by package"); } + @Override + public int getPriority() { + return XBreakpointsGroupingPriorities.BY_PACKAGE; + } + @Override public XBreakpointPackageGroup getGroup(@NotNull B breakpoint, @NotNull Collection groups) { String packageName = null; diff --git a/platform/xdebugger-api/src/com/intellij/xdebugger/breakpoints/ui/XBreakpointGroupingRule.java b/platform/xdebugger-api/src/com/intellij/xdebugger/breakpoints/ui/XBreakpointGroupingRule.java index 477dc9ce697c..eb62e870f90c 100644 --- a/platform/xdebugger-api/src/com/intellij/xdebugger/breakpoints/ui/XBreakpointGroupingRule.java +++ b/platform/xdebugger-api/src/com/intellij/xdebugger/breakpoints/ui/XBreakpointGroupingRule.java @@ -48,6 +48,10 @@ public abstract class XBreakpointGroupingRule { return myId; } + public int getPriority() { + return XBreakpointsGroupingPriorities.DEFAULT; + } + @Nullable public abstract G getGroup(@NotNull B breakpoint, @NotNull Collection groups); } diff --git a/platform/xdebugger-api/src/com/intellij/xdebugger/breakpoints/ui/XBreakpointsGroupingPriorities.java b/platform/xdebugger-api/src/com/intellij/xdebugger/breakpoints/ui/XBreakpointsGroupingPriorities.java new file mode 100644 index 000000000000..e5af9964d1a6 --- /dev/null +++ b/platform/xdebugger-api/src/com/intellij/xdebugger/breakpoints/ui/XBreakpointsGroupingPriorities.java @@ -0,0 +1,24 @@ +/* + * Copyright 2000-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.xdebugger.breakpoints.ui; + +public class XBreakpointsGroupingPriorities { + public static final int DEFAULT = 100; + public static final int BY_CLASS = 400; + public static final int BY_FILE = 600; + public static final int BY_PACKAGE = 800; + public static final int BY_TYPE = 1000; +} diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/grouping/XBreakpointFileGroupingRule.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/grouping/XBreakpointFileGroupingRule.java index 6c09cd0a2883..5255a33a65e9 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/grouping/XBreakpointFileGroupingRule.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/grouping/XBreakpointFileGroupingRule.java @@ -20,6 +20,7 @@ import com.intellij.xdebugger.XDebuggerBundle; import com.intellij.xdebugger.XSourcePosition; import com.intellij.xdebugger.breakpoints.XLineBreakpoint; import com.intellij.xdebugger.breakpoints.ui.XBreakpointGroupingRule; +import com.intellij.xdebugger.breakpoints.ui.XBreakpointsGroupingPriorities; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -32,6 +33,11 @@ public class XBreakpointFileGroupingRule extends XBreakpointGroupingRule groups) { if (!(breakpoint instanceof XLineBreakpoint)) { return null; diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/grouping/XBreakpointGroupingByTypeRule.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/grouping/XBreakpointGroupingByTypeRule.java index a646979fff9b..5d1301604f72 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/grouping/XBreakpointGroupingByTypeRule.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/grouping/XBreakpointGroupingByTypeRule.java @@ -17,6 +17,7 @@ package com.intellij.xdebugger.impl.breakpoints.ui.grouping; import com.intellij.xdebugger.breakpoints.XBreakpoint; import com.intellij.xdebugger.breakpoints.ui.XBreakpointGroupingRule; +import com.intellij.xdebugger.breakpoints.ui.XBreakpointsGroupingPriorities; import org.jetbrains.annotations.NotNull; import java.util.Collection; @@ -39,6 +40,11 @@ public class XBreakpointGroupingByTypeRule extends XBreakpointGroupingRule groups) { if (b instanceof XBreakpoint) { diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/tree/BreakpointMasterDetailPopupBuilder.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/tree/BreakpointMasterDetailPopupBuilder.java index 5e5287085b3f..c7d1d71fce16 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/tree/BreakpointMasterDetailPopupBuilder.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/ui/tree/BreakpointMasterDetailPopupBuilder.java @@ -57,7 +57,12 @@ public class BreakpointMasterDetailPopupBuilder { private BreakpointItemsTreeController myTreeController; private final List myRulesAvailable = new ArrayList(); - private Set myRulesEnabled = new HashSet(); + private Set myRulesEnabled = new TreeSet(new Comparator() { + @Override + public int compare(XBreakpointGroupingRule o1, XBreakpointGroupingRule o2) { + return o2.getPriority() - o1.getPriority(); + } + }); @Nullable private Object myInitialBreakpoint; @@ -143,7 +148,7 @@ public class BreakpointMasterDetailPopupBuilder { } if (!myIsViewer) { - myRulesEnabled = getInitialGroupingRules(); + getInitialGroupingRules(myRulesEnabled); } DefaultActionGroup actions = createActions(); @@ -283,8 +288,8 @@ public class BreakpointMasterDetailPopupBuilder { ((XBreakpointManagerImpl)getBreakpointManager()).setBreakpointsDialogSettings(dialogState); } - private Set getInitialGroupingRules() { - java.util.HashSet rules = new java.util.HashSet(); + private void getInitialGroupingRules(Collection rules) { + rules.clear(); XBreakpointsDialogState settings = ((XBreakpointManagerImpl)getBreakpointManager()).getBreakpointsDialogSettings(); for (XBreakpointGroupingRule rule : myRulesAvailable) { @@ -292,7 +297,6 @@ public class BreakpointMasterDetailPopupBuilder { rules.add(rule); } } - return rules; } private XBreakpointManager getBreakpointManager() {