import com.intellij.notification.Notification;
import com.intellij.notification.NotificationListener;
import com.intellij.notification.NotificationType;
-import com.intellij.openapi.actionSystem.AnAction;
-import com.intellij.openapi.actionSystem.AnActionEvent;
-import com.intellij.openapi.actionSystem.PlatformDataKeys;
-import com.intellij.openapi.actionSystem.Presentation;
+import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.DumbAware;
import com.intellij.psi.PsiFileFactory;
import com.intellij.util.Consumer;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.maven.project.MavenProject;
import org.jetbrains.idea.maven.project.MavenProjectsManager;
import org.jetbrains.idea.maven.server.MavenServerManager;
});
}
+ @Nullable
+ private static VirtualFile findPomXml(@NotNull DataContext dataContext) {
+ VirtualFile file = PlatformDataKeys.VIRTUAL_FILE.getData(dataContext);
+ if (file == null) return null;
+
+ if (file.isDirectory()) {
+ file = file.findChild("pom.xml");
+ if (file == null) return null;
+ }
+
+ MavenProjectsManager manager = MavenActionUtil.getProjectsManager(dataContext);
+
+ MavenProject mavenProject = manager.findProject(file);
+ if (mavenProject == null) return null;
+
+ return file;
+ }
+
@Override
public void actionPerformed(AnActionEvent event) {
final Project project = MavenActionUtil.getProject(event.getDataContext());
- final VirtualFile file = PlatformDataKeys.VIRTUAL_FILE.getData(event.getDataContext());
- assert file != null;
+ final VirtualFile file = findPomXml(event.getDataContext());
+ if (file == null) return;
if (MavenServerManager.getInstance().isUseMaven2()) {
showUnsupportedNotification(project, file);
public void update(AnActionEvent e) {
Presentation p = e.getPresentation();
- boolean visible = false;
-
- final MavenProjectsManager manager = MavenActionUtil.getProjectsManager(e.getDataContext());
-
- final VirtualFile file = PlatformDataKeys.VIRTUAL_FILE.getData(e.getDataContext());
- if (file != null) {
- MavenProject mavenProject = manager.findProject(file);
- visible = mavenProject != null;
- }
+ boolean visible = findPomXml(e.getDataContext()) != null;
p.setVisible(visible);
}