mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-122662 Breakpoints dialog: on new breakpoint adding it should get focus
This commit is contained in:
@@ -22,7 +22,6 @@ import com.intellij.debugger.settings.*;
|
||||
import com.intellij.debugger.ui.breakpoints.Breakpoint;
|
||||
import com.intellij.ide.DataManager;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
@@ -208,17 +207,6 @@ public class JavaDebuggerSupport extends DebuggerSupport {
|
||||
private static class JavaBreakpointPanelProvider extends BreakpointPanelProvider<Breakpoint> {
|
||||
//private final List<MyBreakpointManagerListener> myListeners = ContainerUtil.createLockFreeCopyOnWriteList();
|
||||
|
||||
@Override
|
||||
public AnAction[] getAddBreakpointActions(@NotNull Project project) {
|
||||
//List<AnAction> result = new ArrayList<AnAction>();
|
||||
//BreakpointFactory[] breakpointFactories = BreakpointFactory.getBreakpointFactories();
|
||||
//for (BreakpointFactory breakpointFactory : breakpointFactories) {
|
||||
// result.add(new AddJavaBreakpointAction(breakpointFactory));
|
||||
//}
|
||||
//return result.toArray(new AnAction[result.size()]);
|
||||
return AnAction.EMPTY_ARRAY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createBreakpointsGroupingRules(Collection<XBreakpointGroupingRule> rules) {
|
||||
//rules.add(new XBreakpointGroupingByCategoryRule());
|
||||
|
||||
-12
@@ -37,7 +37,6 @@ import com.intellij.xdebugger.impl.breakpoints.ui.grouping.XBreakpointGroupingBy
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
@@ -113,17 +112,6 @@ public class XBreakpointPanelProvider extends BreakpointPanelProvider<XBreakpoin
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AnAction[] getAddBreakpointActions(@NotNull Project project) {
|
||||
List<AnAction> result = new ArrayList<AnAction>();
|
||||
for (XBreakpointType<?, ?> type : XBreakpointUtil.getBreakpointTypes()) {
|
||||
if (type.isAddBreakpointButtonVisible()) {
|
||||
result.add(new AddXBreakpointAction(type));
|
||||
}
|
||||
}
|
||||
return result.toArray(new AnAction[result.size()]);
|
||||
}
|
||||
|
||||
public void onDialogClosed(final Project project) {
|
||||
}
|
||||
|
||||
|
||||
-3
@@ -16,7 +16,6 @@
|
||||
package com.intellij.xdebugger.impl.breakpoints.ui;
|
||||
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.markup.GutterIconRenderer;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -49,8 +48,6 @@ public abstract class BreakpointPanelProvider<B> {
|
||||
@Nullable
|
||||
public abstract GutterIconRenderer getBreakpointGutterIconRenderer(Object breakpoint);
|
||||
|
||||
public abstract AnAction[] getAddBreakpointActions(@NotNull Project project);
|
||||
|
||||
public abstract void onDialogClosed(final Project project);
|
||||
|
||||
public abstract void provideBreakpointItems(Project project, Collection<BreakpointItem> items);
|
||||
|
||||
+37
-11
@@ -32,8 +32,11 @@ import com.intellij.util.Function;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.HashSet;
|
||||
import com.intellij.xdebugger.XDebuggerManager;
|
||||
import com.intellij.xdebugger.breakpoints.XBreakpoint;
|
||||
import com.intellij.xdebugger.breakpoints.XBreakpointType;
|
||||
import com.intellij.xdebugger.breakpoints.ui.XBreakpointGroupingRule;
|
||||
import com.intellij.xdebugger.impl.breakpoints.XBreakpointManagerImpl;
|
||||
import com.intellij.xdebugger.impl.breakpoints.XBreakpointUtil;
|
||||
import com.intellij.xdebugger.impl.breakpoints.XBreakpointsDialogState;
|
||||
import com.intellij.xdebugger.impl.breakpoints.ui.tree.BreakpointItemNode;
|
||||
import com.intellij.xdebugger.impl.breakpoints.ui.tree.BreakpointItemsTreeController;
|
||||
@@ -144,15 +147,7 @@ public class BreakpointsDialog extends DialogWrapper {
|
||||
}
|
||||
|
||||
void initSelection(Collection<BreakpointItem> breakpoints) {
|
||||
boolean found = false;
|
||||
for (BreakpointItem breakpoint : breakpoints) {
|
||||
if (breakpoint.getBreakpoint() == myInitialBreakpoint) {
|
||||
myTreeController.selectBreakpointItem(breakpoint, null);
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
boolean found = selectBreakpoint(myInitialBreakpoint);
|
||||
if (!found && !breakpoints.isEmpty()) {
|
||||
myTreeController.selectFirstBreakpointItem();
|
||||
}
|
||||
@@ -245,8 +240,10 @@ public class BreakpointsDialog extends DialogWrapper {
|
||||
}.registerCustomShortcutSet(ActionManager.getInstance().getAction(IdeActions.ACTION_EDIT_SOURCE).getShortcutSet(), tree);
|
||||
|
||||
final DefaultActionGroup breakpointTypes = new DefaultActionGroup();
|
||||
for (BreakpointPanelProvider provider : myBreakpointsPanelProviders) {
|
||||
breakpointTypes.addAll(provider.getAddBreakpointActions(myProject));
|
||||
for (XBreakpointType<?, ?> type : XBreakpointUtil.getBreakpointTypes()) {
|
||||
if (type.isAddBreakpointButtonVisible()) {
|
||||
breakpointTypes.addAll(new AddXBreakpointAction(type));
|
||||
}
|
||||
}
|
||||
|
||||
ToolbarDecorator decorator = ToolbarDecorator.createDecorator(tree).
|
||||
@@ -392,4 +389,33 @@ public class BreakpointsDialog extends DialogWrapper {
|
||||
((BreakpointItem)item).saveState();
|
||||
}
|
||||
}
|
||||
|
||||
private class AddXBreakpointAction extends AnAction {
|
||||
private final XBreakpointType<?, ?> myType;
|
||||
|
||||
public AddXBreakpointAction(XBreakpointType<?, ?> type) {
|
||||
myType = type;
|
||||
getTemplatePresentation().setIcon(type.getEnabledIcon());
|
||||
getTemplatePresentation().setText(type.getTitle());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
saveCurrentItem();
|
||||
XBreakpoint<?> breakpoint = myType.addBreakpoint(myProject, null);
|
||||
if (breakpoint != null) {
|
||||
selectBreakpoint(breakpoint);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean selectBreakpoint(Object breakpoint) {
|
||||
for (BreakpointItem item : myBreakpointItems) {
|
||||
if (item.getBreakpoint() == breakpoint) {
|
||||
myTreeController.selectBreakpointItem(item, null);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user