GT-3567 - Dialog Keybindings - review fixes

This commit is contained in:
dragonmacher 2020-03-09 15:41:29 -04:00
parent 314100a70c
commit a2a9ade24f
5 changed files with 20 additions and 17 deletions

View File

@ -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);
}

View File

@ -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();
}

View File

@ -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);

View File

@ -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;
}

View File

@ -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);