mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-03 17:59:46 +02:00
GT-2971 - Key Bindings - Added the ability to set a key binding for the
close button for all Component Providers
This commit is contained in:
parent
8739d8e750
commit
380d863c96
113 changed files with 612 additions and 477 deletions
|
@ -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<DockingActionIf> 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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue