mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
show icons for overhead items
This commit is contained in:
@@ -27,6 +27,7 @@ import com.intellij.debugger.jdi.VirtualMachineProxyImpl;
|
||||
import com.intellij.debugger.requests.Requestor;
|
||||
import com.intellij.debugger.settings.DebuggerSettings;
|
||||
import com.intellij.debugger.ui.breakpoints.Breakpoint;
|
||||
import com.intellij.debugger.ui.breakpoints.RunToCursorBreakpoint;
|
||||
import com.intellij.debugger.ui.breakpoints.StackCapturingLineBreakpoint;
|
||||
import com.intellij.debugger.ui.overhead.OverheadProducer;
|
||||
import com.intellij.debugger.ui.overhead.OverheadTimings;
|
||||
@@ -499,8 +500,10 @@ public class DebugProcessEvents extends DebugProcessImpl {
|
||||
resumePreferred = !requestHit;
|
||||
}
|
||||
finally {
|
||||
if (requestor instanceof OverheadProducer) {
|
||||
OverheadTimings.add(DebugProcessEvents.this, (OverheadProducer)requestor, requestHit ? 1 : 0, System.currentTimeMillis() - start);
|
||||
if (requestor instanceof OverheadProducer && !(requestor instanceof RunToCursorBreakpoint)) {
|
||||
OverheadTimings.add(DebugProcessEvents.this, (OverheadProducer)requestor,
|
||||
requestHit || requestor instanceof StackCapturingLineBreakpoint ? 1 : 0,
|
||||
System.currentTimeMillis() - start);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+5
-2
@@ -21,9 +21,11 @@ import com.intellij.debugger.engine.DebuggerManagerThreadImpl;
|
||||
import com.intellij.debugger.settings.DebuggerSettings;
|
||||
import com.intellij.debugger.ui.overhead.OverheadProducer;
|
||||
import com.intellij.debugger.ui.overhead.OverheadTimings;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.ui.ColoredTableCellRenderer;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.sun.jdi.*;
|
||||
import com.sun.jdi.event.Event;
|
||||
@@ -244,7 +246,8 @@ public class MethodReturnValueWatcher implements OverheadProducer {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return DebuggerBundle.message("action.watches.method.return.value.enable");
|
||||
public void customizeRenderer(ColoredTableCellRenderer renderer) {
|
||||
renderer.setIcon(AllIcons.Debugger.WatchLastReturnValue);
|
||||
renderer.append(DebuggerBundle.message("action.watches.method.return.value.enable"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ import com.intellij.debugger.requests.Requestor;
|
||||
import com.intellij.debugger.settings.DebuggerSettings;
|
||||
import com.intellij.debugger.ui.impl.watch.CompilingEvaluatorImpl;
|
||||
import com.intellij.debugger.ui.overhead.OverheadProducer;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.ReadAction;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -45,6 +46,7 @@ import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiCodeFragment;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.ui.AppUIUtil;
|
||||
import com.intellij.ui.ColoredTableCellRenderer;
|
||||
import com.intellij.ui.classFilter.ClassFilter;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.intellij.util.StringBuilderSpinAllocator;
|
||||
@@ -135,6 +137,17 @@ public abstract class Breakpoint<P extends JavaBreakpointProperties> implements
|
||||
@Override
|
||||
public abstract void processClassPrepare(DebugProcess debuggerProcess, final ReferenceType referenceType);
|
||||
|
||||
@Override
|
||||
public void customizeRenderer(ColoredTableCellRenderer renderer) {
|
||||
if (myXBreakpoint != null) {
|
||||
renderer.setIcon(myXBreakpoint.getType().getEnabledIcon());
|
||||
}
|
||||
else {
|
||||
renderer.setIcon(AllIcons.Debugger.Db_set_breakpoint);
|
||||
}
|
||||
renderer.append(getDisplayName());
|
||||
}
|
||||
|
||||
public abstract String getDisplayName ();
|
||||
|
||||
public String getShortName() {
|
||||
|
||||
+3
-2
@@ -39,6 +39,7 @@ import com.intellij.openapi.util.ThrowableComputable;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.ui.ColoredTableCellRenderer;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.sun.jdi.*;
|
||||
import com.sun.jdi.event.LocatableEvent;
|
||||
@@ -181,8 +182,8 @@ public class StackCapturingLineBreakpoint extends WildcardMethodBreakpoint {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDisplayName() {
|
||||
return "Capture point at " + myCapturePoint.myClassName + "." + myCapturePoint.myMethodName;
|
||||
public void customizeRenderer(ColoredTableCellRenderer renderer) {
|
||||
renderer.append("Capture point at " + myCapturePoint.myClassName + "." + myCapturePoint.myMethodName);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -15,11 +15,13 @@
|
||||
*/
|
||||
package com.intellij.debugger.ui.overhead;
|
||||
|
||||
import com.intellij.ui.ColoredTableCellRenderer;
|
||||
|
||||
/**
|
||||
* @author egor
|
||||
*/
|
||||
public interface OverheadProducer {
|
||||
boolean isEnabled();
|
||||
void setEnabled(boolean enabled);
|
||||
String getDisplayName();
|
||||
void customizeRenderer(ColoredTableCellRenderer renderer);
|
||||
}
|
||||
|
||||
@@ -19,19 +19,19 @@ import com.intellij.debugger.engine.DebugProcessImpl;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.CustomShortcutSet;
|
||||
import com.intellij.openapi.project.DumbAwareAction;
|
||||
import com.intellij.ui.ColoredTableCellRenderer;
|
||||
import com.intellij.ui.ScrollPaneFactory;
|
||||
import com.intellij.ui.TableUtil;
|
||||
import com.intellij.ui.table.JBTable;
|
||||
import com.intellij.ui.table.TableView;
|
||||
import com.intellij.util.ui.ColumnInfo;
|
||||
import com.intellij.util.ui.ListTableModel;
|
||||
import com.intellij.util.ui.components.BorderLayoutPanel;
|
||||
import com.intellij.xdebugger.impl.ui.DebuggerUIUtil;
|
||||
import one.util.streamex.IntStreamEx;
|
||||
import one.util.streamex.StreamEx;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.table.TableCellRenderer;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
@@ -46,7 +46,7 @@ public class OverheadView extends BorderLayoutPanel {
|
||||
static final EnabledColumnInfo ENABLED_COLUMN = new EnabledColumnInfo();
|
||||
static final NameColumnInfo NAME_COLUMN = new NameColumnInfo();
|
||||
|
||||
final JBTable myTable;
|
||||
final TableView<OverheadProducer> myTable;
|
||||
final ListTableModel<OverheadProducer> myModel;
|
||||
|
||||
public OverheadView(@NotNull DebugProcessImpl process) {
|
||||
@@ -60,7 +60,7 @@ public class OverheadView extends BorderLayoutPanel {
|
||||
new ArrayList<>(OverheadTimings.getProducers(process)),
|
||||
3, SortOrder.DESCENDING);
|
||||
myModel.setSortable(true);
|
||||
myTable = new JBTable(myModel);
|
||||
myTable = new TableView<>(myModel);
|
||||
addToCenter(ScrollPaneFactory.createScrollPane(myTable));
|
||||
TableUtil.setupCheckboxColumn(myTable.getColumnModel().getColumn(0));
|
||||
OverheadTimings.addListener(o -> DebuggerUIUtil.invokeLater(() -> {
|
||||
@@ -80,16 +80,12 @@ public class OverheadView extends BorderLayoutPanel {
|
||||
|
||||
@Override
|
||||
public void actionPerformed(@NotNull final AnActionEvent e) {
|
||||
getSelected().forEach(c -> c.setEnabled(!c.isEnabled()));
|
||||
myTable.getSelection().forEach(c -> c.setEnabled(!c.isEnabled()));
|
||||
myTable.repaint();
|
||||
}
|
||||
}.registerCustomShortcutSet(new CustomShortcutSet(KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0)), myTable);
|
||||
}
|
||||
|
||||
private StreamEx<OverheadProducer> getSelected() {
|
||||
return IntStreamEx.of(myTable.getSelectedRows()).map(myTable::convertRowIndexToModel).mapToObj(myModel::getItem);
|
||||
}
|
||||
|
||||
private static class EnabledColumnInfo extends ColumnInfo<OverheadProducer, Boolean> {
|
||||
public EnabledColumnInfo() {
|
||||
super("");
|
||||
@@ -117,21 +113,34 @@ public class OverheadView extends BorderLayoutPanel {
|
||||
}
|
||||
}
|
||||
|
||||
private static class NameColumnInfo extends ColumnInfo<OverheadProducer, String> {
|
||||
private static class NameColumnInfo extends ColumnInfo<OverheadProducer, OverheadProducer> {
|
||||
public NameColumnInfo() {
|
||||
super("name");
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String valueOf(OverheadProducer aspects) {
|
||||
return aspects.getDisplayName();
|
||||
public OverheadProducer valueOf(OverheadProducer aspects) {
|
||||
return aspects;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<?> getColumnClass() {
|
||||
return OverheadProducer.class;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Comparator<OverheadProducer> getComparator() {
|
||||
return Comparator.comparing(i -> valueOf(i));
|
||||
public TableCellRenderer getRenderer(OverheadProducer producer) {
|
||||
return new ColoredTableCellRenderer() {
|
||||
@Override
|
||||
protected void customizeCellRenderer(JTable table, @Nullable Object value, boolean selected, boolean hasFocus, int row, int column) {
|
||||
if (value instanceof OverheadProducer) {
|
||||
((OverheadProducer)value).customizeRenderer(this);
|
||||
}
|
||||
setTransparentIconBackground(true);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user