From 4b19681a652c5c0989970cc2b5e37d22673cfc1d Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Mon, 22 Aug 2011 20:56:51 +0200 Subject: [PATCH] Hook to enable Delete action --- .../com/intellij/ui/AddRemoveUpDownPanel.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/platform/platform-api/src/com/intellij/ui/AddRemoveUpDownPanel.java b/platform/platform-api/src/com/intellij/ui/AddRemoveUpDownPanel.java index 1a401682d25f..ae0dedbb6816 100644 --- a/platform/platform-api/src/com/intellij/ui/AddRemoveUpDownPanel.java +++ b/platform/platform-api/src/com/intellij/ui/AddRemoveUpDownPanel.java @@ -143,11 +143,34 @@ class AddRemoveUpDownPanel extends JPanel { } else { button.registerCustomShortcutSet(shortcut, button.getContextComponent()); } + if (button instanceof MyActionButton && ((MyActionButton)button).isRemoveButton()) { + registerDeleteHook((MyActionButton)button); + } } } + super.addNotify(); // call after all to construct actions tooltips properly } + private static void registerDeleteHook(final MyActionButton removeButton) { + new AnAction("Delete Hook") { + @Override + public void actionPerformed(AnActionEvent e) { + removeButton.actionPerformed(e); + } + + @Override + public void update(AnActionEvent e) { + final JComponent contextComponent = removeButton.getContextComponent(); + if (contextComponent instanceof JTable && ((JTable)contextComponent).isEditing()) { + e.getPresentation().setEnabled(false); + return; + } + removeButton.update(e); + } + }.registerCustomShortcutSet(CustomShortcutSet.fromString("DELETE"), removeButton.getContextComponent()); + } + public void setEnabled(Buttons button, boolean enabled) { final MyActionButton b = myButtons.get(button); if (b != null) { @@ -214,6 +237,10 @@ class AddRemoveUpDownPanel extends JPanel { boolean isAddButton() { return myButton == Buttons.ADD; } + + boolean isRemoveButton() { + return myButton == Buttons.REMOVE; + } } interface ListenerFactory {