From 1e16e2154b89ecf6a484d80f4833e57bfa817880 Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Wed, 5 Nov 2014 15:38:47 +0400 Subject: [PATCH] maven: check for existing project in maven actions. It possible to process actions without an open project related issue - https://youtrack.jetbrains.com/issue/IDEA-132152 --- .../actions/AlwaysShowArtifactIdAction.java | 5 +++-- .../navigator/actions/GroupProjectsAction.java | 5 +++-- .../actions/MavenProjectsNavigatorAction.java | 17 ++++++++++++----- .../actions/ShowBasicPhasesOnlyAction.java | 5 +++-- .../actions/ShowIgnoredProjectsAction.java | 5 +++-- .../navigator/actions/ShowVersionsAction.java | 5 +++-- .../actions/AddFileAsMavenProjectAction.java | 7 ++++--- .../project/actions/AddManagedFilesAction.java | 1 + .../project/actions/DownloadActionGroup.java | 6 ++++-- .../DownloadSelectedSourcesAndDocsAction.java | 3 ++- .../project/actions/EditSettingsAction.java | 3 ++- .../project/actions/MavenProjectsAction.java | 7 +++++-- .../actions/MavenProjectsManagerAction.java | 4 +++- .../project/actions/MavenShowEffectivePom.java | 3 ++- .../actions/OpenOrCreateSettingsXmlAction.java | 5 ++++- .../project/actions/ReimportProjectAction.java | 3 ++- .../actions/RemoveManagedFilesAction.java | 1 + .../maven/project/actions/RunBuildAction.java | 16 +++++++++++----- .../actions/ToggleIgnoredProjectsAction.java | 14 +++++++++++--- .../project/actions/ToggleOfflineAction.java | 9 +++++++-- .../project/actions/ToggleProfileAction.java | 5 ++++- .../project/actions/ToggleSkipTestsAction.java | 7 ++++++- .../actions/UpdateFoldersForProjectAction.java | 3 ++- .../idea/maven/tasks/MavenKeymapExtension.java | 10 ++++++++-- .../tasks/actions/AssignShortcutAction.java | 13 ++++++++++--- .../actions/ToggleBeforeRunTaskAction.java | 10 ++++++++-- .../actions/ToggleCompilerTasksAction.java | 16 ++++++++++++---- .../maven/utils/actions/MavenActionUtil.java | 9 ++++++--- 28 files changed, 142 insertions(+), 55 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/AlwaysShowArtifactIdAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/AlwaysShowArtifactIdAction.java index c39f423062da..fc5985cf225a 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/AlwaysShowArtifactIdAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/AlwaysShowArtifactIdAction.java @@ -15,16 +15,17 @@ */ package org.jetbrains.idea.maven.navigator.actions; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.navigator.MavenProjectsNavigator; public class AlwaysShowArtifactIdAction extends MavenProjectsNavigatorAction { @Override - public boolean isSelected(MavenProjectsNavigator navigator) { + public boolean isSelected(@NotNull MavenProjectsNavigator navigator) { return navigator.getAlwaysShowArtifactId(); } @Override - public void setSelected(MavenProjectsNavigator navigator, boolean value) { + public void setSelected(@NotNull MavenProjectsNavigator navigator, boolean value) { navigator.setAlwaysShowArtifactId(value); } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/GroupProjectsAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/GroupProjectsAction.java index 2461dadb0272..b6212afb528e 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/GroupProjectsAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/GroupProjectsAction.java @@ -15,16 +15,17 @@ */ package org.jetbrains.idea.maven.navigator.actions; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.navigator.MavenProjectsNavigator; public class GroupProjectsAction extends MavenProjectsNavigatorAction { @Override - public boolean isSelected(MavenProjectsNavigator navigator) { + public boolean isSelected(@NotNull MavenProjectsNavigator navigator) { return navigator.getGroupModules(); } @Override - public void setSelected(MavenProjectsNavigator navigator, boolean value) { + public void setSelected(@NotNull MavenProjectsNavigator navigator, boolean value) { navigator.setGroupModules(value); } } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/MavenProjectsNavigatorAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/MavenProjectsNavigatorAction.java index d3222981f56f..6a990313a8e4 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/MavenProjectsNavigatorAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/MavenProjectsNavigatorAction.java @@ -16,6 +16,8 @@ package org.jetbrains.idea.maven.navigator.actions; import com.intellij.openapi.actionSystem.AnActionEvent; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.navigator.MavenProjectsNavigator; import org.jetbrains.idea.maven.utils.actions.MavenActionUtil; import org.jetbrains.idea.maven.utils.actions.MavenToggleAction; @@ -23,19 +25,24 @@ import org.jetbrains.idea.maven.utils.actions.MavenToggleAction; public abstract class MavenProjectsNavigatorAction extends MavenToggleAction { @Override protected boolean doIsSelected(AnActionEvent e) { - return isSelected(getNavigator(e)); + final MavenProjectsNavigator navigator = getNavigator(e); + return navigator!= null && isSelected(navigator); } @Override public void setSelected(AnActionEvent e, boolean state) { - setSelected(getNavigator(e), state); + final MavenProjectsNavigator navigator = getNavigator(e); + if (navigator != null) { + setSelected(navigator, state); + } } - private MavenProjectsNavigator getNavigator(AnActionEvent e) { + @Nullable + private static MavenProjectsNavigator getNavigator(AnActionEvent e) { return MavenProjectsNavigator.getInstance(MavenActionUtil.getProject(e.getDataContext())); } - protected abstract boolean isSelected(MavenProjectsNavigator navigator); + protected abstract boolean isSelected(@NotNull MavenProjectsNavigator navigator); - protected abstract void setSelected(MavenProjectsNavigator navigator, boolean value); + protected abstract void setSelected(@NotNull MavenProjectsNavigator navigator, boolean value); } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowBasicPhasesOnlyAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowBasicPhasesOnlyAction.java index d9884fb29d0b..a0725a00346b 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowBasicPhasesOnlyAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowBasicPhasesOnlyAction.java @@ -15,16 +15,17 @@ */ package org.jetbrains.idea.maven.navigator.actions; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.navigator.MavenProjectsNavigator; public class ShowBasicPhasesOnlyAction extends MavenProjectsNavigatorAction { @Override - public boolean isSelected(MavenProjectsNavigator navigator) { + public boolean isSelected(@NotNull MavenProjectsNavigator navigator) { return navigator.getShowBasicPhasesOnly(); } @Override - public void setSelected(MavenProjectsNavigator navigator, boolean value) { + public void setSelected(@NotNull MavenProjectsNavigator navigator, boolean value) { navigator.setShowBasicPhasesOnly(value); } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowIgnoredProjectsAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowIgnoredProjectsAction.java index d24e2583415d..788faed05016 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowIgnoredProjectsAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowIgnoredProjectsAction.java @@ -15,16 +15,17 @@ */ package org.jetbrains.idea.maven.navigator.actions; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.navigator.MavenProjectsNavigator; public class ShowIgnoredProjectsAction extends MavenProjectsNavigatorAction { @Override - public boolean isSelected(MavenProjectsNavigator navigator) { + public boolean isSelected(@NotNull MavenProjectsNavigator navigator) { return navigator.getShowIgnored(); } @Override - public void setSelected(MavenProjectsNavigator navigator, boolean value) { + public void setSelected(@NotNull MavenProjectsNavigator navigator, boolean value) { navigator.setShowIgnored(value); } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowVersionsAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowVersionsAction.java index b2ca05b0ac2f..929f08ee1d34 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowVersionsAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/navigator/actions/ShowVersionsAction.java @@ -15,16 +15,17 @@ */ package org.jetbrains.idea.maven.navigator.actions; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.navigator.MavenProjectsNavigator; public class ShowVersionsAction extends MavenProjectsNavigatorAction { @Override - public boolean isSelected(MavenProjectsNavigator navigator) { + public boolean isSelected(@NotNull MavenProjectsNavigator navigator) { return navigator.getShowVersions(); } @Override - public void setSelected(MavenProjectsNavigator navigator, boolean value) { + public void setSelected(@NotNull MavenProjectsNavigator navigator, boolean value) { navigator.setShowVersions(value); } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/AddFileAsMavenProjectAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/AddFileAsMavenProjectAction.java index ce05cccd5352..5cfd8ed787be 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/AddFileAsMavenProjectAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/AddFileAsMavenProjectAction.java @@ -18,7 +18,6 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.actionSystem.DataContext; -import com.intellij.openapi.actionSystem.PlatformDataKeys; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.project.MavenProjectsManager; @@ -32,7 +31,9 @@ public class AddFileAsMavenProjectAction extends MavenAction { public void actionPerformed(AnActionEvent e) { final DataContext context = e.getDataContext(); MavenProjectsManager manager = MavenActionUtil.getProjectsManager(context); - manager.addManagedFilesOrUnignore(Collections.singletonList(getSelectedFile(context))); + if (manager != null) { + manager.addManagedFilesOrUnignore(Collections.singletonList(getSelectedFile(context))); + } } @Override @@ -51,7 +52,7 @@ public class AddFileAsMavenProjectAction extends MavenAction { private static boolean isExistingProjectFile(DataContext context, VirtualFile file) { MavenProjectsManager manager = MavenActionUtil.getProjectsManager(context); - return manager.findProject(file) != null; + return manager != null && manager.findProject(file) != null; } @Nullable diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/AddManagedFilesAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/AddManagedFilesAction.java index 33cbf026699d..a38b3d2f5719 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/AddManagedFilesAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/AddManagedFilesAction.java @@ -32,6 +32,7 @@ public class AddManagedFilesAction extends MavenAction { @Override public void actionPerformed(AnActionEvent e) { final MavenProjectsManager manager = MavenActionUtil.getProjectsManager(e.getDataContext()); + if(manager == null) return; FileChooserDescriptor singlePomSelection = new FileChooserDescriptor(true, false, false, false, false, true) { @Override public boolean isFileSelectable(VirtualFile file) { diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/DownloadActionGroup.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/DownloadActionGroup.java index 6aa8d5b9c5c3..45cfbe8f5a25 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/DownloadActionGroup.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/DownloadActionGroup.java @@ -18,6 +18,7 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DefaultActionGroup; import com.intellij.openapi.project.DumbAware; +import org.jetbrains.idea.maven.project.MavenProjectsManager; import org.jetbrains.idea.maven.utils.actions.MavenActionUtil; public class DownloadActionGroup extends DefaultActionGroup implements DumbAware { @@ -28,7 +29,8 @@ public class DownloadActionGroup extends DefaultActionGroup implements DumbAware } private static boolean isEnabled(AnActionEvent e) { - return MavenActionUtil.hasProject(e.getDataContext()) - && MavenActionUtil.getProjectsManager(e.getDataContext()).isMavenizedProject(); + if(!MavenActionUtil.hasProject(e.getDataContext())) return false; + final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(e.getDataContext()); + return projectsManager != null && projectsManager.isMavenizedProject(); } } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/DownloadSelectedSourcesAndDocsAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/DownloadSelectedSourcesAndDocsAction.java index ae68b6e55436..680d94f81bac 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/DownloadSelectedSourcesAndDocsAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/DownloadSelectedSourcesAndDocsAction.java @@ -16,6 +16,7 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.model.MavenArtifact; import org.jetbrains.idea.maven.project.MavenProject; import org.jetbrains.idea.maven.project.MavenProjectsManager; @@ -49,7 +50,7 @@ public class DownloadSelectedSourcesAndDocsAction extends MavenProjectsAction { return result == null ? Collections.emptyList() : result; } - protected void perform(MavenProjectsManager manager, List mavenProjects, AnActionEvent e) { + protected void perform(@NotNull MavenProjectsManager manager, List mavenProjects, AnActionEvent e) { manager.scheduleArtifactsDownloading(mavenProjects, getDependencies(e), mySources, myDocs, null); } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/EditSettingsAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/EditSettingsAction.java index fb845d59360c..d8ae83e68ff2 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/EditSettingsAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/EditSettingsAction.java @@ -18,6 +18,7 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.options.ShowSettingsUtil; import com.intellij.openapi.project.Project; +import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.utils.MavenSettings; import org.jetbrains.idea.maven.utils.actions.MavenAction; import org.jetbrains.idea.maven.utils.actions.MavenActionUtil; @@ -28,7 +29,7 @@ public class EditSettingsAction extends MavenAction { showSettingsFor(MavenActionUtil.getProject(e.getDataContext())); } - protected static void showSettingsFor(Project project) { + protected static void showSettingsFor(@Nullable Project project) { ShowSettingsUtil.getInstance().showSettingsDialog(project, MavenSettings.DISPLAY_NAME); } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenProjectsAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenProjectsAction.java index 5d782cf7fc48..9bcf2734a843 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenProjectsAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenProjectsAction.java @@ -17,6 +17,7 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataContext; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.project.MavenProject; import org.jetbrains.idea.maven.project.MavenProjectsManager; import org.jetbrains.idea.maven.utils.actions.MavenAction; @@ -33,8 +34,10 @@ public abstract class MavenProjectsAction extends MavenAction { @Override public void actionPerformed(AnActionEvent e) { final DataContext context = e.getDataContext(); - perform(MavenActionUtil.getProjectsManager(context), MavenActionUtil.getMavenProjects(context), e); + final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context); + if(projectsManager == null) return; + perform(projectsManager, MavenActionUtil.getMavenProjects(context), e); } - protected abstract void perform(MavenProjectsManager manager, List mavenProjects, AnActionEvent e); + protected abstract void perform(@NotNull MavenProjectsManager manager, List mavenProjects, AnActionEvent e); } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenProjectsManagerAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenProjectsManagerAction.java index 5626ef504af3..ee0a78f5c8e2 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenProjectsManagerAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenProjectsManagerAction.java @@ -28,7 +28,9 @@ public abstract class MavenProjectsManagerAction extends MavenAction { @Override protected boolean isAvailable(AnActionEvent e) { - return super.isAvailable(e) && MavenActionUtil.getProjectsManager(e.getDataContext()).isMavenizedProject(); + if(!super.isAvailable(e)) return false; + final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(e.getDataContext()); + return projectsManager != null && projectsManager.isMavenizedProject(); } protected abstract void perform(MavenProjectsManager manager); diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenShowEffectivePom.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenShowEffectivePom.java index b938230f8a1d..f455377b3b38 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenShowEffectivePom.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/MavenShowEffectivePom.java @@ -101,7 +101,7 @@ public class MavenShowEffectivePom extends AnAction implements DumbAware { } MavenProjectsManager manager = MavenActionUtil.getProjectsManager(dataContext); - + if(manager == null) return null; MavenProject mavenProject = manager.findProject(file); if (mavenProject == null) return null; @@ -111,6 +111,7 @@ public class MavenShowEffectivePom extends AnAction implements DumbAware { @Override public void actionPerformed(AnActionEvent event) { final Project project = MavenActionUtil.getProject(event.getDataContext()); + if(project == null) return; final VirtualFile file = findPomXml(event.getDataContext()); if (file == null) return; diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/OpenOrCreateSettingsXmlAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/OpenOrCreateSettingsXmlAction.java index fcd73f31ec7b..f0ef576721a5 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/OpenOrCreateSettingsXmlAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/OpenOrCreateSettingsXmlAction.java @@ -16,6 +16,7 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; +import org.jetbrains.idea.maven.project.MavenProjectsManager; import org.jetbrains.idea.maven.utils.MavenFileTemplateGroupFactory; import org.jetbrains.idea.maven.utils.actions.MavenActionUtil; @@ -25,7 +26,9 @@ import java.util.List; public class OpenOrCreateSettingsXmlAction extends MavenOpenOrCreateFilesAction { protected List getFiles(AnActionEvent e) { - File file = MavenActionUtil.getProjectsManager(e.getDataContext()).getGeneralSettings().getEffectiveUserSettingsIoFile(); + final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(e.getDataContext()); + if(projectsManager == null) return Collections.emptyList(); + File file = projectsManager.getGeneralSettings().getEffectiveUserSettingsIoFile(); return file != null ? Collections.singletonList(file) : Collections.emptyList(); } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ReimportProjectAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ReimportProjectAction.java index fad26d7563d9..c40b8f815210 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ReimportProjectAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ReimportProjectAction.java @@ -16,13 +16,14 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.project.MavenProject; import org.jetbrains.idea.maven.project.MavenProjectsManager; import java.util.List; public class ReimportProjectAction extends MavenProjectsAction { - protected void perform(MavenProjectsManager manager, List mavenProjects, AnActionEvent e) { + protected void perform(@NotNull MavenProjectsManager manager, List mavenProjects, AnActionEvent e) { manager.forceUpdateProjects(mavenProjects); } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/RemoveManagedFilesAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/RemoveManagedFilesAction.java index 33889ee9d368..e3a417825f9d 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/RemoveManagedFilesAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/RemoveManagedFilesAction.java @@ -41,6 +41,7 @@ public class RemoveManagedFilesAction extends MavenAction { final DataContext context = e.getDataContext(); MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context); + if(projectsManager == null) return; List selectedFiles = MavenActionUtil.getMavenProjectsFiles(context); List removableFiles = new ArrayList(); diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/RunBuildAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/RunBuildAction.java index 497f29b6a7a8..b84d79f51ceb 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/RunBuildAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/RunBuildAction.java @@ -17,10 +17,12 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.project.Project; import org.jetbrains.idea.maven.execution.MavenRunConfigurationType; import org.jetbrains.idea.maven.execution.MavenRunnerParameters; import org.jetbrains.idea.maven.model.MavenExplicitProfiles; import org.jetbrains.idea.maven.project.MavenProject; +import org.jetbrains.idea.maven.project.MavenProjectsManager; import org.jetbrains.idea.maven.utils.MavenDataKeys; import org.jetbrains.idea.maven.utils.actions.MavenAction; import org.jetbrains.idea.maven.utils.actions.MavenActionUtil; @@ -42,18 +44,22 @@ public class RunBuildAction extends MavenAction { final List goals = MavenDataKeys.MAVEN_GOALS.getData(context); if (goals == null || goals.isEmpty()) return false; - final MavenProject project = MavenActionUtil.getMavenProject(context); - if (project == null) return false; + final Project project = MavenActionUtil.getProject(context); + if(project == null) return false; + final MavenProject mavenProject = MavenActionUtil.getMavenProject(context); + if (mavenProject == null) return false; if (!perform) return true; - MavenExplicitProfiles explicitProfiles = MavenActionUtil.getProjectsManager(context).getExplicitProfiles(); + final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context); + if(projectsManager == null) return false; + MavenExplicitProfiles explicitProfiles = projectsManager.getExplicitProfiles(); final MavenRunnerParameters params = new MavenRunnerParameters(true, - project.getDirectory(), + mavenProject.getDirectory(), goals, explicitProfiles.getEnabledProfiles(), explicitProfiles.getDisabledProfiles()); - MavenRunConfigurationType.runConfiguration(MavenActionUtil.getProject(context), params, null); + MavenRunConfigurationType.runConfiguration(project, params, null); return true; } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleIgnoredProjectsAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleIgnoredProjectsAction.java index 42b61b235fcb..de238a67290c 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleIgnoredProjectsAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleIgnoredProjectsAction.java @@ -18,6 +18,8 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.options.ShowSettingsUtil; +import com.intellij.openapi.project.Project; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.project.MavenIgnoredFilesConfigurable; import org.jetbrains.idea.maven.project.MavenProject; import org.jetbrains.idea.maven.project.MavenProjectsManager; @@ -35,6 +37,7 @@ public class ToggleIgnoredProjectsAction extends MavenAction { final DataContext context = e.getDataContext(); MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context); + if(projectsManager == null) return; List projects = MavenActionUtil.getMavenProjects(context); if (isIgnoredInSettings(projectsManager, projects)) { @@ -54,6 +57,7 @@ public class ToggleIgnoredProjectsAction extends MavenAction { final DataContext context = e.getDataContext(); MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context); + if(projectsManager == null) return false; List projects = MavenActionUtil.getMavenProjects(context); if (projects == null || projects.isEmpty()) return false; @@ -74,11 +78,11 @@ public class ToggleIgnoredProjectsAction extends MavenAction { (ignoredStatesCount == 0 || ignoredStatesCount == projects.size()); } - private static boolean isIgnored(MavenProjectsManager projectsManager, List projects) { + private static boolean isIgnored(@NotNull MavenProjectsManager projectsManager, List projects) { return projectsManager.getIgnoredState(projects.get(0)); } - private static boolean isIgnoredInSettings(MavenProjectsManager projectsManager, List projects) { + private static boolean isIgnoredInSettings(@NotNull MavenProjectsManager projectsManager, List projects) { return projectsManager.isIgnored(projects.get(0)) && !isIgnored(projectsManager, projects); } @@ -86,11 +90,15 @@ public class ToggleIgnoredProjectsAction extends MavenAction { public void actionPerformed(AnActionEvent e) { final DataContext context = e.getDataContext(); MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context); + if(projectsManager == null) return; List projects = MavenActionUtil.getMavenProjects(context); + final Project project = MavenActionUtil.getProject(context); + if(project == null) return; + if (isIgnoredInSettings(projectsManager, projects)) { ShowSettingsUtil.getInstance() - .editConfigurable(MavenActionUtil.getProject(context), new MavenIgnoredFilesConfigurable(MavenActionUtil.getProject(context))); + .editConfigurable(project, new MavenIgnoredFilesConfigurable(project)); } else { projectsManager.setIgnoredState(projects, !isIgnored(projectsManager, projects)); diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleOfflineAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleOfflineAction.java index 2f3411b730af..88837fcd6a57 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleOfflineAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleOfflineAction.java @@ -16,17 +16,22 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; +import org.jetbrains.idea.maven.project.MavenProjectsManager; import org.jetbrains.idea.maven.utils.actions.MavenActionUtil; import org.jetbrains.idea.maven.utils.actions.MavenToggleAction; public class ToggleOfflineAction extends MavenToggleAction { @Override protected boolean doIsSelected(AnActionEvent e) { - return MavenActionUtil.getProjectsManager(e.getDataContext()).getGeneralSettings().isWorkOffline(); + final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(e.getDataContext()); + return projectsManager != null && projectsManager.getGeneralSettings().isWorkOffline(); } @Override public void setSelected(AnActionEvent e, boolean state) { - MavenActionUtil.getProjectsManager(e.getDataContext()).getGeneralSettings().setWorkOffline(state); + final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(e.getDataContext()); + if (projectsManager != null) { + projectsManager.getGeneralSettings().setWorkOffline(state); + } } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleProfileAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleProfileAction.java index af0fbd091aad..bab3c4e38151 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleProfileAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleProfileAction.java @@ -16,6 +16,7 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.model.MavenExplicitProfiles; import org.jetbrains.idea.maven.model.MavenProfileKind; import org.jetbrains.idea.maven.project.MavenProjectsManager; @@ -61,10 +62,11 @@ public class ToggleProfileAction extends MavenAction { if (selectedProfiles == null || selectedProfiles.isEmpty()) return null; MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(e.getDataContext()); + if(projectsManager == null) return null; return getTargetState(projectsManager, selectedProfiles); } - private static MavenProfileKind getTargetState(MavenProjectsManager projectsManager, Map profiles) { + private static MavenProfileKind getTargetState(@NotNull MavenProjectsManager projectsManager, Map profiles) { MavenExplicitProfiles explicitProfiles = projectsManager.getExplicitProfiles(); MavenProfileKind targetState = null; // all profiles should target to the same state @@ -108,6 +110,7 @@ public class ToggleProfileAction extends MavenAction { @Override public void actionPerformed(AnActionEvent e) { MavenProjectsManager manager = MavenActionUtil.getProjectsManager(e.getDataContext()); + if(manager == null) return; Map selectedProfiles = e.getData(MavenDataKeys.MAVEN_PROFILES); Set selectedProfileIds = selectedProfiles.keySet(); diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleSkipTestsAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleSkipTestsAction.java index f4a8edff5f04..8381e79ec9a2 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleSkipTestsAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/ToggleSkipTestsAction.java @@ -16,6 +16,7 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; +import com.intellij.openapi.project.Project; import org.jetbrains.idea.maven.execution.MavenRunner; import org.jetbrains.idea.maven.utils.actions.MavenActionUtil; import org.jetbrains.idea.maven.utils.actions.MavenToggleAction; @@ -23,11 +24,15 @@ import org.jetbrains.idea.maven.utils.actions.MavenToggleAction; public class ToggleSkipTestsAction extends MavenToggleAction { @Override protected boolean doIsSelected(AnActionEvent e) { - return MavenRunner.getInstance(MavenActionUtil.getProject(e.getDataContext())).getState().isSkipTests(); + final Project project = MavenActionUtil.getProject(e.getDataContext()); + if(project == null) return false; + return MavenRunner.getInstance(project).getState().isSkipTests(); } @Override public void setSelected(AnActionEvent e, boolean state) { + final Project project = MavenActionUtil.getProject(e.getDataContext()); + if(project == null) return; MavenRunner.getInstance(MavenActionUtil.getProject(e.getDataContext())).getState().setSkipTests(state); } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/UpdateFoldersForProjectAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/UpdateFoldersForProjectAction.java index 90030cbb74ee..1558d620f00f 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/UpdateFoldersForProjectAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/UpdateFoldersForProjectAction.java @@ -16,13 +16,14 @@ package org.jetbrains.idea.maven.project.actions; import com.intellij.openapi.actionSystem.AnActionEvent; +import org.jetbrains.annotations.NotNull; import org.jetbrains.idea.maven.project.MavenProject; import org.jetbrains.idea.maven.project.MavenProjectsManager; import java.util.List; public class UpdateFoldersForProjectAction extends MavenProjectsAction { - protected void perform(MavenProjectsManager manager, List mavenProjects, AnActionEvent e) { + protected void perform(@NotNull MavenProjectsManager manager, List mavenProjects, AnActionEvent e) { manager.scheduleFoldersResolve(mavenProjects); } } \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/MavenKeymapExtension.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/MavenKeymapExtension.java index 25db4aa482be..ae692464751e 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/MavenKeymapExtension.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/MavenKeymapExtension.java @@ -30,6 +30,7 @@ import org.jetbrains.idea.maven.model.MavenConstants; import org.jetbrains.idea.maven.model.MavenExplicitProfiles; import org.jetbrains.idea.maven.model.MavenPlugin; import org.jetbrains.idea.maven.project.MavenProject; +import org.jetbrains.idea.maven.project.MavenProjectsManager; import org.jetbrains.idea.maven.utils.MavenArtifactUtil; import org.jetbrains.idea.maven.utils.MavenPluginInfo; import org.jetbrains.idea.maven.utils.actions.MavenAction; @@ -177,13 +178,18 @@ public class MavenKeymapExtension implements KeymapExtension { public void actionPerformed(AnActionEvent e) { final DataContext context = e.getDataContext(); - MavenExplicitProfiles explicitProfiles = MavenActionUtil.getProjectsManager(context).getExplicitProfiles(); + final Project project = MavenActionUtil.getProject(context); + if (project == null) return; + + final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context); + if(projectsManager == null) return; + MavenExplicitProfiles explicitProfiles = projectsManager.getExplicitProfiles(); MavenRunnerParameters params = new MavenRunnerParameters(true, myMavenProject.getDirectory(), Arrays.asList(myGoal), explicitProfiles.getEnabledProfiles(), explicitProfiles.getDisabledProfiles()); - MavenRunConfigurationType.runConfiguration(MavenActionUtil.getProject(context), params, null); + MavenRunConfigurationType.runConfiguration(project, params, null); } public MavenProject getMavenProject() { diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/AssignShortcutAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/AssignShortcutAction.java index 4b34acede751..f7c3c00e8ba7 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/AssignShortcutAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/AssignShortcutAction.java @@ -18,8 +18,10 @@ package org.jetbrains.idea.maven.tasks.actions; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.keymap.impl.ui.EditKeymapsDialog; +import com.intellij.openapi.project.Project; import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.project.MavenProject; +import org.jetbrains.idea.maven.project.MavenProjectsManager; import org.jetbrains.idea.maven.tasks.MavenShortcutsManager; import org.jetbrains.idea.maven.utils.MavenDataKeys; import org.jetbrains.idea.maven.utils.actions.MavenAction; @@ -37,7 +39,8 @@ public class AssignShortcutAction extends MavenAction { private static boolean isIgnoredProject(DataContext context) { final MavenProject project = MavenActionUtil.getMavenProject(context); if (project == null) return false; - return MavenActionUtil.getProjectsManager(context).isIgnored(project); + final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context); + return projectsManager != null && projectsManager.isIgnored(project); } public void actionPerformed(AnActionEvent e) { @@ -60,11 +63,15 @@ public class AssignShortcutAction extends MavenAction { String goal = goals.get(0); - return getShortcutsManager(context).getActionId(project.getPath(), goal); + final MavenShortcutsManager shortcutsManager = getShortcutsManager(context); + return shortcutsManager != null ? shortcutsManager.getActionId(project.getPath(), goal) : null; } + @Nullable protected static MavenShortcutsManager getShortcutsManager(DataContext context) { - return MavenShortcutsManager.getInstance(MavenActionUtil.getProject(context)); + final Project project = MavenActionUtil.getProject(context); + if(project == null) return null; + return MavenShortcutsManager.getInstance(project); } } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/ToggleBeforeRunTaskAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/ToggleBeforeRunTaskAction.java index 26dea4fc2634..cb8ccdb80ac0 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/ToggleBeforeRunTaskAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/ToggleBeforeRunTaskAction.java @@ -18,6 +18,7 @@ package org.jetbrains.idea.maven.tasks.actions; import com.intellij.execution.RunManagerEx; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Pair; import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.project.MavenProject; @@ -40,7 +41,9 @@ public class ToggleBeforeRunTaskAction extends MavenToggleAction { final DataContext context = e.getDataContext(); final Pair desc = getTaskDesc(context); if (desc != null) { - for (MavenBeforeRunTask each : getRunManager(context).getBeforeRunTasks(MavenBeforeRunTasksProvider.ID)) { + final RunManagerEx runManager = getRunManager(context); + if(runManager == null) return false; + for (MavenBeforeRunTask each : runManager.getBeforeRunTasks(MavenBeforeRunTasksProvider.ID)) { if (each.isFor(desc.first, desc.second)) return true; } } @@ -68,7 +71,10 @@ public class ToggleBeforeRunTaskAction extends MavenToggleAction { return Pair.create(mavenProject, goals.get(0)); } + @Nullable private static RunManagerEx getRunManager(DataContext context) { - return RunManagerEx.getInstanceEx(MavenActionUtil.getProject(context)); + final Project project = MavenActionUtil.getProject(context); + if(project == null) return null; + return RunManagerEx.getInstanceEx(project); } } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/ToggleCompilerTasksAction.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/ToggleCompilerTasksAction.java index 06c6260e75c0..4089266d0245 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/ToggleCompilerTasksAction.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/tasks/actions/ToggleCompilerTasksAction.java @@ -17,6 +17,8 @@ package org.jetbrains.idea.maven.tasks.actions; import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.project.Project; +import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.project.MavenProject; import org.jetbrains.idea.maven.tasks.MavenCompilerTask; import org.jetbrains.idea.maven.tasks.MavenTasksManager; @@ -50,12 +52,14 @@ public abstract class ToggleCompilerTasksAction extends MavenToggleAction { @Override public void setSelected(AnActionEvent e, boolean state) { final DataContext context = e.getDataContext(); + final MavenTasksManager tasksManager = getTasksManager(context); List tasks = getTasks(context); + if(tasksManager == null) return; if (state) { - addTasks(getTasksManager(context), tasks); + addTasks(tasksManager, tasks); } else { - removeTasks(getTasksManager(context), tasks); + removeTasks(tasksManager, tasks); } } @@ -73,7 +77,8 @@ public abstract class ToggleCompilerTasksAction extends MavenToggleAction { return result; } - protected boolean hasTask(MavenTasksManager manager, MavenCompilerTask task) { + protected boolean hasTask(@Nullable MavenTasksManager manager, MavenCompilerTask task) { + if(manager == null) return false; return manager.isCompileTaskOfPhase(task, myPhase); } @@ -85,7 +90,10 @@ public abstract class ToggleCompilerTasksAction extends MavenToggleAction { manager.removeCompileTasks(tasks, myPhase); } + @Nullable private static MavenTasksManager getTasksManager(DataContext context) { - return MavenTasksManager.getInstance(MavenActionUtil.getProject(context)); + final Project project = MavenActionUtil.getProject(context); + if(project == null) return null; + return MavenTasksManager.getInstance(project); } } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/actions/MavenActionUtil.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/actions/MavenActionUtil.java index dc624d88df28..34cddb63a30c 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/actions/MavenActionUtil.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/actions/MavenActionUtil.java @@ -41,7 +41,7 @@ public class MavenActionUtil { return CommonDataKeys.PROJECT.getData(context) != null; } - @NotNull + @Nullable public static Project getProject(DataContext context) { return CommonDataKeys.PROJECT.getData(context); } @@ -55,6 +55,7 @@ public class MavenActionUtil { public static MavenProject getMavenProject(DataContext context) { MavenProject result; final MavenProjectsManager manager = getProjectsManager(context); + if(manager == null) return null; final VirtualFile file = CommonDataKeys.VIRTUAL_FILE.getData(context); if (file != null) { @@ -77,9 +78,11 @@ public class MavenActionUtil { return module != null ? module : DataKeys.MODULE_CONTEXT.getData(context); } - @NotNull + @Nullable public static MavenProjectsManager getProjectsManager(DataContext context) { - return MavenProjectsManager.getInstance(getProject(context)); + final Project project = getProject(context); + if(project == null) return null; + return MavenProjectsManager.getInstance(project); } public static boolean isMavenProjectFile(VirtualFile file) {