IDEA-100730 View breakpoints window: breakpoints grouped first by class then by package (should be other way around)

This commit is contained in:
andrey.zaytsev
2013-02-10 04:08:16 +04:00
parent 7511bb7ec8
commit 285ad4ea23
8 changed files with 67 additions and 9 deletions
@@ -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<B> extends XBreakpointGroupingRule<B, XB
return true;
}
@Override
public int getPriority() {
return XBreakpointsGroupingPriorities.BY_TYPE;
}
@Override
public XBreakpointCategoryGroup getGroup(@NotNull B b, @NotNull Collection<XBreakpointCategoryGroup> groups) {
if (b instanceof Breakpoint) {
@@ -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<B> extends XBreakpointGroupingRule<B, XBrea
return false;
}
@Override
public int getPriority() {
return XBreakpointsGroupingPriorities.BY_CLASS;
}
@Override
public XBreakpointClassGroup getGroup(@NotNull B b, @NotNull Collection<XBreakpointClassGroup> groups) {
if (b instanceof Breakpoint) {
@@ -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<B> extends XBreakpointGroupingRule
super("XBreakpointGroupingByPackageRule", "Group by package");
}
@Override
public int getPriority() {
return XBreakpointsGroupingPriorities.BY_PACKAGE;
}
@Override
public XBreakpointPackageGroup getGroup(@NotNull B breakpoint, @NotNull Collection<XBreakpointPackageGroup> groups) {
String packageName = null;
@@ -48,6 +48,10 @@ public abstract class XBreakpointGroupingRule<B, G extends XBreakpointGroup> {
return myId;
}
public int getPriority() {
return XBreakpointsGroupingPriorities.DEFAULT;
}
@Nullable
public abstract G getGroup(@NotNull B breakpoint, @NotNull Collection<G> groups);
}
@@ -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;
}
@@ -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<B> extends XBreakpointGroupingRule<B, X
super("by-file", XDebuggerBundle.message("rule.name.group.by.file"));
}
@Override
public int getPriority() {
return XBreakpointsGroupingPriorities.BY_FILE;
}
public XBreakpointFileGroup getGroup(@NotNull final B breakpoint, @NotNull final Collection<XBreakpointFileGroup> groups) {
if (!(breakpoint instanceof XLineBreakpoint)) {
return null;
@@ -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<B> extends XBreakpointGroupingRule<B,
return true;
}
@Override
public int getPriority() {
return XBreakpointsGroupingPriorities.BY_TYPE;
}
@Override
public XBreakpointTypeGroup getGroup(@NotNull B b, @NotNull Collection<XBreakpointTypeGroup> groups) {
if (b instanceof XBreakpoint) {
@@ -57,7 +57,12 @@ public class BreakpointMasterDetailPopupBuilder {
private BreakpointItemsTreeController myTreeController;
private final List<XBreakpointGroupingRule> myRulesAvailable = new ArrayList<XBreakpointGroupingRule>();
private Set<XBreakpointGroupingRule> myRulesEnabled = new HashSet<XBreakpointGroupingRule>();
private Set<XBreakpointGroupingRule> myRulesEnabled = new TreeSet<XBreakpointGroupingRule>(new Comparator<XBreakpointGroupingRule>() {
@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<XBreakpointGroupingRule> getInitialGroupingRules() {
java.util.HashSet<XBreakpointGroupingRule> rules = new java.util.HashSet<XBreakpointGroupingRule>();
private void getInitialGroupingRules(Collection<XBreakpointGroupingRule> 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() {