diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/FindPossibleReferencesPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/FindPossibleReferencesPlugin.java index 0ae5bcc55d..9872e7498f 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/FindPossibleReferencesPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/FindPossibleReferencesPlugin.java @@ -22,6 +22,7 @@ import docking.ActionContext; import docking.ComponentProvider; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import ghidra.app.CorePluginPackage; import ghidra.app.context.*; import ghidra.app.events.ProgramClosedPluginEvent; @@ -33,7 +34,6 @@ import ghidra.app.util.HelpTopics; import ghidra.app.util.query.TableService; import ghidra.framework.plugintool.*; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.address.*; import ghidra.program.model.listing.CodeUnit; import ghidra.program.model.listing.Program; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/archive/ArchivePlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/archive/ArchivePlugin.java index a8d486d338..5bcf32c40f 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/archive/ArchivePlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/archive/ArchivePlugin.java @@ -25,6 +25,7 @@ import java.util.zip.ZipEntry; import docking.ActionContext; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import ghidra.app.CorePluginPackage; import ghidra.framework.main.*; import ghidra.framework.model.*; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/blockmodel/BlockModelServicePlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/blockmodel/BlockModelServicePlugin.java index 1e9c58ba48..196551dc82 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/blockmodel/BlockModelServicePlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/blockmodel/BlockModelServicePlugin.java @@ -15,6 +15,12 @@ */ package ghidra.app.plugin.core.blockmodel; +import java.lang.reflect.Constructor; +import java.util.ArrayList; +import java.util.TreeMap; + +import docking.options.editor.StringWithChoicesEditor; +import docking.tool.ToolConstants; import ghidra.app.CorePluginPackage; import ghidra.app.plugin.PluginCategoryNames; import ghidra.app.plugin.ProgramPlugin; @@ -31,12 +37,6 @@ import ghidra.util.datastruct.WeakDataStructureFactory; import ghidra.util.datastruct.WeakSet; import ghidra.util.exception.NotFoundException; -import java.lang.reflect.Constructor; -import java.util.ArrayList; -import java.util.TreeMap; - -import docking.options.editor.StringWithChoicesEditor; - /** * Provides a service for tracking the selected basic/subroutine block models for a tool. * Methods are provided for obtaining an instance of the active or arbitrary block model. @@ -64,9 +64,9 @@ public class BlockModelServicePlugin extends ProgramPlugin private static final String SUB_OPTION = "Subroutine Block Model"; private TreeMap basicModelsByName = - new TreeMap(); + new TreeMap<>(); private TreeMap subroutineModelsByName = - new TreeMap(); + new TreeMap<>(); private BlockModelInfo activeBasicModel; private BlockModelInfo activeSubroutineModel; @@ -103,9 +103,8 @@ public class BlockModelServicePlugin extends ProgramPlugin info = new BlockModelInfo(OverlapCodeSubModel.OVERLAP_MODEL_NAME, OverlapCodeSubModel.class); subroutineModelsByName.put(OverlapCodeSubModel.OVERLAP_MODEL_NAME, info); - info = - new BlockModelInfo(IsolatedEntrySubModel.ISOLATED_MODEL_NAME, - IsolatedEntrySubModel.class); + info = new BlockModelInfo(IsolatedEntrySubModel.ISOLATED_MODEL_NAME, + IsolatedEntrySubModel.class); subroutineModelsByName.put(IsolatedEntrySubModel.ISOLATED_MODEL_NAME, info); info = new BlockModelInfo(OverlapCodeSubModel.OVERLAP_MODEL_NAME, PartitionCodeSubModel.class); @@ -115,7 +114,7 @@ public class BlockModelServicePlugin extends ProgramPlugin selectedSubroutineModelName = availableModelNames[0]; // Install model selection option in Tool panel - options = tool.getOptions("Tool"); + options = tool.getOptions(ToolConstants.TOOL_OPTIONS); editor = new StringWithChoicesEditor(availableModelNames); options.registerOption(SUB_OPTION, OptionType.STRING_TYPE, selectedSubroutineModelName, null, "The default subroutine model used when creating call graphs.", editor); @@ -426,7 +425,7 @@ public class BlockModelServicePlugin extends ProgramPlugin String defaultModelName = (modelType == BASIC_MODEL) ? DEFAULT_BLOCK_MODEL_NAME : DEFAULT_SUBROUTINE_MODEL_NAME; - ArrayList list = new ArrayList(); + ArrayList list = new ArrayList<>(); for (String modelName : models.keySet()) { if (modelName.equals(defaultModelName)) { list.add(0, modelName); diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/checksums/ComputeChecksumsPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/checksums/ComputeChecksumsPlugin.java index e221430f0f..20a7c608a2 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/checksums/ComputeChecksumsPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/checksums/ComputeChecksumsPlugin.java @@ -18,13 +18,13 @@ package ghidra.app.plugin.core.checksums; import docking.ActionContext; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import ghidra.app.CorePluginPackage; import ghidra.app.plugin.PluginCategoryNames; import ghidra.app.plugin.ProgramPlugin; import ghidra.framework.plugintool.PluginInfo; import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.listing.Program; import ghidra.program.util.ProgramSelection; import ghidra.util.HelpLocation; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/clear/ClearPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/clear/ClearPlugin.java index a40946a69e..81235b8507 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/clear/ClearPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/clear/ClearPlugin.java @@ -19,6 +19,7 @@ import java.awt.event.KeyEvent; import docking.ActionContext; import docking.action.*; +import docking.tool.ToolConstants; import ghidra.app.CorePluginPackage; import ghidra.app.context.ListingActionContext; import ghidra.app.context.ListingContextAction; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/CodeBrowserPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/CodeBrowserPlugin.java index 0d5259ff24..e4abfff6bf 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/CodeBrowserPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/CodeBrowserPlugin.java @@ -32,6 +32,7 @@ import org.jdom.Element; import docking.ActionContext; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import docking.widgets.fieldpanel.*; import docking.widgets.fieldpanel.field.Field; import docking.widgets.fieldpanel.support.*; @@ -57,7 +58,6 @@ import ghidra.framework.model.*; import ghidra.framework.options.*; import ghidra.framework.plugintool.*; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.address.*; import ghidra.program.model.listing.*; import ghidra.program.util.ProgramLocation; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/actions/ClearSelectionAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/actions/ClearSelectionAction.java index aefdbe7cca..24a9e8cc38 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/actions/ClearSelectionAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/actions/ClearSelectionAction.java @@ -17,9 +17,9 @@ package ghidra.app.plugin.core.codebrowser.actions; import docking.ActionContext; import docking.action.MenuData; +import docking.tool.ToolConstants; import ghidra.app.plugin.core.codebrowser.CodeViewerProvider; import ghidra.app.util.HelpTopics; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.util.ProgramSelection; import ghidra.util.HelpLocation; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/actions/GotoNextFunctionAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/actions/GotoNextFunctionAction.java index bf031b3299..75558fc13c 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/actions/GotoNextFunctionAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/actions/GotoNextFunctionAction.java @@ -22,12 +22,12 @@ import javax.swing.KeyStroke; import docking.action.KeyBindingData; import docking.action.MenuData; +import docking.tool.ToolConstants; import ghidra.app.nav.Navigatable; import ghidra.app.plugin.core.codebrowser.CodeViewerActionContext; import ghidra.app.services.GoToService; import ghidra.app.util.HelpTopics; import ghidra.framework.plugintool.PluginTool; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.address.Address; import ghidra.program.model.listing.*; import ghidra.program.util.FunctionSignatureFieldLocation; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/actions/GotoPreviousFunctionAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/actions/GotoPreviousFunctionAction.java index a05ab9684c..64a663510e 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/actions/GotoPreviousFunctionAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/actions/GotoPreviousFunctionAction.java @@ -22,12 +22,12 @@ import javax.swing.KeyStroke; import docking.action.KeyBindingData; import docking.action.MenuData; +import docking.tool.ToolConstants; import ghidra.app.nav.Navigatable; import ghidra.app.plugin.core.codebrowser.CodeViewerActionContext; import ghidra.app.services.GoToService; import ghidra.app.util.HelpTopics; import ghidra.framework.plugintool.PluginTool; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.address.Address; import ghidra.program.model.listing.*; import ghidra.program.util.FunctionSignatureFieldLocation; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/actions/SelectAllAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/actions/SelectAllAction.java index 60a2831d86..981eef72eb 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/actions/SelectAllAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/actions/SelectAllAction.java @@ -17,7 +17,6 @@ package ghidra.app.plugin.core.codebrowser.actions; import ghidra.app.plugin.core.codebrowser.CodeViewerProvider; import ghidra.app.util.HelpTopics; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.util.HelpLocation; import java.awt.event.InputEvent; @@ -26,6 +25,7 @@ import java.awt.event.KeyEvent; import docking.ActionContext; import docking.action.KeyBindingData; import docking.action.MenuData; +import docking.tool.ToolConstants; /** * Action for adding all fields to the current format. diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/actions/SelectComplementAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/actions/SelectComplementAction.java index 955160fda8..661830ee3b 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/actions/SelectComplementAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/codebrowser/actions/SelectComplementAction.java @@ -17,11 +17,11 @@ package ghidra.app.plugin.core.codebrowser.actions; import ghidra.app.plugin.core.codebrowser.CodeViewerActionContext; import ghidra.app.plugin.core.codebrowser.CodeViewerProvider; import ghidra.app.util.HelpTopics; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.util.ProgramSelection; import ghidra.util.HelpLocation; import docking.ActionContext; import docking.action.MenuData; +import docking.tool.ToolConstants; /** * Action for changing the selection to the complement of all the currently diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/colorizer/NextColorRangeAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/colorizer/NextColorRangeAction.java index 3dc9e3c32c..80a5bec121 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/colorizer/NextColorRangeAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/colorizer/NextColorRangeAction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,10 +20,10 @@ import ghidra.app.nav.NextRangeAction; import ghidra.app.plugin.PluginCategoryNames; import ghidra.app.plugin.core.navigation.NavigationOptions; import ghidra.framework.plugintool.PluginTool; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.util.ProgramSelection; import ghidra.util.HelpLocation; import docking.action.MenuData; +import docking.tool.ToolConstants; public class NextColorRangeAction extends NextRangeAction { diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/colorizer/PreviousColorRangeAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/colorizer/PreviousColorRangeAction.java index c8ddf42a48..01dc7164cc 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/colorizer/PreviousColorRangeAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/colorizer/PreviousColorRangeAction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,10 +20,10 @@ import ghidra.app.nav.PreviousRangeAction; import ghidra.app.plugin.PluginCategoryNames; import ghidra.app.plugin.core.navigation.NavigationOptions; import ghidra.framework.plugintool.PluginTool; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.util.ProgramSelection; import ghidra.util.HelpLocation; import docking.action.MenuData; +import docking.tool.ToolConstants; public class PreviousColorRangeAction extends PreviousRangeAction { diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/cparser/CParserPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/cparser/CParserPlugin.java index ff1bc18ef6..1130564c6e 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/cparser/CParserPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/cparser/CParserPlugin.java @@ -24,6 +24,7 @@ import javax.swing.SwingUtilities; import docking.ActionContext; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import docking.widgets.OptionDialog; import ghidra.app.CorePluginPackage; import ghidra.app.plugin.PluginCategoryNames; @@ -37,7 +38,6 @@ import ghidra.framework.options.SaveState; import ghidra.framework.plugintool.PluginInfo; import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.database.data.ProgramDataTypeManager; import ghidra.program.model.data.*; import ghidra.program.model.listing.Program; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/disassembler/AutoTableDisassemblerPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/disassembler/AutoTableDisassemblerPlugin.java index bc9a610df5..0f4a953883 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/disassembler/AutoTableDisassemblerPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/disassembler/AutoTableDisassemblerPlugin.java @@ -18,6 +18,7 @@ package ghidra.app.plugin.core.disassembler; import docking.ActionContext; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import docking.widgets.table.GTable; import docking.widgets.table.threaded.ThreadedTableModelListener; import ghidra.app.CorePluginPackage; @@ -32,7 +33,6 @@ import ghidra.framework.model.*; import ghidra.framework.plugintool.PluginInfo; import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.address.Address; import ghidra.program.model.address.AddressSetView; import ghidra.program.model.lang.RegisterValue; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/help/AboutProgramPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/help/AboutProgramPlugin.java index b25f3c4453..5d8954a2c1 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/help/AboutProgramPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/help/AboutProgramPlugin.java @@ -20,6 +20,7 @@ import java.util.Map; import docking.ActionContext; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import ghidra.app.CorePluginPackage; import ghidra.app.context.ProgramActionContext; import ghidra.app.context.ProgramContextAction; @@ -33,7 +34,6 @@ import ghidra.framework.main.datatable.ProjectDataContextAction; import ghidra.framework.model.DomainFile; import ghidra.framework.plugintool.*; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.listing.Program; import ghidra.util.HelpLocation; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/help/ProcessorListPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/help/ProcessorListPlugin.java index 24e54a428a..421140161e 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/help/ProcessorListPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/help/ProcessorListPlugin.java @@ -27,6 +27,7 @@ import docking.action.DockingAction; import docking.action.MenuData; import docking.dnd.GClipboard; import docking.dnd.StringTransferable; +import docking.tool.ToolConstants; import docking.widgets.table.AbstractSortedTableModel; import docking.widgets.table.GTable; import ghidra.app.CorePluginPackage; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/highlight/SetHighlightPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/highlight/SetHighlightPlugin.java index c3483a246f..752f828b43 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/highlight/SetHighlightPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/highlight/SetHighlightPlugin.java @@ -19,6 +19,7 @@ import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import docking.action.*; +import docking.tool.ToolConstants; import ghidra.app.CorePluginPackage; import ghidra.app.context.NavigatableActionContext; import ghidra.app.context.NavigatableContextAction; @@ -28,7 +29,6 @@ import ghidra.app.plugin.PluginCategoryNames; import ghidra.app.services.GoToService; import ghidra.framework.plugintool.*; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.util.InteriorSelection; import ghidra.program.util.ProgramSelection; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/instructionsearch/InstructionSearchPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/instructionsearch/InstructionSearchPlugin.java index 1a7b8321c3..ff24c07a60 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/instructionsearch/InstructionSearchPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/instructionsearch/InstructionSearchPlugin.java @@ -21,6 +21,7 @@ import java.util.Set; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import ghidra.app.CorePluginPackage; import ghidra.app.context.*; import ghidra.app.plugin.PluginCategoryNames; @@ -31,7 +32,6 @@ import ghidra.app.util.query.TableService; import ghidra.framework.plugintool.PluginInfo; import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.address.*; import ghidra.program.model.listing.*; import ghidra.program.model.mem.MemoryBlock; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/label/AllHistoryAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/label/AllHistoryAction.java index c1bf4c643c..cc5f5060a2 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/label/AllHistoryAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/label/AllHistoryAction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,12 +18,12 @@ package ghidra.app.plugin.core.label; import ghidra.app.context.ListingActionContext; import ghidra.app.context.ListingContextAction; import ghidra.framework.plugintool.PluginTool; -import ghidra.framework.plugintool.util.ToolConstants; import java.awt.event.KeyEvent; import docking.action.KeyBindingData; import docking.action.MenuData; +import docking.tool.ToolConstants; public class AllHistoryAction extends ListingContextAction { diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/AbstractNextPreviousAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/AbstractNextPreviousAction.java index 50fcf5a63f..d5bf9ee1c5 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/AbstractNextPreviousAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/AbstractNextPreviousAction.java @@ -18,6 +18,7 @@ package ghidra.app.plugin.core.navigation; import javax.swing.*; import docking.action.*; +import docking.tool.ToolConstants; import ghidra.app.context.ListingActionContext; import ghidra.app.nav.Navigatable; import ghidra.app.plugin.core.codebrowser.CodeViewerActionContext; @@ -25,7 +26,6 @@ import ghidra.app.plugin.core.codebrowser.actions.CodeViewerContextAction; import ghidra.app.services.GoToService; import ghidra.app.util.HelpTopics; import ghidra.framework.plugintool.PluginTool; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.address.Address; import ghidra.program.model.listing.Program; import ghidra.program.util.AddressFieldLocation; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/GoToAddressLabelPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/GoToAddressLabelPlugin.java index d76d6620ae..eef0b65f3c 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/GoToAddressLabelPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/GoToAddressLabelPlugin.java @@ -18,6 +18,7 @@ package ghidra.app.plugin.core.navigation; import java.awt.event.KeyEvent; import docking.action.*; +import docking.tool.ToolConstants; import ghidra.GhidraOptions; import ghidra.app.CorePluginPackage; import ghidra.app.context.NavigatableActionContext; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NavigationHistoryPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NavigationHistoryPlugin.java index 74927fda7a..15ec063355 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NavigationHistoryPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NavigationHistoryPlugin.java @@ -19,6 +19,7 @@ import java.util.*; import org.jdom.Element; +import docking.tool.ToolConstants; import ghidra.app.CorePluginPackage; import ghidra.app.events.ProgramClosedPluginEvent; import ghidra.app.nav.*; @@ -27,7 +28,6 @@ import ghidra.app.services.*; import ghidra.framework.options.*; import ghidra.framework.plugintool.*; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.listing.Program; import ghidra.util.Msg; import ghidra.util.bean.opteditor.OptionsVetoException; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NextHighlightedRangeAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NextHighlightedRangeAction.java index 29a5f8c667..d0635ee953 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NextHighlightedRangeAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NextHighlightedRangeAction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +20,6 @@ import ghidra.app.nav.NextRangeAction; import ghidra.app.plugin.PluginCategoryNames; import ghidra.app.util.HelpTopics; import ghidra.framework.plugintool.PluginTool; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.util.ProgramSelection; import ghidra.util.HelpLocation; @@ -30,6 +28,7 @@ import java.awt.event.KeyEvent; import resources.ResourceManager; import docking.action.*; +import docking.tool.ToolConstants; public class NextHighlightedRangeAction extends NextRangeAction { diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NextPrevCodeUnitPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NextPrevCodeUnitPlugin.java index c92b4831d7..b8e936e27d 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NextPrevCodeUnitPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NextPrevCodeUnitPlugin.java @@ -32,6 +32,7 @@ import javax.swing.Icon; import resources.ResourceManager; import docking.action.*; +import docking.tool.ToolConstants; /** * The NextPrevCodeUnitPlugin generates a GoTo event based on where the cursor diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NextPreviousBookmarkAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NextPreviousBookmarkAction.java index 1fc5759c47..426f7cb6a9 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NextPreviousBookmarkAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NextPreviousBookmarkAction.java @@ -26,6 +26,7 @@ import docking.ActionContext; import docking.action.*; import docking.menu.ActionState; import docking.menu.MultiStateDockingAction; +import docking.tool.ToolConstants; import docking.widgets.EventTrigger; import ghidra.app.context.ListingActionContext; import ghidra.app.nav.Navigatable; @@ -33,7 +34,6 @@ import ghidra.app.plugin.core.codebrowser.CodeViewerActionContext; import ghidra.app.services.GoToService; import ghidra.app.util.HelpTopics; import ghidra.framework.plugintool.PluginTool; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.address.Address; import ghidra.program.model.listing.*; import ghidra.util.HelpLocation; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NextPreviousMarkerAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NextPreviousMarkerAction.java index bb98c203d9..d4616c954c 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NextPreviousMarkerAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NextPreviousMarkerAction.java @@ -26,6 +26,7 @@ import docking.ActionContext; import docking.action.*; import docking.menu.ActionState; import docking.menu.MultiStateDockingAction; +import docking.tool.ToolConstants; import docking.widgets.EventTrigger; import ghidra.app.context.ListingActionContext; import ghidra.app.nav.Navigatable; @@ -34,7 +35,6 @@ import ghidra.app.services.GoToService; import ghidra.app.services.MarkerSet; import ghidra.app.util.HelpTopics; import ghidra.framework.plugintool.PluginTool; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.address.Address; import ghidra.program.model.listing.BookmarkType; import ghidra.util.HelpLocation; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NextSelectedRangeAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NextSelectedRangeAction.java index 3b872dc9dd..0ada9fb2ec 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NextSelectedRangeAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/NextSelectedRangeAction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +20,6 @@ import ghidra.app.nav.NextRangeAction; import ghidra.app.plugin.PluginCategoryNames; import ghidra.app.util.HelpTopics; import ghidra.framework.plugintool.PluginTool; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.util.ProgramSelection; import ghidra.util.HelpLocation; @@ -30,6 +28,7 @@ import java.awt.event.KeyEvent; import resources.ResourceManager; import docking.action.*; +import docking.tool.ToolConstants; public class NextSelectedRangeAction extends NextRangeAction { diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/PreviousHighlightedRangeAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/PreviousHighlightedRangeAction.java index bf14b47bab..d48a5320ba 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/PreviousHighlightedRangeAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/PreviousHighlightedRangeAction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +20,6 @@ import ghidra.app.nav.PreviousRangeAction; import ghidra.app.plugin.PluginCategoryNames; import ghidra.app.util.HelpTopics; import ghidra.framework.plugintool.PluginTool; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.util.ProgramSelection; import ghidra.util.HelpLocation; @@ -30,6 +28,7 @@ import java.awt.event.KeyEvent; import resources.ResourceManager; import docking.action.*; +import docking.tool.ToolConstants; public class PreviousHighlightedRangeAction extends PreviousRangeAction { diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/PreviousSelectedRangeAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/PreviousSelectedRangeAction.java index 8b8f198327..91cebfd86e 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/PreviousSelectedRangeAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/PreviousSelectedRangeAction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,7 +20,6 @@ import ghidra.app.nav.PreviousRangeAction; import ghidra.app.plugin.PluginCategoryNames; import ghidra.app.util.HelpTopics; import ghidra.framework.plugintool.PluginTool; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.util.ProgramSelection; import ghidra.util.HelpLocation; @@ -32,6 +30,7 @@ import javax.swing.ImageIcon; import resources.ResourceManager; import docking.action.*; +import docking.tool.ToolConstants; public class PreviousSelectedRangeAction extends PreviousRangeAction { diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/ProviderNavigationPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/ProviderNavigationPlugin.java index 4f6d98ff7e..b02c4e7267 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/ProviderNavigationPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/navigation/ProviderNavigationPlugin.java @@ -22,11 +22,11 @@ import javax.swing.KeyStroke; import docking.*; import docking.action.*; +import docking.tool.ToolConstants; import ghidra.app.CorePluginPackage; import ghidra.app.plugin.PluginCategoryNames; import ghidra.framework.plugintool.*; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.util.HelpLocation; //@formatter:off diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/printing/PrintingPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/printing/PrintingPlugin.java index d39dab780d..58cfe51b4d 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/printing/PrintingPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/printing/PrintingPlugin.java @@ -26,6 +26,7 @@ import javax.swing.SwingUtilities; import docking.ActionContext; import docking.action.*; +import docking.tool.ToolConstants; import docking.widgets.fieldpanel.*; import docking.widgets.fieldpanel.support.AnchoredLayout; import ghidra.app.CorePluginPackage; @@ -36,7 +37,6 @@ import ghidra.app.util.viewer.util.AddressIndexMap; import ghidra.framework.plugintool.PluginInfo; import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.address.*; import ghidra.program.model.listing.Program; import ghidra.util.HelpLocation; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/MultiTabPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/MultiTabPlugin.java index 9602ece236..a43d2a1138 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/MultiTabPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/MultiTabPlugin.java @@ -24,6 +24,7 @@ import javax.swing.Timer; import docking.ActionContext; import docking.DockingUtils; import docking.action.*; +import docking.tool.ToolConstants; import ghidra.app.CorePluginPackage; import ghidra.app.events.*; import ghidra.app.plugin.PluginCategoryNames; @@ -32,7 +33,6 @@ import ghidra.app.services.ProgramManager; import ghidra.framework.model.*; import ghidra.framework.plugintool.*; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.listing.Program; import ghidra.util.HelpLocation; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/ProgramManagerPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/ProgramManagerPlugin.java index 6bd59ee33c..0349947af0 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/ProgramManagerPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/ProgramManagerPlugin.java @@ -30,6 +30,7 @@ import javax.swing.Icon; import docking.ActionContext; import docking.action.*; import docking.options.editor.*; +import docking.tool.ToolConstants; import ghidra.app.CorePluginPackage; import ghidra.app.context.ProgramActionContext; import ghidra.app.context.ProgramContextAction; @@ -46,7 +47,6 @@ import ghidra.framework.model.*; import ghidra.framework.options.*; import ghidra.framework.plugintool.*; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.framework.protocol.ghidra.*; import ghidra.program.database.ProgramContentHandler; import ghidra.program.model.address.*; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/RedoAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/RedoAction.java index dec19e5e6f..32de860536 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/RedoAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/RedoAction.java @@ -22,12 +22,12 @@ import javax.swing.Icon; import docking.ActionContext; import docking.action.*; +import docking.tool.ToolConstants; import ghidra.app.context.ProgramActionContext; import ghidra.app.context.ProgramContextAction; import ghidra.app.services.GoToService; import ghidra.app.services.NavigationHistoryService; import ghidra.framework.plugintool.PluginTool; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.listing.Program; import ghidra.util.*; import resources.ResourceManager; @@ -38,7 +38,7 @@ public class RedoAction extends ProgramContextAction { public RedoAction(PluginTool tool, String owner) { super("Redo", owner); this.tool = tool; - setHelpLocation(new HelpLocation("Tool", "Redo")); + setHelpLocation(new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Redo")); String[] menuPath = { ToolConstants.MENU_EDIT, "&Redo" }; String group = "Undo"; Icon icon = ResourceManager.loadImage("images/redo.png"); diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/UndoAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/UndoAction.java index f7acb78497..84b0e8d939 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/UndoAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/progmgr/UndoAction.java @@ -22,12 +22,12 @@ import javax.swing.Icon; import docking.ActionContext; import docking.action.*; +import docking.tool.ToolConstants; import ghidra.app.context.ProgramActionContext; import ghidra.app.context.ProgramContextAction; import ghidra.app.services.GoToService; import ghidra.app.services.NavigationHistoryService; import ghidra.framework.plugintool.PluginTool; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.listing.Program; import ghidra.util.*; import resources.ResourceManager; @@ -38,7 +38,7 @@ public class UndoAction extends ProgramContextAction { public UndoAction(PluginTool tool, String owner) { super("Undo", owner); this.tool = tool; - setHelpLocation(new HelpLocation("Tool", "Undo")); + setHelpLocation(new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Undo")); String[] menuPath = { ToolConstants.MENU_EDIT, "&Undo" }; Icon icon = ResourceManager.loadImage("images/undo.png"); MenuData menuData = new MenuData(menuPath, icon, "Undo"); diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/scalartable/ScalarSearchPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/scalartable/ScalarSearchPlugin.java index fc2323c378..97087bfe10 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/scalartable/ScalarSearchPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/scalartable/ScalarSearchPlugin.java @@ -19,6 +19,7 @@ import java.util.*; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import ghidra.app.CorePluginPackage; import ghidra.app.context.*; import ghidra.app.events.ViewChangedPluginEvent; @@ -29,7 +30,6 @@ import ghidra.framework.model.*; import ghidra.framework.plugintool.PluginInfo; import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.listing.Program; import ghidra.program.util.ChangeManager; import ghidra.util.HelpLocation; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/script/GhidraScriptActionManager.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/script/GhidraScriptActionManager.java index de3105d085..f509eb1219 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/script/GhidraScriptActionManager.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/script/GhidraScriptActionManager.java @@ -30,13 +30,13 @@ import docking.ActionContext; import docking.DockingUtils; import docking.action.*; import docking.actions.KeyBindingUtils; +import docking.tool.ToolConstants; import docking.widgets.table.GTable; import generic.jar.ResourceFile; import ghidra.app.script.GhidraScriptUtil; import ghidra.app.script.ScriptInfo; import ghidra.framework.Application; import ghidra.framework.options.SaveState; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.util.*; import ghidra.util.task.*; import resources.Icons; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchmem/MemSearchPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchmem/MemSearchPlugin.java index c43136cf0e..f94bf55c43 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchmem/MemSearchPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchmem/MemSearchPlugin.java @@ -25,6 +25,7 @@ import javax.swing.JComponent; import docking.*; import docking.action.*; +import docking.tool.ToolConstants; import docking.widgets.fieldpanel.support.Highlight; import docking.widgets.table.threaded.*; import ghidra.GhidraOptions; @@ -44,7 +45,6 @@ import ghidra.framework.model.DomainObject; import ghidra.framework.options.*; import ghidra.framework.plugintool.*; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.address.Address; import ghidra.program.model.listing.CodeUnit; import ghidra.program.model.listing.Program; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchtext/SearchTextPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchtext/SearchTextPlugin.java index ae5899b2ae..7478f97a97 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchtext/SearchTextPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchtext/SearchTextPlugin.java @@ -27,6 +27,7 @@ import javax.swing.ImageIcon; import docking.*; import docking.action.*; +import docking.tool.ToolConstants; import docking.widgets.fieldpanel.support.Highlight; import docking.widgets.table.threaded.*; import ghidra.GhidraOptions; @@ -49,7 +50,6 @@ import ghidra.framework.options.ToolOptions; import ghidra.framework.plugintool.PluginInfo; import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.address.*; import ghidra.program.model.listing.*; import ghidra.program.model.mem.Memory; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/select/RestoreSelectionPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/select/RestoreSelectionPlugin.java index 00621e0bd3..742cb12604 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/select/RestoreSelectionPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/select/RestoreSelectionPlugin.java @@ -34,6 +34,7 @@ import java.util.Map; import docking.ActionContext; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; //@formatter:off @PluginInfo( diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/select/SelectBlockPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/select/SelectBlockPlugin.java index 423ae4a668..04c80bf542 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/select/SelectBlockPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/select/SelectBlockPlugin.java @@ -27,6 +27,7 @@ import docking.ActionContext; import docking.ComponentProvider; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; /** * This plugin class contains the structure needed for the user to diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/select/flow/SelectByFlowAction.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/select/flow/SelectByFlowAction.java index 32e0a62ee5..fe0321b579 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/select/flow/SelectByFlowAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/select/flow/SelectByFlowAction.java @@ -18,11 +18,11 @@ package ghidra.app.plugin.core.select.flow; import ghidra.app.context.ListingActionContext; import ghidra.app.context.ListingContextAction; import ghidra.app.util.HelpTopics; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.address.Address; import ghidra.program.model.listing.CodeUnit; import ghidra.util.HelpLocation; import docking.action.MenuData; +import docking.tool.ToolConstants; /** * SelectByFlowAction allows the user to Select Code By Flowing from diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/select/flow/SelectByScopedFlowPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/select/flow/SelectByScopedFlowPlugin.java index eef4543d9c..b4974d246b 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/select/flow/SelectByScopedFlowPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/select/flow/SelectByScopedFlowPlugin.java @@ -19,6 +19,7 @@ import java.util.*; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import edu.uci.ics.jung.graph.DirectedSparseGraph; import edu.uci.ics.jung.graph.Graph; import ghidra.app.CorePluginPackage; @@ -29,7 +30,6 @@ import ghidra.app.plugin.ProgramPlugin; import ghidra.framework.plugintool.PluginInfo; import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.graph.GDirectedGraph; import ghidra.graph.GraphAlgorithms; import ghidra.graph.jung.JungToGDirectedGraphAdapter; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/select/qualified/QualifiedSelectionPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/select/qualified/QualifiedSelectionPlugin.java index 99cf88819e..c670f4316a 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/select/qualified/QualifiedSelectionPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/select/qualified/QualifiedSelectionPlugin.java @@ -17,6 +17,7 @@ package ghidra.app.plugin.core.select.qualified; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import ghidra.app.CorePluginPackage; import ghidra.app.context.*; import ghidra.app.events.ProgramSelectionPluginEvent; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/string/StringTablePlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/string/StringTablePlugin.java index ce087c6f34..18949e4631 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/string/StringTablePlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/string/StringTablePlugin.java @@ -19,6 +19,7 @@ import java.util.ArrayList; import java.util.List; import docking.action.MenuData; +import docking.tool.ToolConstants; import ghidra.app.CorePluginPackage; import ghidra.app.context.NavigatableActionContext; import ghidra.app.context.NavigatableContextAction; @@ -29,7 +30,6 @@ import ghidra.app.util.HelpTopics; import ghidra.framework.plugintool.PluginInfo; import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.address.*; import ghidra.program.model.listing.Program; import ghidra.program.util.ProgramSelection; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/totd/TipOfTheDayPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/totd/TipOfTheDayPlugin.java index f9765f74dc..aa8a3cdf5b 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/totd/TipOfTheDayPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/totd/TipOfTheDayPlugin.java @@ -22,11 +22,12 @@ import java.util.List; import docking.ActionContext; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import ghidra.app.CorePluginPackage; import ghidra.app.plugin.PluginCategoryNames; import ghidra.framework.main.FrontEndOnly; import ghidra.framework.plugintool.*; -import ghidra.framework.plugintool.util.*; +import ghidra.framework.plugintool.util.PluginStatus; import ghidra.framework.preferences.Preferences; import ghidra.util.HelpLocation; import ghidra.util.SystemUtilities; @@ -63,7 +64,7 @@ public class TipOfTheDayPlugin extends Plugin implements FrontEndOnly { ToolConstants.HELP_CONTENTS_MENU_GROUP)); action.setEnabled(true); - action.setHelpLocation(new HelpLocation("Tool", "Tip_of_the_day")); + action.setHelpLocation(new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Tip_of_the_day")); tool.addAction(action); List tips = null; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/validator/ValidateProgramPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/validator/ValidateProgramPlugin.java index ca14446935..e509583acc 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/validator/ValidateProgramPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/validator/ValidateProgramPlugin.java @@ -33,6 +33,7 @@ import java.util.*; import docking.ActionContext; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import docking.widgets.conditiontestpanel.ConditionTester; /** diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/debug/JavaHelpPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/debug/JavaHelpPlugin.java index b6a9a83882..631238e07c 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/debug/JavaHelpPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/debug/JavaHelpPlugin.java @@ -27,13 +27,13 @@ import docking.action.DockingAction; import docking.action.MenuData; import docking.actions.SharedStubKeyBindingAction; import docking.help.*; +import docking.tool.ToolConstants; import ghidra.app.DeveloperPluginPackage; import ghidra.app.plugin.PluginCategoryNames; import ghidra.framework.main.FrontEndable; import ghidra.framework.model.Project; import ghidra.framework.plugintool.*; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.util.HelpLocation; import ghidra.util.Msg; import ghidra.util.task.*; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/gui/LookAndFeelPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/gui/LookAndFeelPlugin.java index 365999001e..857d2c6010 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/gui/LookAndFeelPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/gui/LookAndFeelPlugin.java @@ -20,6 +20,7 @@ import static ghidra.docking.util.DockingWindowsLookAndFeelUtils.*; import java.util.List; import docking.options.editor.StringWithChoicesEditor; +import docking.tool.ToolConstants; import docking.widgets.OptionDialog; import ghidra.app.CorePluginPackage; import ghidra.app.plugin.PluginCategoryNames; @@ -49,7 +50,7 @@ public class LookAndFeelPlugin extends Plugin implements FrontEndOnly, OptionsCh private boolean useInvertedColors; public final static String LOOK_AND_FEEL_NAME = "Swing Look And Feel"; private final static String USE_INVERTED_COLORS_NAME = "Use Inverted Colors"; - private final static String OPTIONS_TITLE = "Tool"; + private final static String OPTIONS_TITLE = ToolConstants.TOOL_OPTIONS; private static boolean issuedLafNotification; private static boolean issuedPreferredDarkThemeLafNotification; @@ -69,7 +70,7 @@ public class LookAndFeelPlugin extends Plugin implements FrontEndOnly, OptionsCh selectedLookAndFeel = getInstalledLookAndFeelName(); List lookAndFeelNames = getLookAndFeelNames(); opt.registerOption(LOOK_AND_FEEL_NAME, OptionType.STRING_TYPE, selectedLookAndFeel, - new HelpLocation("Tool", "Look_And_Feel"), + new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Look_And_Feel"), "Set the look and feel for Ghidra. After you change the " + "look and feel, you will have to restart Ghidra to see the effect.", new StringWithChoicesEditor(lookAndFeelNames)); @@ -77,7 +78,7 @@ public class LookAndFeelPlugin extends Plugin implements FrontEndOnly, OptionsCh useInvertedColors = getUseInvertedColorsPreference(); opt.registerOption(USE_INVERTED_COLORS_NAME, OptionType.BOOLEAN_TYPE, useInvertedColors, - new HelpLocation("Tool", "Use_Inverted_Colors"), + new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Use_Inverted_Colors"), "Indicates to invert all drawn colors. This provides the ability to create an " + "effective 'Dark Theme' appearance. (Note: you may have to change your " + "Look and Feel to achieve the best rendering.)\n\n" + diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/prototype/dataArchiveUtilities/ArchiveConverterPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/prototype/dataArchiveUtilities/ArchiveConverterPlugin.java index cab216e9b6..ffe7328370 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/prototype/dataArchiveUtilities/ArchiveConverterPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/prototype/dataArchiveUtilities/ArchiveConverterPlugin.java @@ -25,6 +25,7 @@ import java.util.*; import docking.ActionContext; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import docking.widgets.filechooser.GhidraFileChooser; import ghidra.MiscellaneousPluginPackage; import ghidra.app.context.ListingActionContext; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/prototype/debug/ScreenshotPlugin.java b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/prototype/debug/ScreenshotPlugin.java index 00494688c5..4da0cee727 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/prototype/debug/ScreenshotPlugin.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/plugin/prototype/debug/ScreenshotPlugin.java @@ -35,6 +35,7 @@ import javax.swing.filechooser.FileNameExtensionFilter; import docking.*; import docking.action.*; +import docking.tool.ToolConstants; //@formatter:off @PluginInfo( diff --git a/Ghidra/Features/Base/src/main/java/ghidra/app/util/navigation/GoToAddressLabelDialog.java b/Ghidra/Features/Base/src/main/java/ghidra/app/util/navigation/GoToAddressLabelDialog.java index 23f1a9d325..0dd6e957f5 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/app/util/navigation/GoToAddressLabelDialog.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/app/util/navigation/GoToAddressLabelDialog.java @@ -28,6 +28,7 @@ import javax.swing.event.HyperlinkListener; import docking.DialogComponentProvider; import docking.DockingWindowManager; +import docking.tool.ToolConstants; import docking.widgets.HyperlinkComponent; import docking.widgets.checkbox.GCheckBox; import docking.widgets.combobox.GhidraComboBox; @@ -39,7 +40,6 @@ import ghidra.framework.options.Options; import ghidra.framework.options.SaveState; import ghidra.framework.plugintool.Plugin; import ghidra.framework.plugintool.PluginTool; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.address.Address; import ghidra.util.HelpLocation; import ghidra.util.task.TaskMonitorComponent; diff --git a/Ghidra/Features/Base/src/main/java/ghidra/test/TestEnv.java b/Ghidra/Features/Base/src/main/java/ghidra/test/TestEnv.java index a2aff78339..e5ce0bfee5 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/test/TestEnv.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/test/TestEnv.java @@ -29,6 +29,7 @@ import org.jdom.Element; import docking.ComponentProvider; import docking.DialogComponentProvider; import docking.test.AbstractDockingTest; +import docking.tool.ToolConstants; import generic.jar.ResourceFile; import generic.test.*; import ghidra.app.events.CloseProgramPluginEvent; @@ -887,7 +888,7 @@ public class TestEnv { protected void setAutoSaveEnabled(final FrontEndTool frontEndToolInstance, final boolean enabled) { AbstractGenericTest.runSwing(() -> { - Options options = frontEndToolInstance.getOptions("Tool"); + Options options = frontEndToolInstance.getOptions(ToolConstants.TOOL_OPTIONS); options.setBoolean(FrontEndTool.AUTOMATICALLY_SAVE_TOOLS, enabled); }); } diff --git a/Ghidra/Features/Base/src/main/java/ghidra/util/table/actions/DeleteTableRowAction.java b/Ghidra/Features/Base/src/main/java/ghidra/util/table/actions/DeleteTableRowAction.java index f0d4fac41b..1b5941ab88 100644 --- a/Ghidra/Features/Base/src/main/java/ghidra/util/table/actions/DeleteTableRowAction.java +++ b/Ghidra/Features/Base/src/main/java/ghidra/util/table/actions/DeleteTableRowAction.java @@ -25,6 +25,7 @@ import javax.swing.table.TableModel; import docking.ActionContext; import docking.action.*; +import docking.tool.ToolConstants; import docking.widgets.table.GTable; import docking.widgets.table.RowObjectTableModel; import docking.widgets.table.threaded.ThreadedTableModel; @@ -194,7 +195,7 @@ public class DeleteTableRowAction extends DockingAction { private static class DummyDeleteAction extends DeleteTableRowAction { public DummyDeleteAction(PluginTool tool) { - super(NAME, "Tool", DEFAULT_KEYSTROKE); + super(NAME, ToolConstants.TOOL_OWNER, DEFAULT_KEYSTROKE); // prevent this action from appearing in the toolbar, menus, etc setToolBarData(null); diff --git a/Ghidra/Features/Base/src/main/java/help/screenshot/AbstractScreenShotGenerator.java b/Ghidra/Features/Base/src/main/java/help/screenshot/AbstractScreenShotGenerator.java index 6cb4822128..78a658574a 100644 --- a/Ghidra/Features/Base/src/main/java/help/screenshot/AbstractScreenShotGenerator.java +++ b/Ghidra/Features/Base/src/main/java/help/screenshot/AbstractScreenShotGenerator.java @@ -37,6 +37,7 @@ import docking.*; import docking.action.DockingActionIf; import docking.framework.ApplicationInformationDisplayFactory; import docking.options.editor.OptionsDialog; +import docking.tool.ToolConstants; import docking.widgets.dialogs.SettingsDialog; import docking.widgets.fieldpanel.FieldPanel; import docking.widgets.fieldpanel.field.Field; @@ -217,7 +218,7 @@ public abstract class AbstractScreenShotGenerator extends AbstractGhidraHeadedIn } public void showOptions(final String optionsCategoryName) { - performAction("Edit Options", "Tool", false); + performAction("Edit Options", ToolConstants.TOOL_OWNER, false); final OptionsDialog dialog = (OptionsDialog) getDialog(); runSwing(() -> dialog.displayCategory(optionsCategoryName, null)); diff --git a/Ghidra/Features/Base/src/test.slow/java/docking/ComponentProviderActionsTest.java b/Ghidra/Features/Base/src/test.slow/java/docking/ComponentProviderActionsTest.java index 128347a898..eef2e7d3de 100644 --- a/Ghidra/Features/Base/src/test.slow/java/docking/ComponentProviderActionsTest.java +++ b/Ghidra/Features/Base/src/test.slow/java/docking/ComponentProviderActionsTest.java @@ -18,6 +18,7 @@ package docking; import static org.junit.Assert.*; import java.awt.event.ActionEvent; +import java.awt.event.KeyEvent; import java.util.Set; import javax.swing.*; @@ -228,7 +229,7 @@ public class ComponentProviderActionsTest extends AbstractGhidraHeadedIntegratio showProvider(); KeyStroke newKs = CONTROL_T; - setKeyBindingViaF4Dialog_FromToolsToolbar(newKs); + setKeyBindingViaF4Dialog_FromToolToolbar(newKs); assertProviderKeyStroke(newKs); assertOptionsKeyStroke(newKs); @@ -325,6 +326,19 @@ public class ComponentProviderActionsTest extends AbstractGhidraHeadedIntegratio assertToolbarActionHasIcon(newIcon); } + @Test + public void testSetCloseButtonKeyBinding() { + + showProvider(); + + KeyStroke controlEsc = + KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, DockingUtils.CONTROL_KEY_MODIFIER_MASK); + setKeyBindingViaF4Dialog_FromCloseButton(controlEsc); + + pressKey(controlEsc); + assertProviderIsHidden(); + } + //================================================================================================== // Private Methods //================================================================================================== @@ -420,6 +434,11 @@ public class ComponentProviderActionsTest extends AbstractGhidraHeadedIntegratio runSwing(() -> tool.isActive(provider))); } + private void assertProviderIsHidden() { + assertFalse("The test provider is showing, but should be hidden", + runSwing(() -> tool.isVisible(provider))); + } + private void assertNoToolbarAction() { assertNull("No toolbar action found for provider", getToolbarShowProviderAction()); } @@ -492,6 +511,23 @@ public class ComponentProviderActionsTest extends AbstractGhidraHeadedIntegratio assertFalse("Invalid key stroke: " + ks, runSwing(() -> dialog.isVisible())); } + private void setKeyBindingViaF4Dialog_FromCloseButton(KeyStroke ks) { + + // simulate the user mousing over the toolbar button + DockingActionIf closeAction = getAction(tool, provider.getOwner(), "Close Window"); + assertNotNull("Provider action not installed in toolbar", closeAction); + DockingWindowManager.setMouseOverAction(closeAction); + + performLaunchKeyStrokeDialogAction(); + KeyEntryDialog dialog = waitForDialogComponent(KeyEntryDialog.class); + + runSwing(() -> dialog.setKeyStroke(ks)); + + pressButtonByText(dialog, "OK"); + + assertFalse("Invalid key stroke: " + ks, runSwing(() -> dialog.isVisible())); + } + private void applyBindingToDialog_FromWindowsMenu(KeyStroke ks) { DockingActionIf windowMenuAction = getWindowMenuShowProviderAction(); DockingWindowManager.setMouseOverAction(windowMenuAction); @@ -518,9 +554,9 @@ public class ComponentProviderActionsTest extends AbstractGhidraHeadedIntegratio expected, action.getKeyBinding()); } - private void setKeyBindingViaF4Dialog_FromToolsToolbar(KeyStroke ks) { + private void setKeyBindingViaF4Dialog_FromToolToolbar(KeyStroke ks) { - // simulate the user mousing over the 'Window' menu's action + // simulate the user mousing over the toolbar button DockingActionIf toolbarAction = getToolbarShowProviderAction(); assertNotNull("Provider action not installed in toolbar", toolbarAction); DockingWindowManager.setMouseOverAction(toolbarAction); diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/searchtext/SearchTextPlugin1Test.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/searchtext/SearchTextPlugin1Test.java index 45bf465340..d4b56e1ced 100644 --- a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/searchtext/SearchTextPlugin1Test.java +++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/searchtext/SearchTextPlugin1Test.java @@ -30,6 +30,7 @@ import org.junit.*; import docking.ActionContext; import docking.action.DockingActionIf; +import docking.tool.ToolConstants; import docking.widgets.MultiLineLabel; import docking.widgets.OptionDialog; import docking.widgets.table.GTable; @@ -709,7 +710,7 @@ public class SearchTextPlugin1Test extends AbstractGhidraHeadedIntegrationTest { selectCheckBox(container, "Instruction Operands"); deSelectCheckBox(container, "Comments"); - Options options = tool.getOptions("Tool"); + Options options = tool.getOptions(ToolConstants.TOOL_OPTIONS); options.setInt("Search Limit", 50); setText(tf, "sscanf"); diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/searchtext/SearchTextPlugin2Test.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/searchtext/SearchTextPlugin2Test.java index 52367f31d2..13cf9ca97d 100644 --- a/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/searchtext/SearchTextPlugin2Test.java +++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/app/plugin/core/searchtext/SearchTextPlugin2Test.java @@ -25,6 +25,7 @@ import javax.swing.*; import org.junit.*; import docking.action.DockingActionIf; +import docking.tool.ToolConstants; import ghidra.app.plugin.core.codebrowser.CodeBrowserPlugin; import ghidra.app.plugin.core.codebrowser.CodeViewerProvider; import ghidra.app.plugin.core.table.TableServicePlugin; @@ -616,7 +617,7 @@ public class SearchTextPlugin2Test extends AbstractGhidraHeadedIntegrationTest { goToService.goTo(new ProgramLocation(program, getAddr(0x01002c92))); - Options options = tool.getOptions("Tool"); + Options options = tool.getOptions(ToolConstants.TOOL_OPTIONS); options.setInt("Search Limit", 20); setTextAndPressEnter(tf, "eax"); diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/framework/plugintool/dialog/ManagePluginsTest.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/framework/plugintool/dialog/ManagePluginsTest.java index c4936a1f68..d1c9cadb56 100644 --- a/Ghidra/Features/Base/src/test.slow/java/ghidra/framework/plugintool/dialog/ManagePluginsTest.java +++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/framework/plugintool/dialog/ManagePluginsTest.java @@ -25,6 +25,7 @@ import javax.swing.table.TableModel; import org.junit.*; import docking.action.DockingActionIf; +import docking.tool.ToolConstants; import docking.widgets.table.GTableFilterPanel; import docking.widgets.table.threaded.ThreadedTableModel; import ghidra.app.DeveloperPluginPackage; @@ -255,7 +256,7 @@ public class ManagePluginsTest extends AbstractGhidraHeadedIntegrationTest { private void showProvider() { - DockingActionIf action = getAction(tool, "Tool", "Configure Tool"); + DockingActionIf action = getAction(tool, ToolConstants.TOOL_OWNER, "Configure Tool"); performAction(action, true); waitForSwing(); provider = tool.getManagePluginsDialog(); diff --git a/Ghidra/Features/Base/src/test.slow/java/ghidra/util/bean/opteditor/OptionsDialogTest.java b/Ghidra/Features/Base/src/test.slow/java/ghidra/util/bean/opteditor/OptionsDialogTest.java index b606f822da..8947da7117 100644 --- a/Ghidra/Features/Base/src/test.slow/java/ghidra/util/bean/opteditor/OptionsDialogTest.java +++ b/Ghidra/Features/Base/src/test.slow/java/ghidra/util/bean/opteditor/OptionsDialogTest.java @@ -36,6 +36,7 @@ import org.junit.*; import docking.action.DockingActionIf; import docking.actions.KeyBindingUtils; import docking.options.editor.*; +import docking.tool.ToolConstants; import docking.widgets.MultiLineLabel; import docking.widgets.filechooser.GhidraFileChooser; import docking.widgets.table.RowObjectFilterModel; @@ -58,6 +59,7 @@ import ghidra.test.TestEnv; */ public class OptionsDialogTest extends AbstractGhidraHeadedIntegrationTest { + private static final String TOOL_NODE_NAME = "Tool"; private PluginTool tool; private TestEnv env; private OptionsDialog dialog; @@ -248,9 +250,9 @@ public class OptionsDialogTest extends AbstractGhidraHeadedIntegrationTest { public void testShowMultiLevelOptions2() throws Exception { Object root = treeModel.getRoot(); - Object toolNode = getGTreeNode(root, "Tool"); + Object toolNode = getGTreeNode(root, TOOL_NODE_NAME); - Options options = tool.getOptions("Tool"); + Options options = tool.getOptions(ToolConstants.TOOL_OPTIONS); List optNames = options.getOptionNames(); Collections.sort(optNames); for (String simpleName : optNames) { @@ -276,7 +278,7 @@ public class OptionsDialogTest extends AbstractGhidraHeadedIntegrationTest { @Test public void testFileChooserEditor() throws Exception { - ScrollableOptionsEditor editor = showOptions("Tool"); + ScrollableOptionsEditor editor = showOptions(ToolConstants.TOOL_OPTIONS); pressBrowseButton(editor, "My PathName"); @@ -301,7 +303,7 @@ public class OptionsDialogTest extends AbstractGhidraHeadedIntegrationTest { @Test public void testFileChooserEditor_ClearValue() throws Exception { - ScrollableOptionsEditor editor = showOptions("Tool"); + ScrollableOptionsEditor editor = showOptions(ToolConstants.TOOL_OPTIONS); JTextField pathField = getEditorTextField(editor, "My PathName"); setText(pathField, ""); @@ -309,7 +311,7 @@ public class OptionsDialogTest extends AbstractGhidraHeadedIntegrationTest { pressOptionsOk(); showOptionsDialog(tool); - editor = showOptions("Tool"); + editor = showOptions(ToolConstants.TOOL_OPTIONS); pathField = getEditorTextField(editor, "My PathName"); assertEquals("", pathField.getText()); } @@ -320,7 +322,7 @@ public class OptionsDialogTest extends AbstractGhidraHeadedIntegrationTest { // test double click on color panel // verify the color editor is displayed Object root = treeModel.getRoot(); - Object toolNode = getGTreeNode(root, "Tool"); + Object toolNode = getGTreeNode(root, TOOL_NODE_NAME); selectNode(toolNode); assertTrue(!defaultPanel.isShowing()); @@ -353,7 +355,7 @@ public class OptionsDialogTest extends AbstractGhidraHeadedIntegrationTest { @Test public void testPropertySelectorEditor() throws Exception { Object root = treeModel.getRoot(); - Object toolNode = getGTreeNode(root, "Tool"); + Object toolNode = getGTreeNode(root, TOOL_NODE_NAME); assertTrue(defaultPanel.isShowing()); Object buttonNode = getGTreeNode(toolNode, "Mouse Buttons"); @@ -457,17 +459,17 @@ public class OptionsDialogTest extends AbstractGhidraHeadedIntegrationTest { // Tests that options under a folder in the tree will properly restore default values // - boolean originalValue = getCurrentBooleanEditorValueForNestedOption("Tool", "My Options", - "my sub group Boolean Value"); + boolean originalValue = getCurrentBooleanEditorValueForNestedOption( + ToolConstants.TOOL_OPTIONS, "My Options", "my sub group Boolean Value"); - setCurrentBooleanEditorValueForNestedOption("Tool", "My Options", + setCurrentBooleanEditorValueForNestedOption(ToolConstants.TOOL_OPTIONS, "My Options", "my sub group Boolean Value", !originalValue); apply(); restoreDefaults(); - boolean currentValue = getCurrentBooleanEditorValueForNestedOption("Tool", "My Options", - "my sub group Boolean Value"); + boolean currentValue = getCurrentBooleanEditorValueForNestedOption( + ToolConstants.TOOL_OPTIONS, "My Options", "my sub group Boolean Value"); assertEquals("Sub-option did not get restored after restoring default values", originalValue, currentValue); } @@ -500,7 +502,7 @@ public class OptionsDialogTest extends AbstractGhidraHeadedIntegrationTest { // Verify that options get changed in the options objects // Object root = treeModel.getRoot(); - Object toolNode = getGTreeNode(root, "Tool"); + Object toolNode = getGTreeNode(root, TOOL_NODE_NAME); assertTrue(defaultPanel.isShowing()); Object buttonNode = getGTreeNode(toolNode, "Mouse Buttons"); @@ -521,7 +523,7 @@ public class OptionsDialogTest extends AbstractGhidraHeadedIntegrationTest { assertTrue(applyButton.isEnabled()); runSwing(() -> applyButton.getActionListeners()[0].actionPerformed(null)); - Options options = tool.getOptions("Tool"); + Options options = tool.getOptions(ToolConstants.TOOL_OPTIONS); GhidraOptions.CURSOR_MOUSE_BUTTON_NAMES mouseButton = options.getEnum("Mouse Buttons" + Options.DELIMITER + "Mouse Button To Activate", (GhidraOptions.CURSOR_MOUSE_BUTTON_NAMES) null); @@ -533,7 +535,7 @@ public class OptionsDialogTest extends AbstractGhidraHeadedIntegrationTest { public void testCancel() throws Exception { // make changes to options, but cancel Object root = treeModel.getRoot(); - Object toolNode = getGTreeNode(root, "Tool"); + Object toolNode = getGTreeNode(root, TOOL_NODE_NAME); assertTrue(defaultPanel.isShowing()); Object buttonNode = getGTreeNode(toolNode, "Mouse Buttons"); @@ -554,7 +556,7 @@ public class OptionsDialogTest extends AbstractGhidraHeadedIntegrationTest { assertTrue(cancelButton.isEnabled()); runSwing(() -> cancelButton.getActionListeners()[0].actionPerformed(null)); - Options options = tool.getOptions("Tool"); + Options options = tool.getOptions(ToolConstants.TOOL_OPTIONS); GhidraOptions.CURSOR_MOUSE_BUTTON_NAMES mouseButton = options.getEnum("Mouse Buttons" + Options.DELIMITER + "Mouse Button To Activate", (GhidraOptions.CURSOR_MOUSE_BUTTON_NAMES) null); @@ -603,7 +605,7 @@ public class OptionsDialogTest extends AbstractGhidraHeadedIntegrationTest { @Test public void testToolConfigChange() throws Exception { Object root = treeModel.getRoot(); - Object toolNode = getGTreeNode(root, "Tool"); + Object toolNode = getGTreeNode(root, TOOL_NODE_NAME); assertTrue(defaultPanel.isShowing()); selectNode(toolNode); @@ -636,7 +638,7 @@ public class OptionsDialogTest extends AbstractGhidraHeadedIntegrationTest { assertTrue(applyButton.isEnabled()); runSwing(() -> applyButton.getActionListeners()[0].actionPerformed(null)); - Options options = tool.getOptions("Tool"); + Options options = tool.getOptions(ToolConstants.TOOL_OPTIONS); Color c = options.getColor("Favorite Color", Color.RED); @@ -648,7 +650,7 @@ public class OptionsDialogTest extends AbstractGhidraHeadedIntegrationTest { @Test public void testSaveRestoreToolState() throws Exception { Object root = treeModel.getRoot(); - Object toolNode = getGTreeNode(root, "Tool"); + Object toolNode = getGTreeNode(root, TOOL_NODE_NAME); assertTrue(defaultPanel.isShowing()); selectNode(toolNode); @@ -681,7 +683,7 @@ public class OptionsDialogTest extends AbstractGhidraHeadedIntegrationTest { assertTrue(applyButton.isEnabled()); runSwing(() -> applyButton.getActionListeners()[0].actionPerformed(null)); - Options options = tool.getOptions("Tool"); + Options options = tool.getOptions(ToolConstants.TOOL_OPTIONS); Color c = options.getColor("Favorite Color", Color.RED); @@ -1051,7 +1053,7 @@ public class OptionsDialogTest extends AbstractGhidraHeadedIntegrationTest { } private void createMultiLevelOptions() { - Options options = tool.getOptions("Tool"); + Options options = tool.getOptions(ToolConstants.TOOL_OPTIONS); // register this options because it is used in a test that saves and restores and // only registered options are saved. diff --git a/Ghidra/Features/BytePatterns/src/main/java/ghidra/bitpatterns/gui/FunctionBitPatternsMainProvider.java b/Ghidra/Features/BytePatterns/src/main/java/ghidra/bitpatterns/gui/FunctionBitPatternsMainProvider.java index 73e049334a..1be6594634 100644 --- a/Ghidra/Features/BytePatterns/src/main/java/ghidra/bitpatterns/gui/FunctionBitPatternsMainProvider.java +++ b/Ghidra/Features/BytePatterns/src/main/java/ghidra/bitpatterns/gui/FunctionBitPatternsMainProvider.java @@ -26,13 +26,13 @@ import javax.swing.tree.TreePath; import docking.ActionContext; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import docking.widgets.filechooser.GhidraFileChooser; import docking.widgets.label.GLabel; import ghidra.bitpatterns.info.*; import ghidra.framework.options.OptionsChangeListener; import ghidra.framework.options.ToolOptions; import ghidra.framework.plugintool.ComponentProviderAdapter; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.framework.preferences.Preferences; import ghidra.program.model.listing.Program; import ghidra.util.HelpLocation; diff --git a/Ghidra/Features/ByteViewer/src/test.slow/java/ghidra/framework/plugintool/dialog/SaveToolConfigDialogTest.java b/Ghidra/Features/ByteViewer/src/test.slow/java/ghidra/framework/plugintool/dialog/SaveToolConfigDialogTest.java index e76f632d8c..495130750e 100644 --- a/Ghidra/Features/ByteViewer/src/test.slow/java/ghidra/framework/plugintool/dialog/SaveToolConfigDialogTest.java +++ b/Ghidra/Features/ByteViewer/src/test.slow/java/ghidra/framework/plugintool/dialog/SaveToolConfigDialogTest.java @@ -27,6 +27,7 @@ import javax.swing.*; import org.junit.*; import docking.action.DockingActionIf; +import docking.tool.ToolConstants; import docking.widgets.OptionDialog; import docking.widgets.filechooser.GhidraFileChooser; import generic.test.AbstractGTest; @@ -44,7 +45,6 @@ import ghidra.framework.model.ToolChest; import ghidra.framework.model.ToolTemplate; import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.util.PluginException; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.framework.preferences.Preferences; import ghidra.framework.project.tool.ToolIconURL; import ghidra.test.AbstractGhidraHeadedIntegrationTest; @@ -315,7 +315,7 @@ public class SaveToolConfigDialogTest extends AbstractGhidraHeadedIntegrationTes private void showDialogs() throws Exception { - DockingActionIf action = getAction(tool, "Tool", "Save Tool As"); + DockingActionIf action = getAction(tool, ToolConstants.TOOL_OWNER, "Save Tool As"); performAction(action, false); waitForSwing(); diff --git a/Ghidra/Features/FunctionID/src/main/java/ghidra/feature/fid/plugin/FidDebugPlugin.java b/Ghidra/Features/FunctionID/src/main/java/ghidra/feature/fid/plugin/FidDebugPlugin.java index 8cc496e9e3..f2cd66eb22 100644 --- a/Ghidra/Features/FunctionID/src/main/java/ghidra/feature/fid/plugin/FidDebugPlugin.java +++ b/Ghidra/Features/FunctionID/src/main/java/ghidra/feature/fid/plugin/FidDebugPlugin.java @@ -28,6 +28,7 @@ import docking.ActionContext; import docking.ComponentProvider; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import docking.widgets.filechooser.GhidraFileChooser; import docking.widgets.filechooser.GhidraFileChooserMode; import ghidra.app.DeveloperPluginPackage; @@ -44,7 +45,6 @@ import ghidra.feature.fid.service.FidService; import ghidra.framework.plugintool.PluginInfo; import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.address.Address; import ghidra.program.model.listing.*; import ghidra.program.model.mem.MemoryAccessException; diff --git a/Ghidra/Features/FunctionID/src/main/java/ghidra/feature/fid/plugin/FidPlugin.java b/Ghidra/Features/FunctionID/src/main/java/ghidra/feature/fid/plugin/FidPlugin.java index 68d1f5daff..73c0623779 100644 --- a/Ghidra/Features/FunctionID/src/main/java/ghidra/feature/fid/plugin/FidPlugin.java +++ b/Ghidra/Features/FunctionID/src/main/java/ghidra/feature/fid/plugin/FidPlugin.java @@ -26,6 +26,7 @@ import javax.swing.event.ChangeListener; import docking.ActionContext; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import docking.widgets.filechooser.GhidraFileChooser; import ghidra.app.plugin.PluginCategoryNames; import ghidra.app.plugin.ProgramPlugin; @@ -36,7 +37,6 @@ import ghidra.feature.fid.service.FidService; import ghidra.framework.plugintool.PluginInfo; import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.util.HelpLocation; import ghidra.util.Msg; import ghidra.util.exception.CancelledException; diff --git a/Ghidra/Features/ProgramDiff/src/main/java/ghidra/app/plugin/core/diff/DiffActionManager.java b/Ghidra/Features/ProgramDiff/src/main/java/ghidra/app/plugin/core/diff/DiffActionManager.java index 0168a7ea50..63c481b60b 100644 --- a/Ghidra/Features/ProgramDiff/src/main/java/ghidra/app/plugin/core/diff/DiffActionManager.java +++ b/Ghidra/Features/ProgramDiff/src/main/java/ghidra/app/plugin/core/diff/DiffActionManager.java @@ -22,11 +22,11 @@ import javax.swing.ImageIcon; import docking.ActionContext; import docking.action.*; +import docking.tool.ToolConstants; import docking.widgets.OptionDialog; import ghidra.app.plugin.core.codebrowser.OtherPanelContext; import ghidra.app.services.CodeViewerService; import ghidra.app.util.HelpTopics; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.listing.Program; import ghidra.util.HTMLUtilities; import ghidra.util.HelpLocation; diff --git a/Ghidra/Features/ProgramDiff/src/test.slow/java/ghidra/app/plugin/core/diff/DiffTestAdapter.java b/Ghidra/Features/ProgramDiff/src/test.slow/java/ghidra/app/plugin/core/diff/DiffTestAdapter.java index 8c5e83da10..95d9bbbf56 100644 --- a/Ghidra/Features/ProgramDiff/src/test.slow/java/ghidra/app/plugin/core/diff/DiffTestAdapter.java +++ b/Ghidra/Features/ProgramDiff/src/test.slow/java/ghidra/app/plugin/core/diff/DiffTestAdapter.java @@ -30,6 +30,7 @@ import org.junit.*; import docking.*; import docking.action.DockingActionIf; import docking.action.ToggleDockingAction; +import docking.tool.ToolConstants; import docking.widgets.fieldpanel.FieldPanel; import generic.test.AbstractGenericTest; import ghidra.app.events.ProgramLocationPluginEvent; @@ -589,7 +590,7 @@ public class DiffTestAdapter extends AbstractGhidraHeadedIntegrationTest { } public static DockingActionIf getToolAction(PluginTool tool, String name) { - Set actions = getActionsByOwner(tool, "Tool"); + Set actions = getActionsByOwner(tool, ToolConstants.TOOL_OWNER); for (DockingActionIf action : actions) { if (name.equals(action.getName())) { return action; diff --git a/Ghidra/Features/SourceCodeLookup/src/main/java/ghidra/app/plugin/core/scl/SourceCodeLookupPlugin.java b/Ghidra/Features/SourceCodeLookup/src/main/java/ghidra/app/plugin/core/scl/SourceCodeLookupPlugin.java index e1431b265f..1aecdb75da 100644 --- a/Ghidra/Features/SourceCodeLookup/src/main/java/ghidra/app/plugin/core/scl/SourceCodeLookupPlugin.java +++ b/Ghidra/Features/SourceCodeLookup/src/main/java/ghidra/app/plugin/core/scl/SourceCodeLookupPlugin.java @@ -21,6 +21,7 @@ import java.net.Socket; import docking.ActionContext; import docking.action.*; +import docking.tool.ToolConstants; import ghidra.app.CorePluginPackage; import ghidra.app.context.ProgramLocationActionContext; import ghidra.app.decompiler.*; @@ -37,7 +38,6 @@ import ghidra.framework.options.ToolOptions; import ghidra.framework.plugintool.PluginInfo; import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.util.HelpLocation; import ghidra.util.Msg; diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/AddToVersionTrackingSessionAction.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/AddToVersionTrackingSessionAction.java index 82525eb98c..6f02ce2f38 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/AddToVersionTrackingSessionAction.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/AddToVersionTrackingSessionAction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,7 +18,6 @@ package ghidra.feature.vt.gui.actions; import ghidra.feature.vt.gui.plugin.VTController; import ghidra.feature.vt.gui.plugin.VTPlugin; import ghidra.feature.vt.gui.wizard.VTAddToSessionWizardManager; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.util.HelpLocation; import javax.swing.Icon; @@ -27,6 +25,7 @@ import javax.swing.Icon; import resources.ResourceManager; import docking.ActionContext; import docking.action.*; +import docking.tool.ToolConstants; import docking.wizard.WizardManager; public class AddToVersionTrackingSessionAction extends DockingAction { diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/AutoVersionTrackingAction.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/AutoVersionTrackingAction.java index d00b7678c7..83d977f403 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/AutoVersionTrackingAction.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/AutoVersionTrackingAction.java @@ -19,10 +19,10 @@ import javax.swing.Icon; import docking.ActionContext; import docking.action.*; +import docking.tool.ToolConstants; import ghidra.feature.vt.api.main.VTSession; import ghidra.feature.vt.gui.plugin.VTController; import ghidra.feature.vt.gui.plugin.VTPlugin; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.util.HTMLUtilities; import ghidra.util.HelpLocation; import resources.ResourceManager; diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/CloseVersionTrackingSessionAction.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/CloseVersionTrackingSessionAction.java index 54030a0c94..7c5057b128 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/CloseVersionTrackingSessionAction.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/CloseVersionTrackingSessionAction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,11 +17,11 @@ package ghidra.feature.vt.gui.actions; import ghidra.feature.vt.gui.plugin.VTController; import ghidra.feature.vt.gui.plugin.VTPlugin; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.util.HelpLocation; import docking.ActionContext; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; public class CloseVersionTrackingSessionAction extends DockingAction { diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/CreateVersionTrackingSessionAction.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/CreateVersionTrackingSessionAction.java index ffce44454c..2e56d1553c 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/CreateVersionTrackingSessionAction.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/CreateVersionTrackingSessionAction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,7 +18,6 @@ package ghidra.feature.vt.gui.actions; import ghidra.feature.vt.gui.plugin.VTController; import ghidra.feature.vt.gui.plugin.VTPlugin; import ghidra.feature.vt.gui.wizard.VTNewSessionWizardManager; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.util.HelpLocation; import javax.swing.Icon; @@ -27,6 +25,7 @@ import javax.swing.Icon; import resources.ResourceManager; import docking.ActionContext; import docking.action.*; +import docking.tool.ToolConstants; import docking.widgets.OptionDialog; import docking.wizard.WizardManager; diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/HelpAction.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/HelpAction.java index a1e6fe7bfe..208bd2460b 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/HelpAction.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/HelpAction.java @@ -23,8 +23,8 @@ import docking.ActionContext; import docking.action.*; import docking.help.Help; import docking.help.HelpService; +import docking.tool.ToolConstants; import ghidra.feature.vt.gui.plugin.VTPlugin; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.util.HelpLocation; import ghidra.util.Msg; import resources.ResourceManager; diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/OpenVersionTrackingSessionAction.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/OpenVersionTrackingSessionAction.java index 095e0c98a3..4e176a6ee9 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/OpenVersionTrackingSessionAction.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/OpenVersionTrackingSessionAction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,11 +22,11 @@ import ghidra.framework.main.DataTreeDialog; import ghidra.framework.model.DomainFile; import ghidra.framework.model.DomainFileFilter; import ghidra.framework.plugintool.PluginTool; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.util.HelpLocation; import docking.ActionContext; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; public class OpenVersionTrackingSessionAction extends DockingAction { diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/RedoAction.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/RedoAction.java index 4df9263f91..5a6b422f7e 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/RedoAction.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/RedoAction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,21 +15,20 @@ */ package ghidra.feature.vt.gui.actions; -import ghidra.feature.vt.api.db.VTSessionDB; -import ghidra.feature.vt.api.main.VTSession; -import ghidra.feature.vt.gui.plugin.VTController; -import ghidra.feature.vt.gui.plugin.VTPlugin; -import ghidra.framework.plugintool.util.ToolConstants; -import ghidra.util.*; - import java.awt.event.InputEvent; import java.io.IOException; import javax.swing.Icon; -import resources.ResourceManager; import docking.ActionContext; import docking.action.*; +import docking.tool.ToolConstants; +import ghidra.feature.vt.api.db.VTSessionDB; +import ghidra.feature.vt.api.main.VTSession; +import ghidra.feature.vt.gui.plugin.VTController; +import ghidra.feature.vt.gui.plugin.VTPlugin; +import ghidra.util.*; +import resources.ResourceManager; public class RedoAction extends DockingAction { private final VTController controller; @@ -38,7 +36,7 @@ public class RedoAction extends DockingAction { public RedoAction(VTController controller) { super("Redo", VTPlugin.OWNER); this.controller = controller; - setHelpLocation(new HelpLocation("Tool", "Redo")); + setHelpLocation(new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Redo")); String[] menuPath = { ToolConstants.MENU_EDIT, "&Redo" }; String group = "ZZUndo"; Icon icon = ResourceManager.loadImage("images/redo.png"); diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/ResetToolAction.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/ResetToolAction.java index 4ac3536d5b..579cd29b93 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/ResetToolAction.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/ResetToolAction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,11 +19,11 @@ import ghidra.feature.vt.api.db.VTSessionDB; import ghidra.feature.vt.api.main.VTSession; import ghidra.feature.vt.gui.plugin.*; import ghidra.framework.model.DomainFile; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.util.HelpLocation; import docking.ActionContext; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import docking.widgets.OptionDialog; public class ResetToolAction extends DockingAction { diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/SaveVersionTrackingSessionAction.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/SaveVersionTrackingSessionAction.java index 7e791bfeb8..227f831f45 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/SaveVersionTrackingSessionAction.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/SaveVersionTrackingSessionAction.java @@ -21,13 +21,13 @@ import javax.swing.Icon; import docking.ActionContext; import docking.action.*; +import docking.tool.ToolConstants; import ghidra.feature.vt.api.db.VTSessionDB; import ghidra.feature.vt.api.main.VTSession; import ghidra.feature.vt.gui.plugin.VTController; import ghidra.feature.vt.gui.plugin.VTPlugin; import ghidra.feature.vt.gui.task.SaveTask; import ghidra.framework.model.DomainFile; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.program.model.listing.Program; import ghidra.util.HelpLocation; import ghidra.util.task.TaskLauncher; diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/UndoAction.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/UndoAction.java index 5a239b2689..600c3cd30f 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/UndoAction.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/actions/UndoAction.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,20 +15,19 @@ */ package ghidra.feature.vt.gui.actions; -import ghidra.feature.vt.api.db.VTSessionDB; -import ghidra.feature.vt.gui.plugin.VTController; -import ghidra.feature.vt.gui.plugin.VTPlugin; -import ghidra.framework.plugintool.util.ToolConstants; -import ghidra.util.*; - import java.awt.event.InputEvent; import java.io.IOException; import javax.swing.Icon; -import resources.ResourceManager; import docking.ActionContext; import docking.action.*; +import docking.tool.ToolConstants; +import ghidra.feature.vt.api.db.VTSessionDB; +import ghidra.feature.vt.gui.plugin.VTController; +import ghidra.feature.vt.gui.plugin.VTPlugin; +import ghidra.util.*; +import resources.ResourceManager; public class UndoAction extends DockingAction { private final VTController controller; @@ -37,7 +35,7 @@ public class UndoAction extends DockingAction { public UndoAction(VTController controller) { super("Undo", VTPlugin.OWNER); this.controller = controller; - setHelpLocation(new HelpLocation("Tool", "Undo")); + setHelpLocation(new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Undo")); String[] menuPath = { ToolConstants.MENU_EDIT, "&Undo" }; String group = "ZZUndo"; Icon icon = ResourceManager.loadImage("images/undo.png"); diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/plugin/VTPlugin.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/plugin/VTPlugin.java index a40c0351e8..f43fb9d38e 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/plugin/VTPlugin.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/plugin/VTPlugin.java @@ -24,6 +24,7 @@ import javax.swing.*; import docking.action.DockingActionIf; import docking.help.Help; import docking.help.HelpService; +import docking.tool.ToolConstants; import docking.wizard.WizardManager; import ghidra.GhidraOptions; import ghidra.app.plugin.core.codebrowser.CodeBrowserPlugin; @@ -137,7 +138,7 @@ public class VTPlugin extends Plugin { } private DockingActionIf getToolAction(String actionName) { - Set actions = tool.getDockingActionsByOwnerName("Tool"); + Set actions = tool.getDockingActionsByOwnerName(ToolConstants.TOOL_OWNER); for (DockingActionIf action : actions) { if (action.getName().equals(actionName)) { return action; diff --git a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/plugin/VTSubToolManager.java b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/plugin/VTSubToolManager.java index 2657030f55..a22fc6d4a7 100644 --- a/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/plugin/VTSubToolManager.java +++ b/Ghidra/Features/VersionTracking/src/main/java/ghidra/feature/vt/gui/plugin/VTSubToolManager.java @@ -26,6 +26,7 @@ import org.jdom.output.XMLOutputter; import docking.ActionContext; import docking.action.*; +import docking.tool.ToolConstants; import docking.tool.util.DockingToolConstants; import docking.widgets.OptionDialog; import docking.widgets.fieldpanel.FieldPanel; @@ -48,7 +49,8 @@ import ghidra.framework.ToolUtils; import ghidra.framework.model.*; import ghidra.framework.options.*; import ghidra.framework.plugintool.*; -import ghidra.framework.plugintool.util.*; +import ghidra.framework.plugintool.util.PluginException; +import ghidra.framework.plugintool.util.PluginStatus; import ghidra.framework.project.tool.GhidraTool; import ghidra.program.model.address.*; import ghidra.program.model.listing.*; @@ -173,7 +175,7 @@ public class VTSubToolManager implements VTControllerListener, OptionsChangeList } private DockingActionIf getToolAction(Tool tool, String actionName) { - Set actions = tool.getDockingActionsByOwnerName("Tool"); + Set actions = tool.getDockingActionsByOwnerName(ToolConstants.TOOL_OWNER); for (DockingActionIf action : actions) { if (action.getName().equals(actionName)) { return action; diff --git a/Ghidra/Framework/Docking/src/main/java/docking/DockableComponent.java b/Ghidra/Framework/Docking/src/main/java/docking/DockableComponent.java index 4083aa4458..9b46732e7e 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/DockableComponent.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/DockableComponent.java @@ -193,6 +193,30 @@ public class DockableComponent extends JPanel implements ContainerListener { return componentInfo; } + /** + * Returns the component provider attached to this dockable component; null if this object + * has been disposed + * + * @return the provider + */ + public ComponentProvider getComponentProvider() { + if (componentInfo == null) { + return null; + } + return componentInfo.getProvider(); + } + + /** + * Returns the docking window manager that owns this component + * @return the manager + */ + public DockingWindowManager getDockingWindowManager() { + if (componentInfo == null) { + return null; + } + return componentInfo.getNode().getDockingWindowManager(); + } + @Override public String toString() { if (componentInfo == null) { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/DockableToolBarManager.java b/Ghidra/Framework/Docking/src/main/java/docking/DockableToolBarManager.java index 365b26435f..929b489a1e 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/DockableToolBarManager.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/DockableToolBarManager.java @@ -32,8 +32,8 @@ import resources.ResourceManager; * Manages to toolbar for the dockable components. */ class DockableToolBarManager { - private static final ImageIcon closeIcon = ResourceManager.loadImage("images/close16.gif"); - private static final ImageIcon menuIcon = ResourceManager.loadImage("images/menu16.gif"); + private static final ImageIcon CLOSE_ICON = ResourceManager.loadImage("images/close16.gif"); + private static final ImageIcon MENU_ICON = ResourceManager.loadImage("images/menu16.gif"); private GenericHeader dockableHeader; private ToolBarManager toolBarManager; @@ -45,6 +45,7 @@ class DockableToolBarManager { private SwingUpdateManager headerUpdater = new SwingUpdateManager(() -> dockableHeader.update()); + private DockableComponent dockableComponent; DockableToolBarManager(GenericHeader header) { this.dockableHeader = header; @@ -52,14 +53,16 @@ class DockableToolBarManager { } /** - * Constructs a new DockableToolBarManger for the given ComponentInfo. - * @param info the componentInfo object containing the component. + * Constructs a new DockableToolBarManger for the given ComponentInfo + * + * @param dockableComponent the component to which this toolbar belongs + * @param header the header to which this toolbar belongs */ - DockableToolBarManager(DockableComponent dockableComp, DockableHeader header) { + DockableToolBarManager(DockableComponent dockableComponent, DockableHeader header) { + this.dockableComponent = dockableComponent; this.dockableHeader = header; - ComponentPlaceholder placeholder = dockableComp.getComponentWindowingPlaceholder(); - DockingWindowManager winMgr = - dockableComp.getComponentWindowingPlaceholder().getNode().winMgr; + ComponentPlaceholder placeholder = dockableComponent.getComponentWindowingPlaceholder(); + DockingWindowManager winMgr = dockableComponent.getDockingWindowManager(); ActionToGuiMapper actionManager = winMgr.getActionToGuiMapper(); menuGroupMap = actionManager.getMenuGroupMap(); @@ -67,7 +70,14 @@ class DockableToolBarManager { Iterator iter = placeholder.getActions(); initialize(winMgr, menuHandler, iter); - closeButtonManager = new ToolBarItemManager(new ToolBarCloseAction(dockableComp), winMgr); + ComponentProvider provider = placeholder.getProvider(); + String owner = provider.getOwner(); + ToolBarCloseAction closeAction = new ToolBarCloseAction(owner); + closeButtonManager = new ToolBarItemManager(closeAction, winMgr); + DockingTool tool = winMgr.getTool(); + + // we need to add this action to the tool in order to use key bindings + tool.addLocalAction(provider, closeAction); } private void initialize(DockingWindowManager winMgr, MenuHandler menuHandler, @@ -152,6 +162,12 @@ class DockableToolBarManager { } void dispose() { + + DockingWindowManager dwm = dockableComponent.getDockingWindowManager(); + DockingTool tool = dwm.getTool(); + ComponentProvider provider = dockableComponent.getComponentProvider(); + tool.removeLocalAction(provider, closeButtonManager.getAction()); + headerUpdater.dispose(); menuManager.dispose(); toolBarManager.dispose(); @@ -165,14 +181,11 @@ class DockableToolBarManager { * Action added to toolbar for "hiding" the component. */ private class ToolBarCloseAction extends DockingAction { - private DockableComponent dockableComponent; - ToolBarCloseAction(DockableComponent dockableComponent) { - super("Close Window", DockingWindowManager.DOCKING_WINDOWS_OWNER, - KeyBindingType.UNSUPPORTED); - this.dockableComponent = dockableComponent; + ToolBarCloseAction(String owner) { + super("Close Window", owner, KeyBindingType.SHARED); setDescription("Close Window"); - setToolBarData(new ToolBarData(closeIcon, null)); + setToolBarData(new ToolBarData(CLOSE_ICON, null)); } @Override @@ -182,6 +195,12 @@ class DockableToolBarManager { placeholder.close(); } } + + @Override + public boolean isEnabledForContext(ActionContext context) { + ComponentProvider provider = context.getComponentProvider(); + return provider == dockableComponent.getComponentProvider(); + } } /** @@ -192,7 +211,7 @@ class DockableToolBarManager { ToolBarMenuAction() { super("Local Menu", DockingWindowManager.DOCKING_WINDOWS_OWNER); setDescription("Menu"); - setToolBarData(new ToolBarData(menuIcon, null)); + setToolBarData(new ToolBarData(MENU_ICON, null)); } @Override diff --git a/Ghidra/Framework/Docking/src/main/java/docking/DockingWindowManager.java b/Ghidra/Framework/Docking/src/main/java/docking/DockingWindowManager.java index 7799c80bf1..a4c2a33c6d 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/DockingWindowManager.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/DockingWindowManager.java @@ -326,6 +326,14 @@ public class DockingWindowManager implements PropertyChangeListener, Placeholder return root; } + /** + * Returns the tool that owns this manager + * @return the tool + */ + public DockingTool getTool() { + return tool; + } + /** * Returns the root window frame. * @return the root window frame. diff --git a/Ghidra/Framework/Docking/src/main/java/docking/Node.java b/Ghidra/Framework/Docking/src/main/java/docking/Node.java index bce173ab81..5f09373936 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/Node.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/Node.java @@ -37,6 +37,14 @@ abstract class Node { this.winMgr = winMgr; } + /** + * Returns this node's window manager + * @return the window manager + */ + DockingWindowManager getDockingWindowManager() { + return winMgr; + } + /** * Gets all children of this node; an empty list if no children exist. * @@ -50,20 +58,23 @@ abstract class Node { abstract void close(); /** - * Returns a component that manages all the components from the nodes below it. + * Returns a component that manages all the components from the nodes below it + * @return the component */ abstract JComponent getComponent(); /** - * Determine if this node contains the specified component. + * Determine if this node contains the specified component + * * @param info component information - * @return true if this node contains the specified component. + * @return true if this node contains the specified component */ abstract boolean contains(ComponentPlaceholder info); /** * Returns an JDOM element object that contains the configuration state of this node - * and its children. + * and its children + * @return the element */ abstract Element saveToXML(); @@ -83,7 +94,8 @@ abstract class Node { abstract WindowNode getTopLevelNode(); /** - * Returns list of active components. + * Puts into the given list all active components in this node + * @param list the results list */ abstract void populateActiveComponents(List list); @@ -98,11 +110,14 @@ abstract class Node { } /** - * Generates a node corresponding to the given XML element. - * @param elem the XML element for which to generate a node. - * @param mgr the DockingWindowsManager for the new node. - * @param parentNode the parent node for the new node. - * @return the new node generated from the XML element. + * Generates a node corresponding to the given XML element + * + * @param elem the XML element for which to generate a node + * @param mgr the DockingWindowsManager for the new node + * @param parentNode the parent node for the new node + * @param restoredPlaceholders a 'results' list into which will be placed any restored + * placeholders + * @return the new node generated from the XML element */ Node processChildElement(Element elem, DockingWindowManager mgr, Node parentNode, List restoredPlaceholders) { diff --git a/Ghidra/Framework/Docking/src/main/java/docking/ShowWindowAction.java b/Ghidra/Framework/Docking/src/main/java/docking/ShowWindowAction.java index c7b67bd046..ecc997bdf6 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/ShowWindowAction.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/ShowWindowAction.java @@ -20,6 +20,7 @@ import javax.swing.Icon; import docking.action.DockingAction; import docking.action.MenuData; import docking.actions.AutoGeneratedDockingAction; +import docking.tool.ToolConstants; import ghidra.util.HelpLocation; import resources.ResourceManager; @@ -47,7 +48,7 @@ class ShowWindowAction extends DockingAction this.node = node; setMenuBarData(new MenuData(new String[] { MENU_WINDOW, getName() }, ICON, "WindowGroup")); - setHelpLocation(new HelpLocation("Tool", "DefaultTools")); // somewhat arbitrary location + setHelpLocation(new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "DefaultTools")); // somewhat arbitrary location } @Override diff --git a/Ghidra/Framework/Docking/src/main/java/docking/actions/KeyEntryDialog.java b/Ghidra/Framework/Docking/src/main/java/docking/actions/KeyEntryDialog.java index 110c3a22f6..72b6afd794 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/actions/KeyEntryDialog.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/actions/KeyEntryDialog.java @@ -25,6 +25,7 @@ import javax.swing.text.*; import docking.DialogComponentProvider; import docking.KeyEntryTextField; import docking.action.*; +import docking.tool.ToolConstants; import docking.widgets.label.GIconLabel; import ghidra.util.HelpLocation; import ghidra.util.ReservedKeyBindings; @@ -54,7 +55,7 @@ public class KeyEntryDialog extends DialogComponentProvider { createPanel(); KeyStroke keyBinding = action.getKeyBinding(); updateCollisionPane(keyBinding); - setHelpLocation(new HelpLocation("Tool", "KeyBindingPopup")); + setHelpLocation(new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "KeyBindingPopup")); } private void createPanel() { @@ -161,8 +162,6 @@ public class KeyEntryDialog extends DialogComponentProvider { action.setUnvalidatedKeyBindingData(new KeyBindingData(newKeyStroke)); - toolActions.keyBindingsChanged(); - close(); } diff --git a/Ghidra/Framework/Docking/src/main/java/docking/actions/SharedStubKeyBindingAction.java b/Ghidra/Framework/Docking/src/main/java/docking/actions/SharedStubKeyBindingAction.java index d16ebce648..de88933718 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/actions/SharedStubKeyBindingAction.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/actions/SharedStubKeyBindingAction.java @@ -25,6 +25,7 @@ import org.apache.commons.lang3.StringUtils; import docking.ActionContext; import docking.DockingWindowManager; import docking.action.*; +import docking.tool.ToolConstants; import ghidra.framework.options.OptionsChangeListener; import ghidra.framework.options.ToolOptions; @@ -37,7 +38,7 @@ import ghidra.framework.options.ToolOptions; */ public class SharedStubKeyBindingAction extends DockingAction implements OptionsChangeListener { - static final String SHARED_OWNER = "Tool"; + static final String SHARED_OWNER = ToolConstants.TOOL_OWNER; /** * We save the client actions for later validate and options updating. We also need the @@ -109,6 +110,13 @@ public class SharedStubKeyBindingAction extends DockingAction implements Options results.add(owner); } } + + if (results.isEmpty()) { + // This implies we have an action owned by the DockingWindowManager + // (the DOCKING_WINDOWS_OWNER). In this case, use the Tool as the owner. + results.add(SHARED_OWNER); + } + return results; } diff --git a/Ghidra/Framework/Docking/src/main/java/docking/actions/ToolActions.java b/Ghidra/Framework/Docking/src/main/java/docking/actions/ToolActions.java index 1b59db3f7b..61849594e3 100644 --- a/Ghidra/Framework/Docking/src/main/java/docking/actions/ToolActions.java +++ b/Ghidra/Framework/Docking/src/main/java/docking/actions/ToolActions.java @@ -376,6 +376,12 @@ public class ToolActions implements DockingToolActions, PropertyChangeListener { } } + // triggered by a user-initiated action; called by propertyChange() + private void keyBindingsChanged() { + dockingTool.setConfigChanged(true); + actionGuiHelper.keyBindingsChanged(); + } + @Override public DockingActionIf getLocalAction(ComponentProvider provider, String actionName) { @@ -397,9 +403,4 @@ public class ToolActions implements DockingToolActions, PropertyChangeListener { return sharedActionMap.get(name); } - // triggered by a user-initiated action - void keyBindingsChanged() { - dockingTool.setConfigChanged(true); - actionGuiHelper.keyBindingsChanged(); - } } diff --git a/Ghidra/Framework/Docking/src/main/java/docking/tool/ToolConstants.java b/Ghidra/Framework/Docking/src/main/java/docking/tool/ToolConstants.java new file mode 100644 index 0000000000..f093ef7aba --- /dev/null +++ b/Ghidra/Framework/Docking/src/main/java/docking/tool/ToolConstants.java @@ -0,0 +1,131 @@ +/* ### + * IP: GHIDRA + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package docking.tool; + +import docking.tool.util.DockingToolConstants; + +/** + * Values used to define standard menu names and other miscellaneous constants + */ +public interface ToolConstants extends DockingToolConstants { + + /** + * Used when placing an action in the "File" menu of the tool + */ + public static final String MENU_FILE = "&File"; + + /** + * Used when placing an action in the "Edit" menu of the tool + */ + public static final String MENU_EDIT = "&Edit"; + + /** + * Used when placing a PluginAction in the "Navigation" menu of the tool + */ + public static final String MENU_NAVIGATION = "&Navigation"; + + /** + * Group name for actions to navigate between windows + */ + public static final String MENU_NAVIGATION_GROUP_WINDOWS = "GoToWindow"; + + /** + * Used when placing an action in the "Search" menu of the tool + */ + public static final String MENU_SEARCH = "&Search"; + + /** + * Used when placing an action in the "Selection" menu of the tool + */ + public static final String MENU_SELECTION = "Se&lect"; + + /** + * Used when placing an action in the "About" menu of the tool + */ + public static final String MENU_HELP = "&Help"; + + /** + * Used when placing an action in the "Analysis" menu of the tool + */ + public static final String MENU_ANALYSIS = "&Analysis"; + + /** + * Used when placing an action in the "Project" menu of the tool + */ + public static final String MENU_PROJECT = "&Project"; + + /** + * Used when placing an action in the "Tools" menu of the tool + */ + public static final String MENU_TOOLS = "&Tools"; + + /** A group for actions that link directly to help content */ + public static final String HELP_CONTENTS_MENU_GROUP = "AAAHelpContents"; + + /** Used for navigation-based action */ + public static final String NEXT_CODE_UNIT_NAVIGATION_MENU_GROUP = "NextPrevCodeUnit"; + + /** + * Constant for the options menu group for the Tool Options menu item + */ + public static final String TOOL_OPTIONS_MENU_GROUP = "AOptions"; + + /** + * Node name used in the Data tree when a project is not open + */ + public static final String NO_ACTIVE_PROJECT = "NO ACTIVE PROJECT"; + + /** + * This is used when an action has the tool as its owner + */ + public static final String TOOL_OWNER = "Tool"; + + /** + * Name of options for a tool + */ + public static final String TOOL_OPTIONS = "Tool"; + + /** + * Name of the help topic for "About" domain objects and Ghidra + */ + public static final String ABOUT_HELP_TOPIC = "About"; + + /** + * Name of help topic for the front end (Ghidra Project Window) + */ + public static final String FRONT_END_HELP_TOPIC = "FrontEndPlugin"; + + /** + * Name of help topic for the Tool + */ + public static final String TOOL_HELP_TOPIC = "Tool"; + + /** + * The large icon size (height and width) + */ + public static final int LARGE_ICON_SIZE = 24; + + /** + * The medium icon size (height and width) + */ + public static final int MEDIUM_ICON_SIZE = 22; + + /** + * The small icon size (height and width) + */ + public static final int SMALL_ICON_SIZE = 16; + +} diff --git a/Ghidra/Framework/Docking/src/main/java/ghidra/util/task/TaskDialog.java b/Ghidra/Framework/Docking/src/main/java/ghidra/util/task/TaskDialog.java index badcfcf18c..3240558189 100644 --- a/Ghidra/Framework/Docking/src/main/java/ghidra/util/task/TaskDialog.java +++ b/Ghidra/Framework/Docking/src/main/java/ghidra/util/task/TaskDialog.java @@ -24,6 +24,7 @@ import javax.swing.*; import docking.DialogComponentProvider; import docking.DockingWindowManager; +import docking.tool.ToolConstants; import docking.widgets.OptionDialog; import ghidra.util.*; import ghidra.util.exception.CancelledException; @@ -146,7 +147,7 @@ public class TaskDialog extends DialogComponentProvider implements TaskMonitor { } // SPLIT the help for this dialog should not be in the front end plugin. - setHelpLocation(new HelpLocation("Tool", "TaskDialog")); + setHelpLocation(new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "TaskDialog")); } /** diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/app/util/GenericHelpTopics.java b/Ghidra/Framework/Project/src/main/java/ghidra/app/util/GenericHelpTopics.java index 8e87f38ed1..579fc9a760 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/app/util/GenericHelpTopics.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/app/util/GenericHelpTopics.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,35 +15,37 @@ */ package ghidra.app.util; +import docking.tool.ToolConstants; + public class GenericHelpTopics { - /** - * Help Topic for "About." - */ - public final static String ABOUT = "About"; + /** + * Help Topic for "About." + */ + public final static String ABOUT = "About"; - /** - * Name of options for the help topic for the front end - * (Project Window). - */ - public final static String FRONT_END = "FrontEndPlugin"; + /** + * Name of options for the help topic for the front end + * (Project Window). + */ + public final static String FRONT_END = "FrontEndPlugin"; - /** - * Help Topic for the glossary. - */ - public final static String GLOSSARY = "Glossary"; + /** + * Help Topic for the glossary. + */ + public final static String GLOSSARY = "Glossary"; - /** - * Help for Intro topics. - */ - public final static String INTRO = "Intro"; - - /** - * Help Topic for the project repository. - */ - public final static String REPOSITORY = "Repository"; + /** + * Help for Intro topics. + */ + public final static String INTRO = "Intro"; - /** - * Help Topic for tools. - */ - public final static String TOOL = "Tool"; + /** + * Help Topic for the project repository. + */ + public final static String REPOSITORY = "Repository"; + + /** + * Help Topic for tools. + */ + public final static String TOOL = ToolConstants.TOOL_HELP_TOPIC; } diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/EditActionManager.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/EditActionManager.java index b0d7734c4b..199936e771 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/EditActionManager.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/EditActionManager.java @@ -21,9 +21,9 @@ import java.io.IOException; import docking.ActionContext; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import docking.widgets.OptionDialog; import docking.widgets.filechooser.GhidraFileChooser; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.net.ApplicationKeyManagerFactory; import ghidra.util.HelpLocation; import ghidra.util.Msg; diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FileActionManager.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FileActionManager.java index 4bc98594ad..e3801e73b2 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FileActionManager.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FileActionManager.java @@ -25,6 +25,7 @@ import javax.swing.KeyStroke; import docking.ActionContext; import docking.action.*; +import docking.tool.ToolConstants; import docking.widgets.OptionDialog; import docking.widgets.filechooser.GhidraFileChooser; import docking.wizard.WizardManager; @@ -32,7 +33,6 @@ import ghidra.framework.client.ClientUtil; import ghidra.framework.client.RepositoryAdapter; import ghidra.framework.model.*; import ghidra.framework.options.SaveState; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.framework.store.LockException; import ghidra.util.*; import ghidra.util.exception.NotFoundException; diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FrontEndPlugin.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FrontEndPlugin.java index ffe2f076ea..c0ff975aac 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FrontEndPlugin.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FrontEndPlugin.java @@ -31,6 +31,7 @@ import org.jdom.output.XMLOutputter; import docking.*; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import docking.widgets.OkDialog; import docking.widgets.OptionDialog; import docking.widgets.dialogs.InputDialog; @@ -48,7 +49,6 @@ import ghidra.framework.model.*; import ghidra.framework.options.SaveState; import ghidra.framework.plugintool.*; import ghidra.framework.plugintool.util.PluginStatus; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.framework.preferences.Preferences; import ghidra.framework.remote.User; import ghidra.util.*; @@ -722,7 +722,8 @@ public class FrontEndPlugin extends Plugin private GhidraFileChooser getFileChooser(ToolTemplate template) { if (exportFileChooser == null) { exportFileChooser = new GhidraFileChooser(tool.getToolFrame()); - exportFileChooser.setFileFilter(new ExtensionFileFilter("tool", "Tools")); + exportFileChooser.setFileFilter( + new ExtensionFileFilter(ToolConstants.TOOL_HELP_TOPIC, "Tools")); exportFileChooser.setApproveButtonText("Export"); // always prefer the last export directory... @@ -970,7 +971,8 @@ public class FrontEndPlugin extends Plugin } }; exportToolAction.setPopupMenuData(new MenuData(new String[] { "Export..." }, "tool")); - exportToolAction.setHelpLocation(new HelpLocation("Tool", EXPORT_TOOL_ACTION_NAME)); + exportToolAction.setHelpLocation( + new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, EXPORT_TOOL_ACTION_NAME)); deleteToolAction = new ToolButtonAction(DELETE_TOOL_ACTION_NAME) { @Override @@ -986,7 +988,8 @@ public class FrontEndPlugin extends Plugin }; deleteToolAction.setPopupMenuData(new MenuData(new String[] { "Delete..." }, "tool")); - deleteToolAction.setHelpLocation(new HelpLocation("Tool", DELETE_TOOL_ACTION_NAME)); + deleteToolAction.setHelpLocation( + new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, DELETE_TOOL_ACTION_NAME)); closeToolAction = new ToolButtonAction(CLOSE_TOOL_ACTION_NAME) { @Override @@ -1001,7 +1004,8 @@ public class FrontEndPlugin extends Plugin } }; closeToolAction.setPopupMenuData(new MenuData(new String[] { "Close" }, "tool")); - closeToolAction.setHelpLocation(new HelpLocation("Tool", CLOSE_TOOL_ACTION_NAME)); + closeToolAction.setHelpLocation( + new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, CLOSE_TOOL_ACTION_NAME)); renameToolAction = new ToolButtonAction("Rename Tool") { @Override @@ -1070,7 +1074,8 @@ public class FrontEndPlugin extends Plugin } }; renameToolAction.setPopupMenuData(new MenuData(new String[] { "Rename..." }, "tool")); - renameToolAction.setHelpLocation(new HelpLocation("Tool", "Rename Tool")); + renameToolAction.setHelpLocation( + new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Rename Tool")); propertiesAction = new ToolButtonAction(PROPERTIES_ACTION_NAME) { @Override @@ -1093,7 +1098,8 @@ public class FrontEndPlugin extends Plugin propertiesAction.setPopupMenuData( new MenuData(new String[] { "Configure Plugins..." }, "zproperties")); - propertiesAction.setHelpLocation(new HelpLocation("Tool", "Configure_Tool")); + propertiesAction.setHelpLocation( + new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Configure_Tool")); tool.addLocalAction(frontEndProvider, exportToolAction); tool.addLocalAction(frontEndProvider, renameToolAction); diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FrontEndTool.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FrontEndTool.java index 76c2e5a2bf..7c67117b8b 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FrontEndTool.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/FrontEndTool.java @@ -38,6 +38,7 @@ import docking.action.DockingAction; import docking.action.MenuData; import docking.help.Help; import docking.help.HelpService; +import docking.tool.ToolConstants; import docking.util.AnimationUtils; import docking.widgets.OptionDialog; import generic.jar.ResourceFile; @@ -225,8 +226,8 @@ public class FrontEndTool extends PluginTool implements OptionsChangeListener { } private void initFrontEndOptions() { - ToolOptions options = getOptions("Tool"); - HelpLocation help = new HelpLocation("Tool", "Save_Tool"); + ToolOptions options = getOptions(ToolConstants.TOOL_OPTIONS); + HelpLocation help = new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Save_Tool"); options.registerOption(AUTOMATICALLY_SAVE_TOOLS, true, help, "When enabled tools will be saved " + "when they are closed"); @@ -285,7 +286,7 @@ public class FrontEndTool extends PluginTool implements OptionsChangeListener { return; } - ToolOptions options = getOptions("Tool"); + ToolOptions options = getOptions(ToolConstants.TOOL_OPTIONS); options.removeOptionsChangeListener(this); configureToolAction.setEnabled(true); @@ -656,7 +657,7 @@ public class FrontEndTool extends PluginTool implements OptionsChangeListener { addHelpActions(); // our log file action - DockingAction action = new DockingAction("Show Log", "Tool") { + DockingAction action = new DockingAction("Show Log", ToolConstants.TOOL_OWNER) { @Override public void actionPerformed(ActionContext context) { showGhidraUserLogFile(); diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ImportGhidraToolsDialog.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ImportGhidraToolsDialog.java index e94c7d5d5b..b8c7f30a44 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ImportGhidraToolsDialog.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ImportGhidraToolsDialog.java @@ -28,6 +28,7 @@ import com.google.common.collect.Iterables; import docking.DialogComponentProvider; import docking.options.editor.ButtonPanelFactory; +import docking.tool.ToolConstants; import docking.widgets.checkbox.GCheckBox; import docking.widgets.list.ListPanel; import ghidra.framework.ToolUtils; @@ -55,7 +56,7 @@ class ImportGhidraToolsDialog extends DialogComponentProvider { ImportGhidraToolsDialog(FrontEndTool tool) { super("Import Ghidra Tools", true); - setHelpLocation(new HelpLocation("Tool", "Import Ghidra Tools")); + setHelpLocation(new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Import Ghidra Tools")); this.tool = tool; diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/PickToolDialog.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/PickToolDialog.java index ccdc7fa527..b50cd5322e 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/PickToolDialog.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/PickToolDialog.java @@ -20,10 +20,9 @@ import java.awt.Component; import java.util.*; import javax.swing.*; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; import docking.DialogComponentProvider; +import docking.tool.ToolConstants; import docking.widgets.table.*; import ghidra.framework.model.*; import ghidra.framework.project.tool.GhidraToolTemplate; @@ -42,7 +41,7 @@ public class PickToolDialog extends DialogComponentProvider { this.tool = tool; this.domainClass = domainClass; - setHelpLocation(new HelpLocation("Tool", "Set Tool Associations")); + setHelpLocation(new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Set Tool Associations")); addWorkPanel(createWorkPanel()); @@ -64,17 +63,14 @@ public class PickToolDialog extends DialogComponentProvider { table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); table.setDefaultRenderer(GhidraToolTemplate.class, new ToolTemplateRenderer()); - table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { - @Override - public void valueChanged(ListSelectionEvent e) { - if (e.getValueIsAdjusting()) { - return; - } - - int selectedRow = table.getSelectedRow(); - ToolTemplate template = model.getRowObject(selectedRow); - okButton.setEnabled(template != null); + table.getSelectionModel().addListSelectionListener(e -> { + if (e.getValueIsAdjusting()) { + return; } + + int selectedRow = table.getSelectedRow(); + ToolTemplate template = model.getRowObject(selectedRow); + okButton.setEnabled(template != null); }); loadList(); diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ProjectActionManager.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ProjectActionManager.java index 9494dae6f7..07eb35f01b 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ProjectActionManager.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ProjectActionManager.java @@ -24,13 +24,13 @@ import docking.ActionContext; import docking.ComponentProvider; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import docking.widgets.OptionDialog; import docking.widgets.PasswordChangeDialog; import docking.widgets.filechooser.GhidraFileChooser; import ghidra.framework.client.ClientUtil; import ghidra.framework.client.RepositoryAdapter; import ghidra.framework.model.*; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.framework.preferences.Preferences; import ghidra.framework.protocol.ghidra.GhidraURL; import ghidra.framework.remote.User; diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/SetToolAssociationsDialog.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/SetToolAssociationsDialog.java index 99fc4eb982..f706036933 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/SetToolAssociationsDialog.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/SetToolAssociationsDialog.java @@ -16,16 +16,13 @@ package ghidra.framework.main; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; import java.util.*; import java.util.List; import javax.swing.*; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; import docking.DialogComponentProvider; +import docking.tool.ToolConstants; import docking.widgets.table.*; import ghidra.framework.data.ContentHandler; import ghidra.framework.model.*; @@ -43,7 +40,7 @@ class SetToolAssociationsDialog extends DialogComponentProvider { super("Set Tool Associations", true); this.tool = tool; - setHelpLocation(new HelpLocation("Tool", "Set Tool Associations")); + setHelpLocation(new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Set Tool Associations")); addWorkPanel(createWorkPanel()); @@ -61,39 +58,33 @@ class SetToolAssociationsDialog extends DialogComponentProvider { table = new GTable(model); final JButton editButton = new JButton("Edit"); - editButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - int selectedRow = table.getSelectedRow(); - ToolAssociationInfo info = model.getRowObject(selectedRow); - if (info == null) { - return; - } + editButton.addActionListener(e -> { + int selectedRow = table.getSelectedRow(); + ToolAssociationInfo info = model.getRowObject(selectedRow); + if (info == null) { + return; + } - ContentHandler contentHandler = info.getContentHandler(); - Class domainClass = contentHandler.getDomainObjectClass(); - PickToolDialog dialog = new PickToolDialog(tool, domainClass); - dialog.showDialog(); + ContentHandler contentHandler = info.getContentHandler(); + Class domainClass = contentHandler.getDomainObjectClass(); + PickToolDialog dialog = new PickToolDialog(tool, domainClass); + dialog.showDialog(); - ToolTemplate template = dialog.getSelectedToolTemplate(); - if (template != null) { - info.setCurrentTool(template); - model.fireTableDataChanged(); - } + ToolTemplate template = dialog.getSelectedToolTemplate(); + if (template != null) { + info.setCurrentTool(template); + model.fireTableDataChanged(); } }); editButton.setEnabled(false); final JButton resetButton = new JButton("Restore Default"); - resetButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - int selectedRow = table.getSelectedRow(); - ToolAssociationInfo info = model.getRowObject(selectedRow); - if (info != null) { - info.restoreDefaultAssociation(); - table.repaint(); - } + resetButton.addActionListener(e -> { + int selectedRow = table.getSelectedRow(); + ToolAssociationInfo info = model.getRowObject(selectedRow); + if (info != null) { + info.restoreDefaultAssociation(); + table.repaint(); } }); resetButton.setEnabled(false); @@ -104,24 +95,21 @@ class SetToolAssociationsDialog extends DialogComponentProvider { table.setDefaultRenderer(ContentHandler.class, new ContentHandlerRenderer()); table.setDefaultRenderer(GhidraToolTemplate.class, new ToolTemplateRenderer()); - table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { - @Override - public void valueChanged(ListSelectionEvent e) { - if (e.getValueIsAdjusting()) { - return; - } - - int selectedRow = table.getSelectedRow(); - ToolAssociationInfo info = model.getRowObject(selectedRow); - if (info == null) { - editButton.setEnabled(false); - resetButton.setEnabled(false); - return; - } - - editButton.setEnabled(true); - resetButton.setEnabled(!info.isDefault()); + table.getSelectionModel().addListSelectionListener(e -> { + if (e.getValueIsAdjusting()) { + return; } + + int selectedRow = table.getSelectedRow(); + ToolAssociationInfo info = model.getRowObject(selectedRow); + if (info == null) { + editButton.setEnabled(false); + resetButton.setEnabled(false); + return; + } + + editButton.setEnabled(true); + resetButton.setEnabled(!info.isDefault()); }); loadList(); diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ToolActionManager.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ToolActionManager.java index da3fe12a53..e54a0988a3 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ToolActionManager.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ToolActionManager.java @@ -27,10 +27,10 @@ import org.jdom.input.SAXBuilder; import docking.ActionContext; import docking.action.*; +import docking.tool.ToolConstants; import docking.widgets.filechooser.GhidraFileChooser; import ghidra.framework.model.*; import ghidra.framework.plugintool.PluginTool; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.framework.preferences.Preferences; import ghidra.framework.project.tool.GhidraToolTemplate; import ghidra.util.HelpLocation; diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ToolButton.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ToolButton.java index 275fd5ea8d..7c561932aa 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ToolButton.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/ToolButton.java @@ -31,6 +31,7 @@ import docking.DockingWindowManager; import docking.dnd.*; import docking.help.Help; import docking.help.HelpService; +import docking.tool.ToolConstants; import docking.widgets.EmptyBorderButton; import ghidra.framework.main.datatree.*; import ghidra.framework.model.*; @@ -683,7 +684,7 @@ class ToolButton extends EmptyBorderButton implements Draggable, Droppable { private void setHelpLocation(String anchorTag) { HelpService help = Help.getHelpService(); - help.registerHelp(this, new HelpLocation("Tool", anchorTag)); + help.registerHelp(this, new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, anchorTag)); } private void handleMouseReleased() { diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/datatree/DataTreeDragNDropHandler.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/datatree/DataTreeDragNDropHandler.java index 70293082f3..dd9b7af6ab 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/datatree/DataTreeDragNDropHandler.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/datatree/DataTreeDragNDropHandler.java @@ -22,10 +22,10 @@ import java.util.*; import java.util.stream.Collectors; import docking.dnd.GenericDataFlavor; +import docking.tool.ToolConstants; import docking.widgets.tree.GTreeNode; import docking.widgets.tree.support.GTreeDragNDropHandler; import ghidra.framework.main.FrontEndTool; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.util.Msg; import ghidra.util.exception.AssertException; diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/datatree/DomainFolderRootNode.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/datatree/DomainFolderRootNode.java index a7c0cde6d3..c008687de3 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/datatree/DomainFolderRootNode.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/datatree/DomainFolderRootNode.java @@ -20,11 +20,11 @@ import java.io.File; import javax.swing.Icon; import javax.swing.ImageIcon; +import docking.tool.ToolConstants; import docking.widgets.tree.GTree; import docking.widgets.tree.GTreeRootNode; import ghidra.framework.client.RepositoryAdapter; import ghidra.framework.model.*; -import ghidra.framework.plugintool.util.ToolConstants; import resources.ResourceManager; public class DomainFolderRootNode extends DomainFolderNode implements GTreeRootNode { diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/datatree/NoProjectNode.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/datatree/NoProjectNode.java index 78f749fa92..55cbfce337 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/datatree/NoProjectNode.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/main/datatree/NoProjectNode.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,11 +15,10 @@ */ package ghidra.framework.main.datatree; -import ghidra.framework.plugintool.util.ToolConstants; - import javax.swing.Icon; import javax.swing.UIManager; +import docking.tool.ToolConstants; import docking.widgets.tree.AbstractGTreeRootNode; public class NoProjectNode extends AbstractGTreeRootNode { diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/PluginTool.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/PluginTool.java index d590519d76..de97d4660d 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/PluginTool.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/PluginTool.java @@ -40,6 +40,7 @@ import docking.framework.ApplicationInformationDisplayFactory; import docking.framework.SplashScreen; import docking.help.Help; import docking.help.HelpService; +import docking.tool.ToolConstants; import docking.tool.util.DockingToolConstants; import docking.widgets.OptionDialog; import ghidra.framework.OperatingSystem; @@ -217,13 +218,13 @@ public abstract class PluginTool extends AbstractDockingTool } private void setDefaultOptionValues() { - Options toolOptions = optionsMgr.getOptions("Tool"); + Options toolOptions = optionsMgr.getOptions(ToolConstants.TOOL_OPTIONS); boolean windowsOnTop = toolOptions.getBoolean(DOCKING_WINDOWS_ON_TOP, false); winMgr.setWindowsOnTop(windowsOnTop); } private void initOptions() { - ToolOptions toolOptions = optionsMgr.getOptions("Tool"); + ToolOptions toolOptions = optionsMgr.getOptions(ToolConstants.TOOL_OPTIONS); toolOptions.registerOption(DOCKING_WINDOWS_ON_TOP, false, null, "Determines whether a docked window will always be shown on " + "top of its parent window."); @@ -433,7 +434,8 @@ public abstract class PluginTool extends AbstractDockingTool } /** - * Returns true if there is at least one tool listening to this tool's plugin events. + * Returns true if there is at least one tool listening to this tool's plugin events + * @return true if there is at least one tool listening to this tool's plugin events */ public boolean hasToolListeners() { return eventMgr.hasToolListeners(); @@ -663,7 +665,8 @@ public abstract class PluginTool extends AbstractDockingTool } /** - * Return whether there is a command being executed. + * Return whether there is a command being executed + * @return true if there is a command being executed */ public boolean isExecutingCommand() { return taskMgr.isBusy(); @@ -743,6 +746,7 @@ public abstract class PluginTool extends AbstractDockingTool /** * Returns options manager + * @return the manager */ OptionsManager getOptionsManager() { return optionsMgr; @@ -795,8 +799,8 @@ public abstract class PluginTool extends AbstractDockingTool } /** - * Returns an object that provides fundamental services that plugins - * can use. + * Returns an object that provides fundamental services that plugins can use + * @return the services instance */ public ToolServices getToolServices() { return toolServices; @@ -882,6 +886,7 @@ public abstract class PluginTool extends AbstractDockingTool /** * Triggers a 'Save As' dialog that allows the user to save off the tool under a different * name. This returns true if the user performed a save. + * @return true if a save happened */ public boolean saveToolAs() { return dialogMgr.saveToolAs(); @@ -907,7 +912,7 @@ public abstract class PluginTool extends AbstractDockingTool } protected void addExitAction() { - DockingAction exitAction = new DockingAction("Exit Ghidra", "Tool") { + DockingAction exitAction = new DockingAction("Exit Ghidra", ToolConstants.TOOL_OWNER) { @Override public void actionPerformed(ActionContext context) { AppInfo.exitGhidra(); @@ -931,7 +936,7 @@ public abstract class PluginTool extends AbstractDockingTool } protected void addOptionsAction() { - DockingAction optionsAction = new DockingAction("Edit Options", "Tool") { + DockingAction optionsAction = new DockingAction("Edit Options", ToolConstants.TOOL_OWNER) { @Override public void actionPerformed(ActionContext context) { optionsMgr.editOptions(); @@ -956,7 +961,7 @@ public abstract class PluginTool extends AbstractDockingTool protected void addSaveToolAction() { - DockingAction saveAction = new DockingAction("Save Tool", "Tool") { + DockingAction saveAction = new DockingAction("Save Tool", ToolConstants.TOOL_OWNER) { @Override public void actionPerformed(ActionContext context) { saveTool(); @@ -967,9 +972,9 @@ public abstract class PluginTool extends AbstractDockingTool menuData.setMenuSubGroup("1Tool"); saveAction.setMenuBarData(menuData); saveAction.setEnabled(true); - saveAction.setHelpLocation(new HelpLocation("Tool", "Save Tool")); + saveAction.setHelpLocation(new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Save Tool")); - DockingAction saveAsAction = new DockingAction("Save Tool As", "Tool") { + DockingAction saveAsAction = new DockingAction("Save Tool As", ToolConstants.TOOL_OWNER) { @Override public void actionPerformed(ActionContext context) { saveToolAs(); @@ -981,14 +986,15 @@ public abstract class PluginTool extends AbstractDockingTool saveAsAction.setMenuBarData(menuData); saveAsAction.setEnabled(true); - saveAsAction.setHelpLocation(new HelpLocation("Tool", "Tool_Changes")); + saveAsAction.setHelpLocation( + new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Tool_Changes")); addAction(saveAction); addAction(saveAsAction); } protected void addExportToolAction() { - exportToolAction = new DockingAction("Export Tool", "Tool") { + exportToolAction = new DockingAction("Export Tool", ToolConstants.TOOL_OWNER) { @Override public void actionPerformed(ActionContext context) { dialogMgr.exportTool(); @@ -1000,13 +1006,14 @@ public abstract class PluginTool extends AbstractDockingTool exportToolAction.setMenuBarData(menuData); exportToolAction.setEnabled(true); - exportToolAction.setHelpLocation(new HelpLocation("Tool", "Export Tool")); + exportToolAction.setHelpLocation( + new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "Export Tool")); addAction(exportToolAction); } protected void addHelpActions() { - DockingAction action = new DockingAction("About Ghidra", "Tool") { + DockingAction action = new DockingAction("About Ghidra", ToolConstants.TOOL_OWNER) { @Override public void actionPerformed(ActionContext context) { DockingWindowManager.showDialog(new AboutDialog()); @@ -1024,17 +1031,18 @@ public abstract class PluginTool extends AbstractDockingTool action.setEnabled(true); addAction(action); - DockingAction userAgreementAction = new DockingAction("User Agreement", "Tool") { - @Override - public void actionPerformed(ActionContext context) { - DockingWindowManager.showDialog(new UserAgreementDialog(false, false)); - } + DockingAction userAgreementAction = + new DockingAction("User Agreement", ToolConstants.TOOL_OWNER) { + @Override + public void actionPerformed(ActionContext context) { + DockingWindowManager.showDialog(new UserAgreementDialog(false, false)); + } - @Override - public boolean shouldAddToWindow(boolean isMainWindow, Set> contextTypes) { - return true; - } - }; + @Override + public boolean shouldAddToWindow(boolean isMainWindow, Set> contextTypes) { + return true; + } + }; userAgreementAction.setMenuBarData( new MenuData(new String[] { ToolConstants.MENU_HELP, "&User Agreement" }, null, ToolConstants.HELP_CONTENTS_MENU_GROUP)); @@ -1046,7 +1054,7 @@ public abstract class PluginTool extends AbstractDockingTool final ErrorReporter reporter = ErrLogDialog.getErrorReporter(); if (reporter != null) { - action = new DockingAction("Report Bug", "Tool") { + action = new DockingAction("Report Bug", ToolConstants.TOOL_OWNER) { @Override public void actionPerformed(ActionContext context) { reporter.report(getToolFrame(), "User Bug Report", null); @@ -1066,7 +1074,7 @@ public abstract class PluginTool extends AbstractDockingTool } HelpService help = Help.getHelpService(); - action = new DockingAction("Contents", "Tool") { + action = new DockingAction("Contents", ToolConstants.TOOL_OWNER) { @Override public void actionPerformed(ActionContext context) { help.showHelp(null, false, getToolFrame()); @@ -1149,7 +1157,10 @@ public abstract class PluginTool extends AbstractDockingTool return configChangedFlag; // ignore the window layout changes } - /** Called when it is time to save the tool. Handles auto-saving logic. */ + /** + * Called when it is time to save the tool. Handles auto-saving logic. + * @return true if a save happened + */ protected boolean doSaveTool() { if (toolServices.canAutoSave(this)) { saveTool(); @@ -1219,18 +1230,21 @@ public abstract class PluginTool extends AbstractDockingTool *
Note: This forces plugins to terminate any tasks they have running for the * indicated domain object and apply any unsaved data to the domain object. If they can't do * this or the user cancels then this returns false. + * + * @param domainObject the domain object to check * @return false any of the plugins reports that the domain object * should not be closed */ - public boolean canCloseDomainObject(DomainObject dObj) { - if (taskMgr.hasTasksForDomainObject(dObj)) { - Msg.showInfo(getClass(), getToolFrame(), "Close " + dObj.getName() + " Failed", - "The tool is currently working in the background on " + dObj.getName() + + public boolean canCloseDomainObject(DomainObject domainObject) { + if (taskMgr.hasTasksForDomainObject(domainObject)) { + String name = domainObject.getName(); + Msg.showInfo(getClass(), getToolFrame(), "Close " + name + " Failed", + "The tool is currently working in the background on " + name + ".\nPlease stop the background processing first."); return false; } - return pluginMgr.canCloseDomainObject(dObj); + return pluginMgr.canCloseDomainObject(domainObject); } @Override @@ -1415,10 +1429,12 @@ public abstract class PluginTool extends AbstractDockingTool private void setToolOptionsHelpLocation() { Options opt = getOptions(ToolConstants.TOOL_OPTIONS); - opt.setOptionsHelpLocation(new HelpLocation("Tool", "OptionsForTool")); + opt.setOptionsHelpLocation( + new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "OptionsForTool")); opt = getOptions(DockingToolConstants.KEY_BINDINGS); - opt.setOptionsHelpLocation(new HelpLocation("Tool", "KeyBindings_Option")); + opt.setOptionsHelpLocation( + new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "KeyBindings_Option")); } public TransientToolState getTransientState() { diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/StandAlonePluginTool.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/StandAlonePluginTool.java index a21784676c..45c19b2746 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/StandAlonePluginTool.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/StandAlonePluginTool.java @@ -20,10 +20,10 @@ import java.awt.event.KeyEvent; import docking.ActionContext; import docking.action.*; +import docking.tool.ToolConstants; import ghidra.framework.OperatingSystem; import ghidra.framework.Platform; import ghidra.framework.plugintool.util.PluginClassManager; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.util.HelpLocation; public class StandAlonePluginTool extends PluginTool { @@ -49,7 +49,7 @@ public class StandAlonePluginTool extends PluginTool { @Override public void addExitAction() { - DockingAction exitAction = new DockingAction("Exit", "Tool") { + DockingAction exitAction = new DockingAction("Exit", ToolConstants.TOOL_OWNER) { @Override public void actionPerformed(ActionContext context) { app.exit(); @@ -82,7 +82,7 @@ public class StandAlonePluginTool extends PluginTool { public void addManagePluginsAction() { - configureToolAction = new DockingAction("Configure Tool", "Tool") { + configureToolAction = new DockingAction("Configure Tool", ToolConstants.TOOL_OWNER) { @Override public void actionPerformed(ActionContext context) { showConfig(false, false); diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/KeyBindingsPanel.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/KeyBindingsPanel.java index 56fe52455e..c5169e31ed 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/KeyBindingsPanel.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/KeyBindingsPanel.java @@ -168,6 +168,11 @@ public class KeyBindingsPanel extends JPanel { Set>> entries = actionsByFullName.entrySet(); for (Entry> entry : entries) { + String key = entry.getKey(); + if (key.contains("Close W")) { + Msg.debug(this, ""); + } + // pick one action, they are all conceptually the same List actions = entry.getValue(); DockingActionIf action = actions.get(0); diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/ManagePluginsDialog.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/ManagePluginsDialog.java index 36ac88c8e3..cfe5b4f230 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/ManagePluginsDialog.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/dialog/ManagePluginsDialog.java @@ -25,6 +25,7 @@ import javax.swing.event.ChangeListener; import docking.ActionContext; import docking.DialogComponentProvider; import docking.action.*; +import docking.tool.ToolConstants; import docking.widgets.OptionDialog; import ghidra.app.util.GenericHelpTopics; import ghidra.framework.main.AppInfo; @@ -94,12 +95,13 @@ public class ManagePluginsDialog extends DialogComponentProvider implements Chan } private void createActions(boolean addSaveActions) { - configureAllPluginsAction = new DockingAction("Configure All Plugins", "Tool") { - @Override - public void actionPerformed(ActionContext context) { - comp.manageAllPlugins(); - } - }; + configureAllPluginsAction = + new DockingAction("Configure All Plugins", ToolConstants.TOOL_OWNER) { + @Override + public void actionPerformed(ActionContext context) { + comp.manageAllPlugins(); + } + }; ImageIcon icon = ResourceManager.loadImage("images/plugin.png"); configureAllPluginsAction.setToolBarData(new ToolBarData(icon, "aaa")); configureAllPluginsAction.setDescription("Configure All Plugins"); @@ -108,7 +110,7 @@ public class ManagePluginsDialog extends DialogComponentProvider implements Chan addAction(configureAllPluginsAction); if (addSaveActions) { - saveAction = new DockingAction("Save Tool", "Tool") { + saveAction = new DockingAction("Save Tool", ToolConstants.TOOL_OWNER) { @Override public void actionPerformed(ActionContext context) { save(); @@ -123,7 +125,7 @@ public class ManagePluginsDialog extends DialogComponentProvider implements Chan saveAction.setDescription("Save tool to tool chest"); addAction(saveAction); - saveAsAction = new DockingAction("Save Tool As", "Tool") { + saveAsAction = new DockingAction("Save Tool As", ToolConstants.TOOL_OWNER) { @Override public void actionPerformed(ActionContext context) { saveAs(); diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/mgr/OptionsManager.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/mgr/OptionsManager.java index 548106a07c..c8b46fd8d7 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/mgr/OptionsManager.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/mgr/OptionsManager.java @@ -24,12 +24,12 @@ import javax.swing.tree.TreePath; import org.jdom.Element; import docking.options.editor.OptionsDialog; +import docking.tool.ToolConstants; import ghidra.framework.options.*; import ghidra.framework.plugintool.Plugin; import ghidra.framework.plugintool.PluginTool; import ghidra.framework.plugintool.dialog.KeyBindingsPanel; import ghidra.framework.plugintool.util.OptionsService; -import ghidra.framework.plugintool.util.ToolConstants; import ghidra.util.HelpLocation; import ghidra.util.Msg; @@ -252,7 +252,8 @@ public class OptionsManager implements OptionsService, OptionsChangeListener { dialog = new OptionsDialog("Options for " + tool.getName(), "Options", getEditableOptions(), null, true); dialog.setSelectedPath(path); - dialog.setHelpLocation(new HelpLocation("Tool", "ToolOptions_Dialog")); + dialog.setHelpLocation( + new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, "ToolOptions_Dialog")); return dialog; } diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/util/ToolConstants.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/util/ToolConstants.java deleted file mode 100644 index 0663be45a3..0000000000 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/plugintool/util/ToolConstants.java +++ /dev/null @@ -1,134 +0,0 @@ -/* ### - * IP: GHIDRA - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package ghidra.framework.plugintool.util; - -import docking.tool.util.DockingToolConstants; - -/** - * Values used to define standard menu names and other miscellaneous - * constants. - */ -public interface ToolConstants extends DockingToolConstants { - /** - * Used when placing a PluginAction in the "File" menu of the tool. - */ - String MENU_FILE = "&File"; - /** - * Used when placing a PluginAction in the "Edit" menu of the tool. - */ - String MENU_EDIT = "&Edit"; - /** - * Used when placing a PluginAction in the "Navigation" menu of the tool. - */ - String MENU_NAVIGATION = "&Navigation"; - - /** - * Group name for actions to navigate between windows - */ - String MENU_NAVIGATION_GROUP_WINDOWS = "GoToWindow"; - - /** - * Used when placing a PluginAction in the "Search" menu of the tool. - */ - String MENU_SEARCH = "&Search"; - /** - * Used when placing a PluginAction in the "Selection" menu of the tool. - */ - String MENU_SELECTION = "Se&lect"; - - /** A menu group that goes below those actions group with the "Select" menu grouping */ - public final static String MENU_SELECTION_UTILS_GROUP = "SelectUtils"; - - /** - * Used when placing a PluginAction in the "View" menu of the tool. - */ -// String MENU_VIEW = "&View"; - - /** - * Used when placing a PluginAction in the "About" menu of the tool. - */ - String MENU_HELP = "&Help"; - /** - * Used when placing a PluginAction in the "Analysis" menu of the tool. - */ - String MENU_ANALYSIS = "&Analysis"; - /** - * Used when placing a PluginAction in the "Project" menu of the tool. - */ - String MENU_PROJECT = "&Project"; - /** - * Used when placing a PluginAction in the "Tools" menu of the tool. - */ - String MENU_TOOLS = "&Tools"; - /** - * Used when placing a PluginAction in the "Process" menu of the tool. - */ - String MENU_PROCESS = "&Process"; - /** - * Used when placing a PluginAction in the "Trace" menu of the tool. - */ - String MENU_TRACE = "&Trace"; - /** - * Used when placing an action in the "Misc" menu of the tool. - */ - String MENU_MISC = "&Misc"; - - /** Used for navigation-based action */ - String NEXT_CODE_UNIT_NAVIGATION_MENU_GROUP = "NextPrevCodeUnit"; - - /** - * The standard icon size (height and width). - */ - int LARGE_ICON_SIZE = 24; - - int MEDIUM_ICON_SIZE = 22; - - int SMALL_ICON_SIZE = 16; - - /** - * Node name used in the Data tree when a project is not open. - */ - final static String NO_ACTIVE_PROJECT = "NO ACTIVE PROJECT"; - - /** - * Name of options for a tool. - */ - public final static String TOOL_OPTIONS = "Tool"; - - /** - * Constant for the options menu group for the Tool Options menu item. - */ - public final static String TOOL_OPTIONS_MENU_GROUP = "AOptions"; - - /** - * Name of help topic for the front end (Ghidra Project Window). - */ - public final static String FRONT_END_HELP_TOPIC = "FrontEndPlugin"; - /** - * Name of the help topic for "About" domain objects and Ghidra. - */ - public final static String ABOUT_HELP_TOPIC = "About"; - /** - * Name of the help topic for "Report Bug". - */ - public final static String REPORT_BUG_TOPIC = "Intro"; - - public final static String MENU_LAST_GROUP = ""; - - /** A group for actions that link directly to help content */ - public final static String HELP_CONTENTS_MENU_GROUP = "AAAHelpContents"; - -} diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/project/tool/GhidraTool.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/project/tool/GhidraTool.java index 5c5d5f225a..c9804a1f47 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/project/tool/GhidraTool.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/project/tool/GhidraTool.java @@ -25,6 +25,7 @@ import docking.ActionContext; import docking.DockingWindowManager; import docking.action.DockingAction; import docking.action.MenuData; +import docking.tool.ToolConstants; import docking.widgets.OptionDialog; import ghidra.app.util.FileOpenDropHandler; import ghidra.framework.main.FrontEndOnly; @@ -175,13 +176,14 @@ public class GhidraTool extends PluginTool { } private void addCloseAction() { - DockingAction closeAction = new DockingAction("Close Tool", "Tool") { + DockingAction closeAction = new DockingAction("Close Tool", ToolConstants.TOOL_OWNER) { @Override public void actionPerformed(ActionContext context) { close(); } }; - closeAction.setHelpLocation(new HelpLocation("Tool", closeAction.getName())); + closeAction.setHelpLocation( + new HelpLocation(ToolConstants.TOOL_HELP_TOPIC, closeAction.getName())); closeAction.setEnabled(true); closeAction.setMenuBarData( @@ -192,7 +194,7 @@ public class GhidraTool extends PluginTool { protected void addManagePluginsAction() { - configureToolAction = new DockingAction("Configure Tool", "Tool") { + configureToolAction = new DockingAction("Configure Tool", ToolConstants.TOOL_OWNER) { @Override public void actionPerformed(ActionContext context) { showConfig(); diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/project/tool/ToolIconURL.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/project/tool/ToolIconURL.java index e1d0986d20..15a06f786c 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/project/tool/ToolIconURL.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/project/tool/ToolIconURL.java @@ -1,6 +1,5 @@ /* ### * IP: GHIDRA - * REVIEWED: YES * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +16,6 @@ package ghidra.framework.project.tool; import generic.Images; -import ghidra.framework.plugintool.util.ToolConstants; import java.awt.image.*; import java.io.File; @@ -25,6 +23,7 @@ import java.util.Hashtable; import javax.swing.ImageIcon; +import docking.tool.ToolConstants; import resources.ResourceManager; /** diff --git a/Ghidra/Test/IntegrationTest/src/screen/java/help/screenshot/ToolScreenShots.java b/Ghidra/Test/IntegrationTest/src/screen/java/help/screenshot/ToolScreenShots.java index 72e5171005..5d7ae7c6d0 100644 --- a/Ghidra/Test/IntegrationTest/src/screen/java/help/screenshot/ToolScreenShots.java +++ b/Ghidra/Test/IntegrationTest/src/screen/java/help/screenshot/ToolScreenShots.java @@ -32,6 +32,7 @@ import docking.StatusBar; import docking.action.DockingActionIf; import docking.actions.KeyEntryDialog; import docking.actions.ToolActions; +import docking.tool.ToolConstants; import docking.widgets.OptionDialog; import docking.widgets.table.GTable; import generic.jar.ResourceFile; @@ -60,7 +61,7 @@ public class ToolScreenShots extends GhidraScreenShotGenerator { public void testConfigTool() { tool = env.launchDefaultTool(); - performAction("Configure Tool", "Tool", false); + performAction("Configure Tool", ToolConstants.TOOL_OWNER, false); captureDialog(600, 500); } @@ -68,7 +69,7 @@ public class ToolScreenShots extends GhidraScreenShotGenerator { public void testConfigurePlugins() { tool = env.launchDefaultTool(); - performAction("Configure Tool", "Tool", false); + performAction("Configure Tool", ToolConstants.TOOL_OWNER, false); performDialogAction("Configure All Plugins", false); PluginInstallerDialog installerProvider = (PluginInstallerDialog) getDialog(PluginInstallerDialog.class); @@ -81,7 +82,7 @@ public class ToolScreenShots extends GhidraScreenShotGenerator { @Test public void testSaveTool() { tool = env.launchDefaultTool(); - performAction("Save Tool As", "Tool", false); + performAction("Save Tool As", ToolConstants.TOOL_OWNER, false); captureDialog(); } @@ -232,7 +233,7 @@ public class ToolScreenShots extends GhidraScreenShotGenerator { } FileUtilities.writeLinesToFile(file, lines2); - performFrontEndAction("Show Log", "Tool", false); + performFrontEndAction("Show Log", ToolConstants.TOOL_OWNER, false); captureDialog("Ghidra User Log"); }