From 4beb1e26c7f969e6156bc4e84195bbf9036aca6d Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Tue, 22 Nov 2011 20:10:19 +0100 Subject: [PATCH] + create button from AnAction --- .../src/com/intellij/ui/AnActionButton.java | 36 +++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/platform/platform-api/src/com/intellij/ui/AnActionButton.java b/platform/platform-api/src/com/intellij/ui/AnActionButton.java index 98789eda843f..7ecf3b2af477 100644 --- a/platform/platform-api/src/com/intellij/ui/AnActionButton.java +++ b/platform/platform-api/src/com/intellij/ui/AnActionButton.java @@ -30,6 +30,7 @@ public abstract class AnActionButton extends AnAction implements ShortcutProvide private boolean myEnabled = true; private boolean myVisible = true; private ShortcutSet myShortcut; + private AnAction myAction = null; private JComponent myContextComponent; public AnActionButton(String text) { @@ -47,6 +48,29 @@ public abstract class AnActionButton extends AnAction implements ShortcutProvide public AnActionButton() { } + + public static AnActionButton fromAction(final AnAction action) { + final Presentation presentation = action.getTemplatePresentation(); + return new AnActionButton(presentation.getText(), + presentation.getDescription(), + presentation.getIcon()) { + + @Override + public void actionPerformed(AnActionEvent e) { + action.actionPerformed(e); + } + + @Override + public void updateButton(AnActionEvent e) { + action.update(e); + final boolean enabled = e.getPresentation().isEnabled(); + final boolean visible = e.getPresentation().isVisible(); + if (enabled && visible) { + super.updateButton(e); + } + } + }; + } public boolean isEnabled() { return myEnabled; @@ -66,9 +90,17 @@ public abstract class AnActionButton extends AnAction implements ShortcutProvide @Override public final void update(AnActionEvent e) { - final boolean enabled = isEnabled() && isContextComponentOk(); + boolean myActionVisible = true; + boolean myActionEnabled = true; + if (myAction != null) { + myAction.update(e); + myActionEnabled = myAction.getTemplatePresentation().isEnabled(); + myActionVisible = myAction.getTemplatePresentation().isVisible(); + } + final boolean enabled = isEnabled() && isContextComponentOk() && myActionEnabled; e.getPresentation().setEnabled(enabled); - e.getPresentation().setVisible(isVisible()); + e.getPresentation().setVisible(isVisible() && myActionVisible); + if (enabled) { updateButton(e); }