mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-04 18:29:37 +02:00
GP-3329 - Search Highlights - Major update and refactor of the way Listing highlights work. Highlights are now more closely coupled with the fields that will paint them.
This commit is contained in:
parent
a21c2c4347
commit
84650030d0
130 changed files with 1096 additions and 919 deletions
|
@ -33,7 +33,7 @@ import ghidra.app.plugin.core.functiongraph.graph.vertex.FGVertex;
|
|||
import ghidra.app.plugin.core.functiongraph.graph.vertex.GroupedFunctionGraphVertex;
|
||||
import ghidra.app.plugin.core.functiongraph.mvc.*;
|
||||
import ghidra.app.services.*;
|
||||
import ghidra.app.util.HighlightProvider;
|
||||
import ghidra.app.util.ListingHighlightProvider;
|
||||
import ghidra.framework.model.*;
|
||||
import ghidra.framework.options.SaveState;
|
||||
import ghidra.framework.plugintool.PluginTool;
|
||||
|
@ -1298,12 +1298,12 @@ public class FGProvider extends VisualGraphComponentProvider<FGVertex, FGEdge, F
|
|||
}
|
||||
|
||||
@Override
|
||||
public void removeHighlightProvider(HighlightProvider highlightProvider, Program program) {
|
||||
public void removeHighlightProvider(ListingHighlightProvider highlightProvider, Program program) {
|
||||
// currently unsupported
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHighlightProvider(HighlightProvider highlightProvider, Program program) {
|
||||
public void setHighlightProvider(ListingHighlightProvider highlightProvider, Program program) {
|
||||
// currently unsupported
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ import docking.widgets.fieldpanel.support.FieldLocation;
|
|||
import docking.widgets.fieldpanel.support.Highlight;
|
||||
import ghidra.GhidraOptions;
|
||||
import ghidra.app.nav.Navigatable;
|
||||
import ghidra.app.plugin.core.codebrowser.ListingHighlightProvider;
|
||||
import ghidra.app.plugin.core.codebrowser.ListingMiddleMouseHighlightProvider;
|
||||
import ghidra.app.plugin.core.functiongraph.*;
|
||||
import ghidra.app.plugin.core.functiongraph.graph.FGEdge;
|
||||
import ghidra.app.plugin.core.functiongraph.graph.FunctionGraph;
|
||||
|
@ -41,7 +41,7 @@ import ghidra.app.plugin.core.functiongraph.graph.layout.FGLayoutProvider;
|
|||
import ghidra.app.plugin.core.functiongraph.graph.vertex.*;
|
||||
import ghidra.app.services.ButtonPressedListener;
|
||||
import ghidra.app.services.CodeViewerService;
|
||||
import ghidra.app.util.HighlightProvider;
|
||||
import ghidra.app.util.ListingHighlightProvider;
|
||||
import ghidra.app.util.viewer.field.FieldFactory;
|
||||
import ghidra.app.util.viewer.field.ListingField;
|
||||
import ghidra.app.util.viewer.format.FieldFormatModel;
|
||||
|
@ -81,7 +81,7 @@ public class FGController implements ProgramLocationListener, ProgramSelectionLi
|
|||
|
||||
private FunctionGraphOptions functionGraphOptions;
|
||||
|
||||
private SharedHighlightProvider sharedHighlightProvider;
|
||||
private FgHighlightProvider sharedHighlightProvider;
|
||||
private StringSelectionListener sharedStringSelectionListener =
|
||||
string -> provider.setClipboardStringContent(string);
|
||||
|
||||
|
@ -140,7 +140,7 @@ public class FGController implements ProgramLocationListener, ProgramSelectionLi
|
|||
|
||||
private void setMinimalFormatManager(FormatManager formatManager) {
|
||||
this.minimalFormatManager = formatManager;
|
||||
SharedHighlightProvider highlightProvider = lazilyCreateSharedHighlightProvider();
|
||||
FgHighlightProvider highlightProvider = lazilyCreateSharedHighlightProvider();
|
||||
minimalFormatManager.addHighlightProvider(highlightProvider);
|
||||
}
|
||||
|
||||
|
@ -158,12 +158,12 @@ public class FGController implements ProgramLocationListener, ProgramSelectionLi
|
|||
return defaultFormatManager;
|
||||
}
|
||||
|
||||
private SharedHighlightProvider lazilyCreateSharedHighlightProvider() {
|
||||
private FgHighlightProvider lazilyCreateSharedHighlightProvider() {
|
||||
if (sharedHighlightProvider != null) {
|
||||
return sharedHighlightProvider;
|
||||
}
|
||||
sharedHighlightProvider =
|
||||
new SharedHighlightProvider(plugin.getTool(), provider.getComponent());
|
||||
new FgHighlightProvider(plugin.getTool(), provider.getComponent());
|
||||
return sharedHighlightProvider;
|
||||
}
|
||||
|
||||
|
@ -1067,18 +1067,17 @@ public class FGController implements ProgramLocationListener, ProgramSelectionLi
|
|||
// Inner Classes
|
||||
//==================================================================================================
|
||||
|
||||
private static class SharedHighlightProvider
|
||||
implements HighlightProvider, ButtonPressedListener {
|
||||
private ListingHighlightProvider highlighter;
|
||||
private static class FgHighlightProvider
|
||||
implements ListingHighlightProvider, ButtonPressedListener {
|
||||
private ListingMiddleMouseHighlightProvider highlighter;
|
||||
|
||||
SharedHighlightProvider(PluginTool tool, Component repaintComponent) {
|
||||
highlighter = new ListingHighlightProvider(tool, repaintComponent);
|
||||
FgHighlightProvider(PluginTool tool, Component repaintComponent) {
|
||||
highlighter = new ListingMiddleMouseHighlightProvider(tool, repaintComponent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Highlight[] getHighlights(String text, Object obj,
|
||||
Class<? extends FieldFactory> fieldFactoryClass, int cursorTextOffset) {
|
||||
return highlighter.getHighlights(text, obj, fieldFactoryClass, cursorTextOffset);
|
||||
public Highlight[] createHighlights(String text, ListingField field, int cursorTextOffset) {
|
||||
return highlighter.createHighlights(text, field, cursorTextOffset);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue