From f7f1a77a365343fa6d1e744dc380a0699147fda7 Mon Sep 17 00:00:00 2001 From: Sergey Evdokimov Date: Thu, 15 Sep 2011 13:44:01 +0400 Subject: [PATCH] Bug fix: Balloon 'Grails library isn't configured' shown every sturtup if indexes are corrupted. --- plugins/groovy/src/META-INF/plugin.xml | 2 + .../mvc/MvcModuleStructureSynchronizer.java | 2 - .../MvcProjectWithoutLibraryNotificator.java | 64 +++++++++---------- 3 files changed, 32 insertions(+), 36 deletions(-) diff --git a/plugins/groovy/src/META-INF/plugin.xml b/plugins/groovy/src/META-INF/plugin.xml index 04576a510cec..aa0313a8feb4 100644 --- a/plugins/groovy/src/META-INF/plugin.xml +++ b/plugins/groovy/src/META-INF/plugin.xml @@ -361,6 +361,8 @@ + + org.jetbrains.plugins.groovy.intentions.GroovyIntentionsBundle diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcModuleStructureSynchronizer.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcModuleStructureSynchronizer.java index 3dd6b04e408a..00b698b16a22 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcModuleStructureSynchronizer.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcModuleStructureSynchronizer.java @@ -189,8 +189,6 @@ public class MvcModuleStructureSynchronizer extends AbstractProjectComponent { queue(SyncAction.EnsureRunConfigurationExists, myProject); queue(SyncAction.UpgradeFramework, myProject); queue(SyncAction.CreateAppStructureIfNeeded, myProject); - - MvcProjectWithoutLibraryNotificator.projectOpened(myProject); } private void queue(SyncAction action, Object on) { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcProjectWithoutLibraryNotificator.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcProjectWithoutLibraryNotificator.java index 1be654406d34..7f8cc96d2466 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcProjectWithoutLibraryNotificator.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcProjectWithoutLibraryNotificator.java @@ -5,12 +5,13 @@ import com.intellij.notification.NotificationListener; import com.intellij.notification.NotificationType; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; -import com.intellij.openapi.project.DumbAwareRunnable; import com.intellij.openapi.project.Project; -import com.intellij.openapi.project.ProjectManagerAdapter; -import com.intellij.openapi.startup.StartupManager; +import com.intellij.openapi.startup.StartupActivity; import com.intellij.openapi.util.Pair; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.CommonClassNames; +import com.intellij.psi.JavaPsiFacade; +import com.intellij.psi.search.GlobalSearchScope; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -19,41 +20,36 @@ import javax.swing.event.HyperlinkEvent; /** * @author Sergey Evdokimov */ -public class MvcProjectWithoutLibraryNotificator { +public class MvcProjectWithoutLibraryNotificator implements StartupActivity { - private MvcProjectWithoutLibraryNotificator() { + @Override + public void runActivity(final Project project) { + if (JavaPsiFacade.getInstance(project).findClass(CommonClassNames.JAVA_LANG_OBJECT, GlobalSearchScope.allScope(project)) == null) { + return; // If indexes is corrupted JavaPsiFacade.findClass() can't find classes during StartupActivity (may be it's a bug). + // So we can't determinate whether exists Grails library or not. + } - } + Pair pair = findModuleWithoutLibrary(project); - public static void projectOpened(final Project project) { - StartupManager.getInstance(project).runWhenProjectIsInitialized(new DumbAwareRunnable() { + if (pair != null) { + final MvcFramework framework = pair.second; + final Module module = pair.first; - @Override - public void run() { - Pair pair = findModuleWithoutLibrary(project); - - if (pair != null) { - final MvcFramework framework = pair.second; - final Module module = pair.first; - - new Notification(framework.getFrameworkName() + ".Configure", - framework.getFrameworkName() + " SDK not found.", - "Module '" + - module.getName() + - "' has no " + - framework.getFrameworkName() + - " SDK. Configure SDK", NotificationType.INFORMATION, - new NotificationListener() { - @Override - public void hyperlinkUpdate(@NotNull Notification notification, - @NotNull HyperlinkEvent event) { - MvcConfigureNotification.configure(framework, module); - } - }).notify(project); - - } - } - }); + new Notification(framework.getFrameworkName() + ".Configure", + framework.getFrameworkName() + " SDK not found.", + "Module '" + + module.getName() + + "' has no " + + framework.getFrameworkName() + + " SDK. Configure SDK", NotificationType.INFORMATION, + new NotificationListener() { + @Override + public void hyperlinkUpdate(@NotNull Notification notification, + @NotNull HyperlinkEvent event) { + MvcConfigureNotification.configure(framework, module); + } + }).notify(project); + } } @Nullable