diff --git a/plugins/lombok/src/main/java/de/plushnikov/intellij/plugin/activity/LombokBuildManagerListener.java b/plugins/lombok/src/main/java/de/plushnikov/intellij/plugin/activity/LombokBuildManagerListener.java
index 7e3388cbb727..1a329193b222 100644
--- a/plugins/lombok/src/main/java/de/plushnikov/intellij/plugin/activity/LombokBuildManagerListener.java
+++ b/plugins/lombok/src/main/java/de/plushnikov/intellij/plugin/activity/LombokBuildManagerListener.java
@@ -3,13 +3,23 @@ package de.plushnikov.intellij.plugin.activity;
import com.intellij.compiler.CompilerConfiguration;
import com.intellij.compiler.CompilerConfigurationImpl;
import com.intellij.compiler.server.BuildManagerListener;
+import com.intellij.notification.*;
import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.project.Project;
+import com.intellij.openapi.ui.MessageType;
+import com.intellij.openapi.ui.popup.Balloon;
+import com.intellij.openapi.ui.popup.JBPopupFactory;
+import com.intellij.openapi.wm.StatusBar;
+import com.intellij.openapi.wm.WindowManager;
+import com.intellij.ui.awt.RelativePoint;
import com.intellij.util.containers.ContainerUtil;
+import de.plushnikov.intellij.plugin.LombokBundle;
+import de.plushnikov.intellij.plugin.Version;
import de.plushnikov.intellij.plugin.util.LombokLibraryUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.model.java.compiler.AnnotationProcessingConfiguration;
+import javax.swing.event.HyperlinkEvent;
import java.util.UUID;
public class LombokBuildManagerListener implements BuildManagerListener {
@@ -19,7 +29,7 @@ public class LombokBuildManagerListener implements BuildManagerListener {
@NotNull UUID sessionId) {
if (!hasAnnotationProcessorsEnabled(project) &&
ReadAction.nonBlocking(() -> LombokLibraryUtil.hasLombokLibrary(project)).executeSynchronously()) {
- enableAnnotationProcessors(project);
+ suggestEnableAnnotations(project);
}
}
@@ -37,5 +47,32 @@ public class LombokBuildManagerListener implements BuildManagerListener {
CompilerConfigurationImpl compilerConfiguration = getCompilerConfiguration(project);
compilerConfiguration.getDefaultProcessorProfile().setEnabled(true);
compilerConfiguration.getModuleProcessorProfiles().forEach(pp -> pp.setEnabled(true));
+
+ StatusBar statusBar = WindowManager.getInstance().getStatusBar(project);
+ JBPopupFactory.getInstance()
+ .createHtmlTextBalloonBuilder(
+ LombokBundle.message("popup.content.java.annotation.processing.has.been.enabled"),
+ MessageType.INFO,
+ null
+ )
+ .setFadeoutTime(3000)
+ .createBalloon()
+ .show(RelativePoint.getNorthEastOf(statusBar.getComponent()), Balloon.Position.atRight);
+ }
+
+ private static void suggestEnableAnnotations(Project project) {
+ NotificationGroup notificationGroup = NotificationGroupManager.getInstance().getNotificationGroup(Version.PLUGIN_NAME);
+ Notification notification =
+ notificationGroup.createNotification(LombokBundle.message("config.warn.annotation-processing.disabled.title"),
+ LombokBundle.message("config.warn.annotation-processing.disabled.message"),
+ NotificationType.ERROR);
+ notification.setListener((not, e) -> {
+ if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
+ enableAnnotationProcessors(project);
+ not.expire();
+ }
+ });
+
+ Notifications.Bus.notify(notification, project);
}
}
diff --git a/plugins/lombok/src/main/resources/messages/LombokBundle.properties b/plugins/lombok/src/main/resources/messages/LombokBundle.properties
index 7e80ceafbc19..b38113fc95f1 100644
--- a/plugins/lombok/src/main/resources/messages/LombokBundle.properties
+++ b/plugins/lombok/src/main/resources/messages/LombokBundle.properties
@@ -4,6 +4,9 @@ config.warn.dependency.outdated.message=
\
Project "{0}" and Module "{1}" seem to have outdated lombok dependency added.
\
Configured version "{2}", but there is at least version "{3}" already released
\
Maybe you want to update?
+config.warn.annotation-processing.disabled.title=Lombok requires enabled annotation processing
+config.warn.annotation-processing.disabled.message=
\
+ Do you want to enable annotation processors? Enable
replace.with.annotations.lombok=Replace with annotations (Lombok)
replace.0.with.explicit.type.lombok=Replace ''{0}'' with explicit type (Lombok)
replace.explicit.type.with.0.lombok=Replace explicit type with ''{0}'' (Lombok)
@@ -169,3 +172,4 @@ inspection.lombok.group.name.lombok=Lombok
inspection.lombok.group.name.redundant.modifiers=Redundant modifiers
inspection.lombok.group.name.redundant.definitions=Redundant definitions
intention.category.lombok=Java/Lombok
+popup.content.java.annotation.processing.has.been.enabled=Java annotation processing has been enabled