From 7b7c698ada5b59eaed240330b441d21fecf3b50f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojt=C4=9Bch=20Kr=C3=A1sa?= Date: Sun, 31 Jul 2022 21:14:33 +0200 Subject: [PATCH] #93 toolbar actions visibility fix --- .../action/CreateCustomGoalAction.java | 22 +++------ .../krasa/mavenhelper/action/MyAnAction.java | 46 +++++++++++++++++++ .../action/OpenTerminalAction.java | 18 ++------ .../action/QuickRunMavenGoalAction.java | 19 ++++---- .../action/QuickRunRootMavenGoalAction.java | 11 ++--- .../mavenhelper/action/RunGoalAction.java | 21 +++------ .../mavenhelper/action/RunTestFileAction.java | 5 ++ src/main/resources/META-INF/plugin.xml | 4 +- 8 files changed, 80 insertions(+), 66 deletions(-) create mode 100644 src/main/java/krasa/mavenhelper/action/MyAnAction.java diff --git a/src/main/java/krasa/mavenhelper/action/CreateCustomGoalAction.java b/src/main/java/krasa/mavenhelper/action/CreateCustomGoalAction.java index 318b962..c25c1ae 100644 --- a/src/main/java/krasa/mavenhelper/action/CreateCustomGoalAction.java +++ b/src/main/java/krasa/mavenhelper/action/CreateCustomGoalAction.java @@ -2,8 +2,9 @@ import com.intellij.execution.actions.ConfigurationContext; import com.intellij.ide.util.PropertiesComponent; -import com.intellij.openapi.actionSystem.*; -import com.intellij.openapi.project.DumbAware; +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiFile; import krasa.mavenhelper.MavenHelperApplicationService; @@ -17,7 +18,7 @@ import org.jetbrains.idea.maven.project.MavenProjectsManager; import org.jetbrains.idea.maven.utils.actions.MavenActionUtil; -public class CreateCustomGoalAction extends AnAction implements DumbAware { +public class CreateCustomGoalAction extends MyAnAction { @Nullable protected MavenProjectInfo mavenProject; private boolean runGoal = true; @@ -70,20 +71,9 @@ protected RunGoalAction getRunGoalAction(Goal goal, MavenProjectInfo mavenProjec return RunGoalAction.create(goal, MyIcons.PLUGIN_GOAL, false, mavenProject1); } - @Override - public void update(AnActionEvent e) { - super.update(e); - Presentation p = e.getPresentation(); - p.setEnabled(isAvailable(e) && isVisible(e)); -// p.setVisible(isVisible(e)); - } - - protected boolean isAvailable(AnActionEvent e) { - return MavenActionUtil.hasProject(e.getDataContext()); - } - - protected boolean isVisible(AnActionEvent e) { + @Override + protected boolean isEnabled(AnActionEvent e) { return MavenProjectInfo.get(mavenProject, e).mavenProject != null; } diff --git a/src/main/java/krasa/mavenhelper/action/MyAnAction.java b/src/main/java/krasa/mavenhelper/action/MyAnAction.java new file mode 100644 index 0000000..0deb8bc --- /dev/null +++ b/src/main/java/krasa/mavenhelper/action/MyAnAction.java @@ -0,0 +1,46 @@ +package krasa.mavenhelper.action; + +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.Presentation; +import com.intellij.openapi.project.DumbAwareAction; +import com.intellij.openapi.util.NlsActions; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.idea.maven.utils.actions.MavenActionUtil; + +import javax.swing.*; + +public abstract class MyAnAction extends DumbAwareAction { + + public MyAnAction() { + } + + public MyAnAction(@Nullable @NlsActions.ActionText String text, @Nullable @NlsActions.ActionDescription String description, @Nullable Icon icon) { + super(text, description, icon); + } + + + public MyAnAction(@Nullable Icon icon) { + super(icon); + } + + public MyAnAction(@Nullable @NlsActions.ActionText String text) { + super(text); + } + + + @Override + public void update(AnActionEvent e) { + super.update(e); + Presentation p = e.getPresentation(); + p.setEnabled(isEnabled(e)); + p.setVisible(isVisible(e)); + } + + protected boolean isVisible(AnActionEvent e) { + return MavenActionUtil.isMavenizedProject(e.getDataContext()); + } + + protected boolean isEnabled(AnActionEvent e) { + return MavenActionUtil.hasProject(e.getDataContext()) && MavenActionUtil.getMavenProject(e.getDataContext()) != null; + } +} diff --git a/src/main/java/krasa/mavenhelper/action/OpenTerminalAction.java b/src/main/java/krasa/mavenhelper/action/OpenTerminalAction.java index 7b2f9ef..6cce0b0 100644 --- a/src/main/java/krasa/mavenhelper/action/OpenTerminalAction.java +++ b/src/main/java/krasa/mavenhelper/action/OpenTerminalAction.java @@ -2,17 +2,14 @@ import com.intellij.ide.plugins.IdeaPluginDescriptor; import com.intellij.ide.plugins.PluginManager; -import com.intellij.openapi.actionSystem.AnAction; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.Presentation; import com.intellij.openapi.extensions.PluginId; -import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; -import org.jetbrains.idea.maven.utils.actions.MavenActionUtil; import org.jetbrains.plugins.terminal.TerminalView; -public class OpenTerminalAction extends AnAction implements DumbAware { +public class OpenTerminalAction extends MyAnAction { private boolean pluginEnabled; @@ -34,18 +31,9 @@ public void actionPerformed(AnActionEvent e) { @Override public void update(AnActionEvent e) { - super.update(e); Presentation p = e.getPresentation(); - p.setEnabled(isAvailable(e)); - p.setVisible(isVisible(e)); - } - - protected boolean isAvailable(AnActionEvent e) { - return pluginEnabled && MavenActionUtil.hasProject(e.getDataContext()); - } - - protected boolean isVisible(AnActionEvent e) { - return pluginEnabled && MavenActionUtil.getMavenProject(e.getDataContext()) != null; + p.setEnabled(pluginEnabled && isEnabled(e)); + p.setVisible(pluginEnabled && isVisible(e)); } private boolean isPluginEnabled() { diff --git a/src/main/java/krasa/mavenhelper/action/QuickRunMavenGoalAction.java b/src/main/java/krasa/mavenhelper/action/QuickRunMavenGoalAction.java index eb88854..016b89a 100644 --- a/src/main/java/krasa/mavenhelper/action/QuickRunMavenGoalAction.java +++ b/src/main/java/krasa/mavenhelper/action/QuickRunMavenGoalAction.java @@ -31,7 +31,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.execution.MavenGoalLocation; -import org.jetbrains.idea.maven.project.MavenProject; import org.jetbrains.idea.maven.utils.actions.MavenActionUtil; import javax.swing.*; @@ -66,21 +65,21 @@ protected AnAction createGoalRunAction(Goal goal, final Icon icon, boolean plugi } } + @Override + public @NotNull ActionUpdateThread getActionUpdateThread() { + return ActionUpdateThread.BGT; //MavenActionUtil.getMavenProject(e.getDataContext()) does not work on EDT + } + @Override public void update(AnActionEvent e) { super.update(e); Presentation p = e.getPresentation(); - p.setEnabled(isAvailable(e)); - p.setVisible(isVisible(e)); - } - - protected boolean isAvailable(AnActionEvent e) { - return MavenActionUtil.hasProject(e.getDataContext()); + p.setEnabled(isEnabled(e)); + p.setVisible(MavenActionUtil.isMavenizedProject(e.getDataContext())); } - protected boolean isVisible(AnActionEvent e) { - MavenProject mavenProject = MavenActionUtil.getMavenProject(e.getDataContext()); //todo does not work - return mavenProject != null; + private boolean isEnabled(AnActionEvent e) { + return MavenActionUtil.hasProject(e.getDataContext()) && MavenActionUtil.getMavenProject(e.getDataContext()) != null; } @Override diff --git a/src/main/java/krasa/mavenhelper/action/QuickRunRootMavenGoalAction.java b/src/main/java/krasa/mavenhelper/action/QuickRunRootMavenGoalAction.java index 1e8638c..af49b8b 100644 --- a/src/main/java/krasa/mavenhelper/action/QuickRunRootMavenGoalAction.java +++ b/src/main/java/krasa/mavenhelper/action/QuickRunRootMavenGoalAction.java @@ -1,7 +1,9 @@ package krasa.mavenhelper.action; import com.intellij.execution.RunnerAndConfigurationSettings; -import com.intellij.openapi.actionSystem.*; +import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; @@ -37,13 +39,6 @@ protected AnAction createGoalRunAction(Goal goal, final Icon icon, boolean plugi } } - @Override - public void update(AnActionEvent e) { - super.update(e); - Presentation p = e.getPresentation(); - p.setEnabled(isAvailable(e)); - p.setVisible(isVisible(e)); - } @Override protected JBPopupFactory.ActionSelectionAid getAidMethod() { diff --git a/src/main/java/krasa/mavenhelper/action/RunGoalAction.java b/src/main/java/krasa/mavenhelper/action/RunGoalAction.java index 458c578..2ea3176 100644 --- a/src/main/java/krasa/mavenhelper/action/RunGoalAction.java +++ b/src/main/java/krasa/mavenhelper/action/RunGoalAction.java @@ -1,8 +1,9 @@ package krasa.mavenhelper.action; import com.intellij.execution.actions.ConfigurationContext; -import com.intellij.openapi.actionSystem.*; -import com.intellij.openapi.project.DumbAware; +import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.LangDataKeys; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiFile; import krasa.mavenhelper.model.ApplicationSettings; @@ -15,7 +16,7 @@ import javax.swing.*; import java.util.List; -public class RunGoalAction extends AnAction implements DumbAware { +public class RunGoalAction extends MyAnAction { private final Goal goal; @Nullable @@ -67,18 +68,8 @@ protected void run(MavenRunnerParameters params, Project project) { } @Override - public void update(AnActionEvent e) { - super.update(e); - Presentation p = e.getPresentation(); - p.setEnabled(isAvailable(e) && isVisible(e)); -// p.setVisible(isVisible(e)); - } - - protected boolean isAvailable(AnActionEvent e) { - return MavenActionUtil.hasProject(e.getDataContext()); - } - - protected boolean isVisible(AnActionEvent e) { + protected boolean isEnabled(AnActionEvent e) { return MavenProjectInfo.get(mavenProject, e).mavenProject != null; } + } diff --git a/src/main/java/krasa/mavenhelper/action/RunTestFileAction.java b/src/main/java/krasa/mavenhelper/action/RunTestFileAction.java index 99b6622..dcca45d 100644 --- a/src/main/java/krasa/mavenhelper/action/RunTestFileAction.java +++ b/src/main/java/krasa/mavenhelper/action/RunTestFileAction.java @@ -169,6 +169,11 @@ public void update(AnActionEvent e) { p.setVisible(false); return; } + if (!MavenActionUtil.isMavenizedProject(e.getDataContext())) { + Presentation p = e.getPresentation(); + p.setVisible(false); + return; + } //TODO #71 perhaps by com.intellij.execution.actions.BaseRunConfigurationAction.fullUpdate PsiFile psiFile = PlatformDataKeys.PSI_FILE.getData(e.getDataContext()); diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index e327718..33c6216 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -2,7 +2,7 @@ MavenRunHelper Maven Helper - 4.21.213.3714.0 + 4.21.222.2964.0 Vojtech Krasa @@ -140,7 +140,7 @@ ]]> - +