IDEA-65114 "Add Maven projects" cannot be undone
authorSergey Evdokimov <sergey.evdokimov@jetbrains.com>
Fri, 20 Sep 2013 11:12:17 +0000 (15:12 +0400)
committerSergey Evdokimov <sergey.evdokimov@jetbrains.com>
Fri, 20 Sep 2013 11:12:40 +0000 (15:12 +0400)
plugins/maven/src/main/java/org/jetbrains/idea/maven/project/actions/RemoveManagedFilesAction.java

index eda90d0ab8b0beb2309dffd2025d3f11bee00753..46579b30f30c19294ec2055ba82b888828c61931 100644 (file)
  */
 package org.jetbrains.idea.maven.project.actions;
 
+import com.intellij.notification.Notification;
+import com.intellij.notification.NotificationType;
 import com.intellij.openapi.actionSystem.AnActionEvent;
 import com.intellij.openapi.actionSystem.DataContext;
 import com.intellij.openapi.vfs.VirtualFile;
+import org.jetbrains.idea.maven.project.MavenProjectsManager;
+import org.jetbrains.idea.maven.utils.MavenUtil;
 import org.jetbrains.idea.maven.utils.actions.MavenAction;
 import org.jetbrains.idea.maven.utils.actions.MavenActionUtil;
 
@@ -26,16 +30,35 @@ public class RemoveManagedFilesAction extends MavenAction {
   protected boolean isAvailable(AnActionEvent e) {
     if (!super.isAvailable(e)) return false;
 
-    final DataContext context = e.getDataContext();
-    for (VirtualFile each : MavenActionUtil.getMavenProjectsFiles(context)) {
-      if (MavenActionUtil.getProjectsManager(context).isManagedFile(each)) return true;
-    }
-    return false;
+    return !MavenActionUtil.getMavenProjectsFiles(e.getDataContext()).isEmpty();
   }
 
   @Override
   public void actionPerformed(AnActionEvent e) {
     final DataContext context = e.getDataContext();
-    MavenActionUtil.getProjectsManager(context).removeManagedFiles(MavenActionUtil.getMavenProjectsFiles(context));
+
+    boolean hasManagedFiles = false;
+
+    MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context);
+
+    for (VirtualFile each : MavenActionUtil.getMavenProjectsFiles(context)) {
+      if (projectsManager.isManagedFile(each)) {
+        hasManagedFiles = true;
+        break;
+      }
+    }
+
+    if (!hasManagedFiles) {
+      Notification notification = new Notification(MavenUtil.MAVEN_NOTIFICATION_GROUP, "Failed to remove project",
+                                                   "You can not remove selected project because it's " +
+                                                   "imported as module of other project. You can ignore it. Only root project can be removed.",
+                                                   NotificationType.ERROR);
+
+      notification.setImportant(true);
+      notification.notify(MavenActionUtil.getProject(context));
+      return;
+    }
+
+    projectsManager.removeManagedFiles(MavenActionUtil.getMavenProjectsFiles(context));
   }
 }