mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-02-16 15:40:14 +00:00
GT-3567 - Dialog Keybindings - review fixes
This commit is contained in:
parent
314100a70c
commit
a2a9ade24f
@ -30,7 +30,7 @@ import docking.action.*;
|
||||
import docking.actions.KeyBindingUtils;
|
||||
import docking.event.mouse.GMouseListenerAdapter;
|
||||
import docking.help.HelpService;
|
||||
import docking.menu.DockingToolbarButton;
|
||||
import docking.menu.DialogToolbarButton;
|
||||
import docking.util.AnimationUtils;
|
||||
import docking.widgets.label.GDHtmlLabel;
|
||||
import ghidra.util.*;
|
||||
@ -81,7 +81,7 @@ public class DialogComponentProvider
|
||||
private Component focusComponent;
|
||||
private JPanel toolbar;
|
||||
|
||||
private final Map<DockingActionIf, DockingToolbarButton> actionMap = new HashMap<>();
|
||||
private final Map<DockingActionIf, DialogToolbarButton> actionMap = new HashMap<>();
|
||||
private final DialogComponentProviderPopupActionManager popupManager =
|
||||
new DialogComponentProviderPopupActionManager(this);
|
||||
private final PopupHandler popupHandler = new PopupHandler();
|
||||
@ -1184,7 +1184,7 @@ public class DialogComponentProvider
|
||||
mainPanel.add(toolbar, BorderLayout.NORTH);
|
||||
}
|
||||
|
||||
DockingToolbarButton button = new DockingToolbarButton(action, this);
|
||||
DialogToolbarButton button = new DialogToolbarButton(action, this);
|
||||
toolbar.add(button);
|
||||
actionMap.put(action, button);
|
||||
}
|
||||
|
@ -220,10 +220,10 @@ public class KeyBindingOverrideKeyEventDispatcher implements KeyEventDispatcher
|
||||
Window activeWindow = focusProvider.getActiveWindow();
|
||||
if (activeWindow instanceof DockingDialog) {
|
||||
|
||||
// This is legacy code, for which the reasons it exists cannot be recalled. We
|
||||
// speculate that odd things can happen when keybindings are processed with model
|
||||
// dialogs open. For now, do not let key bindings get processed for modal dialogs.
|
||||
// This can be changed in the future if needed.
|
||||
// The choice to ignore modal dialogs was made long ago. We cannot remember why the
|
||||
// choice was made, but speculate that odd things can happen when keybindings are
|
||||
// processed with modal dialogs open. For now, do not let key bindings get processed
|
||||
// for modal dialogs. This can be changed in the future if needed.
|
||||
DockingDialog dialog = (DockingDialog) activeWindow;
|
||||
return !dialog.isModal();
|
||||
}
|
||||
|
@ -23,14 +23,17 @@ import docking.EmptyBorderToggleButton;
|
||||
import docking.action.*;
|
||||
|
||||
/**
|
||||
* Toolbar buttons for Dialogs. This class handles the peculiarities of DockableAction (see
|
||||
* the override notes below).
|
||||
* Toolbar buttons for Dialogs.
|
||||
*
|
||||
* <p>This class exists because dialog actions are not added to the regular tool's toolbars. This
|
||||
* means that we have to create the dialog's toolbars outside of the tool. Thus, this class
|
||||
* mimics how the tool's toolbar buttons are created.
|
||||
*/
|
||||
public class DockingToolbarButton extends EmptyBorderToggleButton {
|
||||
public class DialogToolbarButton extends EmptyBorderToggleButton {
|
||||
private DockingActionIf dockingAction;
|
||||
private ActionContextProvider contextProvider;
|
||||
|
||||
public DockingToolbarButton(DockingActionIf action, ActionContextProvider contextProvider) {
|
||||
public DialogToolbarButton(DockingActionIf action, ActionContextProvider contextProvider) {
|
||||
super(action);
|
||||
this.contextProvider = contextProvider;
|
||||
setFocusable(false);
|
@ -43,7 +43,7 @@ import docking.action.ToggleDockingActionIf;
|
||||
import docking.actions.DockingToolActions;
|
||||
import docking.dnd.GClipboard;
|
||||
import docking.framework.DockingApplicationConfiguration;
|
||||
import docking.menu.DockingToolbarButton;
|
||||
import docking.menu.DialogToolbarButton;
|
||||
import docking.widgets.MultiLineLabel;
|
||||
import docking.widgets.OptionDialog;
|
||||
import docking.widgets.filechooser.GhidraFileChooser;
|
||||
@ -1430,9 +1430,9 @@ public abstract class AbstractDockingTest extends AbstractGenericTest {
|
||||
if (element instanceof JButton) {
|
||||
|
||||
JButton button = (JButton) element;
|
||||
if (button instanceof DockingToolbarButton) {
|
||||
if (button instanceof DialogToolbarButton) {
|
||||
DockingActionIf dockingAction =
|
||||
((DockingToolbarButton) button).getDockingAction();
|
||||
((DialogToolbarButton) button).getDockingAction();
|
||||
if (dockingAction.getName().equals(name)) {
|
||||
return button;
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ import org.junit.Test;
|
||||
|
||||
import docking.ActionContext;
|
||||
import docking.action.*;
|
||||
import docking.menu.DockingToolbarButton;
|
||||
import docking.menu.DialogToolbarButton;
|
||||
import docking.test.AbstractDockingTest;
|
||||
import docking.widgets.EmptyBorderButton;
|
||||
import resources.ResourceManager;
|
||||
@ -146,13 +146,13 @@ public class EmptyBorderButtonTest extends AbstractDockingTest {
|
||||
action.setToolBarData(new ToolBarData(ResourceManager.getDefaultIcon()));
|
||||
action.setEnabled(false);
|
||||
|
||||
DockingToolbarButton button = new DockingToolbarButton(action, contextProvider);
|
||||
DialogToolbarButton button = new DialogToolbarButton(action, contextProvider);
|
||||
assertTrue(!button.isEnabled());
|
||||
|
||||
action.setEnabled(true);
|
||||
assertTrue(button.isEnabled());
|
||||
|
||||
button = new DockingToolbarButton(action, contextProvider);
|
||||
button = new DialogToolbarButton(action, contextProvider);
|
||||
assertTrue(button.isEnabled());
|
||||
|
||||
action.setEnabled(false);
|
||||
|
Loading…
Reference in New Issue
Block a user