From b7a1d4bfd4009060364e0dd3c9c0ae17f256343d Mon Sep 17 00:00:00 2001 From: Dan <46821332+nsadeveloper789@users.noreply.github.com> Date: Fri, 14 May 2021 13:43:38 -0400 Subject: [PATCH] GP-642,944: Map Modules/Sections Dialog improvements --- .../DebuggerModuleMapProposalDialog.png | Bin 15294 -> 15193 bytes .../DebuggerSectionMapProposalDialog.png | Bin 22173 -> 22117 bytes .../DebuggerModuleMapProposalDialog.java | 35 +++++++++++++++--- .../gui/modules/DebuggerModulesProvider.java | 26 ++++++++++--- .../DebuggerSectionMapProposalDialog.java | 35 +++++++++++++++--- .../table/IconButtonTableCellEditor.java | 1 + .../table/IconButtonTableCellRenderer.java | 14 ++++--- 7 files changed, 88 insertions(+), 23 deletions(-) diff --git a/Ghidra/Debug/Debugger/src/main/help/help/topics/DebuggerModulesPlugin/images/DebuggerModuleMapProposalDialog.png b/Ghidra/Debug/Debugger/src/main/help/help/topics/DebuggerModulesPlugin/images/DebuggerModuleMapProposalDialog.png index 5b9873de52aa4c6a727a931333ee327b55145c25..66a259c15620779ce5750fe810dd831345f1de7a 100644 GIT binary patch literal 15193 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 H#ruB%Dgp6` literal 15294 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 H8hHLM*8%C= diff --git a/Ghidra/Debug/Debugger/src/main/help/help/topics/DebuggerModulesPlugin/images/DebuggerSectionMapProposalDialog.png b/Ghidra/Debug/Debugger/src/main/help/help/topics/DebuggerModulesPlugin/images/DebuggerSectionMapProposalDialog.png index 831ea6d4a10b308c4b7baa7215a9d87362300eb5..da54d2e0cb0ab175cff73833e8f0fe7b6640776f 100644 GIT binary patch literal 22117 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 literal 22173 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 diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModuleMapProposalDialog.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModuleMapProposalDialog.java index 6b201f6226..5a59e66f05 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModuleMapProposalDialog.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModuleMapProposalDialog.java @@ -15,6 +15,7 @@ */ package ghidra.app.plugin.core.debug.gui.modules; +import java.util.List; import java.util.function.BiConsumer; import java.util.function.Function; @@ -34,18 +35,17 @@ import ghidra.util.Swing; public class DebuggerModuleMapProposalDialog extends AbstractDebuggerMapProposalDialog { - static final String BLANK = ""; static final int BUTTON_SIZE = 32; protected enum ModuleMapTableColumns implements EnumeratedTableColumn { - REMOVE("Remove", String.class, e -> BLANK, (e, v) -> nop()), + REMOVE("Remove", String.class, e -> "Remove Proposed Entry", (e, v) -> nop()), MODULE_NAME("Module", String.class, e -> e.getModule().getName()), DYNAMIC_BASE("Dynamic Base", Address.class, e -> e.getModule().getBase()), + CHOOSE("Choose", String.class, e -> "Choose Program", (e, v) -> nop()), PROGRAM_NAME("Program", String.class, e -> e.getProgram().getName()), STATIC_BASE("Static Base", Address.class, e -> e.getProgram().getImageBase()), - SIZE("Size", Long.class, e -> e.getModuleRange().getLength()), - CHOOSE("Choose", String.class, e -> BLANK, (e, v) -> nop()); + SIZE("Size", Long.class, e -> e.getModuleRange().getLength()); private final String header; private final Class cls; @@ -94,6 +94,19 @@ public class DebuggerModuleMapProposalDialog } } + protected static class ModuleMapPropsalTableModel extends + DefaultEnumeratedColumnTableModel { + + public ModuleMapPropsalTableModel() { + super("Module Map", ModuleMapTableColumns.class); + } + + @Override + public List defaultSortOrder() { + return List.of(ModuleMapTableColumns.MODULE_NAME); + } + } + private final DebuggerModulesProvider provider; protected DebuggerModuleMapProposalDialog(DebuggerModulesProvider provider) { @@ -102,8 +115,8 @@ public class DebuggerModuleMapProposalDialog } @Override - protected EnumeratedColumnTableModel createTableModel() { - return new DefaultEnumeratedColumnTableModel<>("Module Map", ModuleMapTableColumns.class); + protected ModuleMapPropsalTableModel createTableModel() { + return new ModuleMapPropsalTableModel(); } @Override @@ -117,9 +130,19 @@ public class DebuggerModuleMapProposalDialog CellEditorUtils.installButton(table, filterPanel, removeCol, DebuggerResources.ICON_DELETE, BUTTON_SIZE, this::removeEntry); + TableColumn dynBaseCol = + columnModel.getColumn(ModuleMapTableColumns.DYNAMIC_BASE.ordinal()); + dynBaseCol.setCellRenderer(CustomToStringCellRenderer.MONO_OBJECT); + TableColumn chooseCol = columnModel.getColumn(ModuleMapTableColumns.CHOOSE.ordinal()); CellEditorUtils.installButton(table, filterPanel, chooseCol, DebuggerResources.ICON_PROGRAM, BUTTON_SIZE, this::chooseAndSetProgram); + + TableColumn stBaseCol = columnModel.getColumn(ModuleMapTableColumns.STATIC_BASE.ordinal()); + stBaseCol.setCellRenderer(CustomToStringCellRenderer.MONO_OBJECT); + + TableColumn sizeCol = columnModel.getColumn(ModuleMapTableColumns.SIZE.ordinal()); + sizeCol.setCellRenderer(CustomToStringCellRenderer.MONO_ULONG_HEX); } private void chooseAndSetProgram(ModuleMapEntry entry) { diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesProvider.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesProvider.java index b463b4c270..6688d3c01d 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesProvider.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerModulesProvider.java @@ -972,12 +972,19 @@ public class DebuggerModulesProvider extends ComponentProviderAdapter { } protected void promptModuleProposal(Collection proposal) { + if (proposal.isEmpty()) { + Msg.showInfo(this, getComponent(), "Map Modules", + "Could not formulate a proposal for any selected module." + + " You may need to import and/or open the destination images first."); + return; + } Collection adjusted = moduleProposalDialog.adjustCollection(getTool(), proposal); - if (adjusted != null && staticMappingService != null) { - tool.executeBackgroundCommand( - new MapModulesBackgroundCommand(staticMappingService, adjusted), currentTrace); + if (adjusted == null || staticMappingService == null) { + return; } + tool.executeBackgroundCommand( + new MapModulesBackgroundCommand(staticMappingService, adjusted), currentTrace); } protected void mapModules(Set modules) { @@ -1004,12 +1011,19 @@ public class DebuggerModulesProvider extends ComponentProviderAdapter { } protected void promptSectionProposal(Collection proposal) { + if (proposal.isEmpty()) { + Msg.showInfo(this, getComponent(), "Map Sections", + "Could not formulate a proposal for any selected section." + + " You may need to import and/or open the destination images first."); + return; + } Collection adjusted = sectionProposalDialog.adjustCollection(getTool(), proposal); - if (adjusted != null && staticMappingService != null) { - tool.executeBackgroundCommand( - new MapSectionsBackgroundCommand(staticMappingService, adjusted), currentTrace); + if (adjusted == null || staticMappingService == null) { + return; } + tool.executeBackgroundCommand( + new MapSectionsBackgroundCommand(staticMappingService, adjusted), currentTrace); } protected void mapSections(Set sections) { diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerSectionMapProposalDialog.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerSectionMapProposalDialog.java index 04ee111009..717823c458 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerSectionMapProposalDialog.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/DebuggerSectionMapProposalDialog.java @@ -15,6 +15,7 @@ */ package ghidra.app.plugin.core.debug.gui.modules; +import java.util.List; import java.util.Map; import java.util.function.BiConsumer; import java.util.function.Function; @@ -35,20 +36,19 @@ import ghidra.util.Swing; public class DebuggerSectionMapProposalDialog extends AbstractDebuggerMapProposalDialog { - static final String BLANK = ""; static final int BUTTON_SIZE = 32; protected enum SectionMapTableColumns implements EnumeratedTableColumn { - REMOVE("Remove", String.class, e -> BLANK, (e, v) -> nop()), + REMOVE("Remove", String.class, e -> "Remove Proposed Entry", (e, v) -> nop()), MODULE_NAME("Module", String.class, e -> e.getModule().getName()), SECTION_NAME("Section", String.class, e -> e.getSection().getName()), DYNAMIC_BASE("Dynamic Base", Address.class, e -> e.getSection().getStart()), + CHOOSE("Choose", String.class, e -> "Choose Block", (e, s) -> nop()), PROGRAM_NAME("Program", String.class, e -> e.getProgram().getName()), BLOCK_NAME("Block", String.class, e -> e.getBlock().getName()), STATIC_BASE("Static Base", Address.class, e -> e.getBlock().getStart()), - SIZE("Size", Long.class, e -> e.getLength()), - CHOOSE("Choose", String.class, e -> BLANK, (e, s) -> nop()); + SIZE("Size", Long.class, e -> e.getLength()); private final String header; private final Class cls; @@ -98,6 +98,19 @@ public class DebuggerSectionMapProposalDialog } } + protected static class SectionMapPropsalTableModel extends + DefaultEnumeratedColumnTableModel { + + public SectionMapPropsalTableModel() { + super("Section Map", SectionMapTableColumns.class); + } + + @Override + public List defaultSortOrder() { + return List.of(SectionMapTableColumns.MODULE_NAME, SectionMapTableColumns.SECTION_NAME); + } + } + private final DebuggerModulesProvider provider; public DebuggerSectionMapProposalDialog(DebuggerModulesProvider provider) { @@ -106,8 +119,8 @@ public class DebuggerSectionMapProposalDialog } @Override - protected EnumeratedColumnTableModel createTableModel() { - return new DefaultEnumeratedColumnTableModel<>("Section Map", SectionMapTableColumns.class); + protected SectionMapPropsalTableModel createTableModel() { + return new SectionMapPropsalTableModel(); } @Override @@ -121,9 +134,19 @@ public class DebuggerSectionMapProposalDialog CellEditorUtils.installButton(table, filterPanel, removeCol, DebuggerResources.ICON_DELETE, BUTTON_SIZE, this::removeEntry); + TableColumn dynBaseCol = + columnModel.getColumn(SectionMapTableColumns.DYNAMIC_BASE.ordinal()); + dynBaseCol.setCellRenderer(CustomToStringCellRenderer.MONO_OBJECT); + TableColumn chooseCol = columnModel.getColumn(SectionMapTableColumns.CHOOSE.ordinal()); CellEditorUtils.installButton(table, filterPanel, chooseCol, DebuggerResources.ICON_PROGRAM, BUTTON_SIZE, this::chooseAndSetBlock); + + TableColumn stBaseCol = columnModel.getColumn(SectionMapTableColumns.STATIC_BASE.ordinal()); + stBaseCol.setCellRenderer(CustomToStringCellRenderer.MONO_OBJECT); + + TableColumn sizeCol = columnModel.getColumn(SectionMapTableColumns.SIZE.ordinal()); + sizeCol.setCellRenderer(CustomToStringCellRenderer.MONO_ULONG_HEX); } private void chooseAndSetBlock(SectionMapEntry entry) { diff --git a/Ghidra/Debug/ProposedUtils/src/main/java/docking/widgets/table/IconButtonTableCellEditor.java b/Ghidra/Debug/ProposedUtils/src/main/java/docking/widgets/table/IconButtonTableCellEditor.java index 1ddcd6de77..983f753c6e 100644 --- a/Ghidra/Debug/ProposedUtils/src/main/java/docking/widgets/table/IconButtonTableCellEditor.java +++ b/Ghidra/Debug/ProposedUtils/src/main/java/docking/widgets/table/IconButtonTableCellEditor.java @@ -51,6 +51,7 @@ public class IconButtonTableCellEditor extends AbstractCellEditor public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { this.row = filterPanel.getRowObject(row); + button.setToolTipText(value.toString()); return button; } diff --git a/Ghidra/Debug/ProposedUtils/src/main/java/docking/widgets/table/IconButtonTableCellRenderer.java b/Ghidra/Debug/ProposedUtils/src/main/java/docking/widgets/table/IconButtonTableCellRenderer.java index bba951ea83..d471463b68 100644 --- a/Ghidra/Debug/ProposedUtils/src/main/java/docking/widgets/table/IconButtonTableCellRenderer.java +++ b/Ghidra/Debug/ProposedUtils/src/main/java/docking/widgets/table/IconButtonTableCellRenderer.java @@ -15,27 +15,31 @@ */ package docking.widgets.table; -import java.awt.Component; -import java.awt.Dimension; +import java.awt.*; -import javax.swing.Icon; -import javax.swing.JButton; +import javax.swing.*; import ghidra.docking.settings.Settings; import ghidra.util.table.column.AbstractGhidraColumnRenderer; public class IconButtonTableCellRenderer extends AbstractGhidraColumnRenderer { + protected final JPanel panel = new JPanel(); protected final JButton button = new JButton(""); public IconButtonTableCellRenderer(Icon icon, int buttonSize) { button.setIcon(icon); button.setMinimumSize(new Dimension(buttonSize, buttonSize)); + panel.setMinimumSize(new Dimension(buttonSize, buttonSize)); + panel.setLayout(new BorderLayout()); + panel.add(button); } @Override public Component getTableCellRendererComponent(GTableCellRenderingData data) { - return button; + super.getTableCellRendererComponent(data); // Waste, but sets background + panel.setBackground(getBackground()); + return panel; } @Override