GP-6480 correct addressrangetable refresh

This commit is contained in:
James
2026-02-24 18:07:57 +00:00
parent 96564d1be5
commit 6f28b69259
2 changed files with 12 additions and 16 deletions
@@ -20,6 +20,7 @@ import java.util.stream.StreamSupport;
import docking.widgets.table.AbstractDynamicTableColumn; import docking.widgets.table.AbstractDynamicTableColumn;
import docking.widgets.table.TableColumnDescriptor; import docking.widgets.table.TableColumnDescriptor;
import ghidra.docking.settings.Settings; import ghidra.docking.settings.Settings;
import ghidra.framework.options.ToolOptions;
import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.PluginTool;
import ghidra.framework.plugintool.ServiceProvider; import ghidra.framework.plugintool.ServiceProvider;
import ghidra.program.model.address.*; import ghidra.program.model.address.*;
@@ -43,20 +44,23 @@ public class AddressRangeTableModel extends GhidraProgramTableModel<AddressRange
private static final int MAX_ADDRESS_COLUMN_INDEX = 1; private static final int MAX_ADDRESS_COLUMN_INDEX = 1;
private ProgramSelection selection; private ProgramSelection selection;
private int resultsLimit; private PluginTool tool;
private long minLength;
protected AddressRangeTableModel(PluginTool tool, Program program, ProgramSelection selection, protected AddressRangeTableModel(PluginTool tool, Program program, ProgramSelection selection) {
int resultsLimit, long minLength) {
super("Selected Ranges in " + program.getName(), tool, program, null); super("Selected Ranges in " + program.getName(), tool, program, null);
this.selection = selection; this.selection = selection;
this.resultsLimit = resultsLimit; this.tool = tool;
this.minLength = minLength;
} }
@Override @Override
protected void doLoad(Accumulator<AddressRangeInfo> accumulator, TaskMonitor monitor) protected void doLoad(Accumulator<AddressRangeInfo> accumulator, TaskMonitor monitor)
throws CancelledException { throws CancelledException {
ToolOptions options = tool.getOptions(CodeBrowserSelectionPlugin.OPTION_CATEGORY_NAME);
int resultsLimit = options.getInt(CodeBrowserSelectionPlugin.RANGES_LIMIT_OPTION_NAME,
CodeBrowserSelectionPlugin.RANGES_LIMIT_DEFAULT);
long minLength = options.getLong(CodeBrowserSelectionPlugin.MIN_RANGE_SIZE_OPTION_NAME,
CodeBrowserSelectionPlugin.MIN_RANGE_SIZE_DEFAULT);
AddressRangeIterator rangeIter = selection.getAddressRanges(); AddressRangeIterator rangeIter = selection.getAddressRanges();
ReferenceManager refManager = program.getReferenceManager(); ReferenceManager refManager = program.getReferenceManager();
while (rangeIter.hasNext()) { while (rangeIter.hasNext()) {
@@ -103,11 +107,6 @@ public class AddressRangeTableModel extends GhidraProgramTableModel<AddressRange
} }
} }
@Override
public void refresh() {
reload();
}
@Override @Override
protected TableColumnDescriptor<AddressRangeInfo> createTableColumnDescriptor() { protected TableColumnDescriptor<AddressRangeInfo> createTableColumnDescriptor() {
TableColumnDescriptor<AddressRangeInfo> descriptor = new TableColumnDescriptor<>(); TableColumnDescriptor<AddressRangeInfo> descriptor = new TableColumnDescriptor<>();
@@ -151,11 +151,8 @@ public class CodeBrowserSelectionPlugin extends Plugin {
tool.setStatusInfo("Unable to create selected ranges table: no addresses in selection"); tool.setStatusInfo("Unable to create selected ranges table: no addresses in selection");
return; return;
} }
ToolOptions options = tool.getOptions(OPTION_CATEGORY_NAME);
int resultsLimit = options.getInt(RANGES_LIMIT_OPTION_NAME, RANGES_LIMIT_DEFAULT); AddressRangeTableModel model = new AddressRangeTableModel(tool, program, selection);
long minLength = options.getLong(MIN_RANGE_SIZE_OPTION_NAME, MIN_RANGE_SIZE_DEFAULT);
AddressRangeTableModel model =
new AddressRangeTableModel(tool, program, selection, resultsLimit, minLength);
Icon markerIcon = new GIcon("icon.plugin.codebrowser.cursor.marker"); Icon markerIcon = new GIcon("icon.plugin.codebrowser.cursor.marker");
String title = "Selected Ranges in " + program.getName(); String title = "Selected Ranges in " + program.getName();
TableComponentProvider<AddressRangeInfo> tableProvider = TableComponentProvider<AddressRangeInfo> tableProvider =