From bb4409403372061d1cd0f0160b6bec4bdcc099c2 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Mon, 5 May 2014 11:03:54 +0400 Subject: [PATCH] IDEA-124646 Option to turn off "compilation successful" popup --- .../intellij/compiler/impl/CompileDriver.java | 2 +- .../options/CompilerOptionsFilter.java | 2 +- .../options/CompilerOptionsPanel.form | 30 ++++++++++++------- .../options/CompilerUIConfigurable.java | 8 +++++ .../CompilerWorkspaceConfiguration.java | 1 + .../src/messages/CompilerBundle.properties | 1 + 6 files changed, 31 insertions(+), 13 deletions(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java b/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java index 342ff2efdfea..38fe261235b0 100644 --- a/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java +++ b/java/compiler/impl/src/com/intellij/compiler/impl/CompileDriver.java @@ -946,7 +946,7 @@ public class CompileDriver { if (!myProject.isDisposed()) { final String statusMessage = createStatusMessage(_status, warningCount, errorCount, duration); final MessageType messageType = errorCount > 0 ? MessageType.ERROR : warningCount > 0 ? MessageType.WARNING : MessageType.INFO; - if (duration > ONE_MINUTE_MS) { + if (duration > ONE_MINUTE_MS && CompilerWorkspaceConfiguration.getInstance(myProject).DISPLAY_NOTIFICATION_POPUP) { ToolWindowManager.getInstance(myProject).notifyByBalloon(ToolWindowId.MESSAGES_WINDOW, messageType, statusMessage); } CompilerManager.NOTIFICATION_GROUP.createNotification(statusMessage, messageType).notify(myProject); diff --git a/java/compiler/impl/src/com/intellij/compiler/options/CompilerOptionsFilter.java b/java/compiler/impl/src/com/intellij/compiler/options/CompilerOptionsFilter.java index 49ad3108ec64..b6eb3a7e7eca 100644 --- a/java/compiler/impl/src/com/intellij/compiler/options/CompilerOptionsFilter.java +++ b/java/compiler/impl/src/com/intellij/compiler/options/CompilerOptionsFilter.java @@ -35,7 +35,7 @@ public interface CompilerOptionsFilter { enum Setting { RESOURCE_PATTERNS, CLEAR_OUTPUT_DIR_ON_REBUILD, ADD_NOT_NULL_ASSERTIONS, AUTO_SHOW_FIRST_ERROR_IN_EDITOR, - EXTERNAL_BUILD, AUTO_MAKE, PARALLEL_COMPILATION, REBUILD_MODULE_ON_DEPENDENCY_CHANGE, HEAP_SIZE, COMPILER_VM_OPTIONS + EXTERNAL_BUILD, AUTO_MAKE, PARALLEL_COMPILATION, REBUILD_MODULE_ON_DEPENDENCY_CHANGE, HEAP_SIZE, COMPILER_VM_OPTIONS, DISPLAY_NOTIFICATION_POPUP } boolean isAvailable(@NotNull Setting setting, @NotNull Project project); diff --git a/java/compiler/impl/src/com/intellij/compiler/options/CompilerOptionsPanel.form b/java/compiler/impl/src/com/intellij/compiler/options/CompilerOptionsPanel.form index 6da52dc38d96..54f8d35e51ad 100644 --- a/java/compiler/impl/src/com/intellij/compiler/options/CompilerOptionsPanel.form +++ b/java/compiler/impl/src/com/intellij/compiler/options/CompilerOptionsPanel.form @@ -1,6 +1,6 @@
- + @@ -10,7 +10,7 @@ - + @@ -78,7 +78,7 @@ - + @@ -86,7 +86,7 @@ - + @@ -94,7 +94,7 @@ - + @@ -102,7 +102,7 @@ - + @@ -110,7 +110,7 @@ - + @@ -118,7 +118,7 @@ - + @@ -126,7 +126,7 @@ - + @@ -134,7 +134,7 @@ - + @@ -142,12 +142,20 @@ - + + + + + + + + + diff --git a/java/compiler/impl/src/com/intellij/compiler/options/CompilerUIConfigurable.java b/java/compiler/impl/src/com/intellij/compiler/options/CompilerUIConfigurable.java index 85ca916fec8a..78892d4d9e25 100644 --- a/java/compiler/impl/src/com/intellij/compiler/options/CompilerUIConfigurable.java +++ b/java/compiler/impl/src/com/intellij/compiler/options/CompilerUIConfigurable.java @@ -80,6 +80,7 @@ public class CompilerUIConfigurable implements SearchableConfigurable, Configura private JCheckBox myCbAssertNotNull; private JBLabel myPatternLegendLabel; private JCheckBox myCbAutoShowFirstError; + private JCheckBox myCbDisplayNotificationPopup; private JCheckBox myCbEnableAutomake; private JCheckBox myCbParallelCompilation; private JTextField myHeapSizeField; @@ -136,6 +137,7 @@ public class CompilerUIConfigurable implements SearchableConfigurable, Configura controls.put(Setting.CLEAR_OUTPUT_DIR_ON_REBUILD, Collections.singleton(myCbClearOutputDirectory)); controls.put(Setting.ADD_NOT_NULL_ASSERTIONS, Collections.singleton(myCbAssertNotNull)); controls.put(Setting.AUTO_SHOW_FIRST_ERROR_IN_EDITOR, Collections.singleton(myCbAutoShowFirstError)); + controls.put(Setting.DISPLAY_NOTIFICATION_POPUP, Collections.singleton(myCbDisplayNotificationPopup)); controls.put(Setting.AUTO_MAKE, ContainerUtilRt.newArrayList(myCbEnableAutomake, myEnableAutomakeLegendLabel)); controls.put(Setting.PARALLEL_COMPILATION, ContainerUtilRt.newArrayList(myCbParallelCompilation, myParallelCompilationLegendLabel)); @@ -158,6 +160,7 @@ public class CompilerUIConfigurable implements SearchableConfigurable, Configura final CompilerConfigurationImpl configuration = (CompilerConfigurationImpl)CompilerConfiguration.getInstance(myProject); final CompilerWorkspaceConfiguration workspaceConfiguration = CompilerWorkspaceConfiguration.getInstance(myProject); myCbAutoShowFirstError.setSelected(workspaceConfiguration.AUTO_SHOW_ERRORS_IN_EDITOR); + myCbDisplayNotificationPopup.setSelected(workspaceConfiguration.DISPLAY_NOTIFICATION_POPUP); myCbClearOutputDirectory.setSelected(workspaceConfiguration.CLEAR_OUTPUT_DIRECTORY); myCbAssertNotNull.setSelected(configuration.isAddNotNullAssertions()); myCbEnableAutomake.setSelected(workspaceConfiguration.MAKE_PROJECT_ON_SAVE); @@ -199,6 +202,9 @@ public class CompilerUIConfigurable implements SearchableConfigurable, Configura if (!myDisabledSettings.contains(Setting.AUTO_SHOW_FIRST_ERROR_IN_EDITOR)) { workspaceConfiguration.AUTO_SHOW_ERRORS_IN_EDITOR = myCbAutoShowFirstError.isSelected(); } + if (!myDisabledSettings.contains(Setting.DISPLAY_NOTIFICATION_POPUP)) { + workspaceConfiguration.DISPLAY_NOTIFICATION_POPUP = myCbDisplayNotificationPopup.isSelected(); + } if (!myDisabledSettings.contains(Setting.CLEAR_OUTPUT_DIR_ON_REBUILD)) { workspaceConfiguration.CLEAR_OUTPUT_DIRECTORY = myCbClearOutputDirectory.isSelected(); } @@ -272,6 +278,8 @@ public class CompilerUIConfigurable implements SearchableConfigurable, Configura final CompilerWorkspaceConfiguration workspaceConfiguration = CompilerWorkspaceConfiguration.getInstance(myProject); boolean isModified = !myDisabledSettings.contains(Setting.AUTO_SHOW_FIRST_ERROR_IN_EDITOR) && ComparingUtils.isModified(myCbAutoShowFirstError, workspaceConfiguration.AUTO_SHOW_ERRORS_IN_EDITOR); + isModified |= !myDisabledSettings.contains(Setting.DISPLAY_NOTIFICATION_POPUP) + && ComparingUtils.isModified(myCbDisplayNotificationPopup, workspaceConfiguration.DISPLAY_NOTIFICATION_POPUP); isModified |= !myDisabledSettings.contains(Setting.AUTO_MAKE) && ComparingUtils.isModified(myCbEnableAutomake, workspaceConfiguration.MAKE_PROJECT_ON_SAVE); isModified |= !myDisabledSettings.contains(Setting.PARALLEL_COMPILATION) diff --git a/java/compiler/openapi/src/com/intellij/compiler/CompilerWorkspaceConfiguration.java b/java/compiler/openapi/src/com/intellij/compiler/CompilerWorkspaceConfiguration.java index 85880aee50f4..79f66c504c48 100644 --- a/java/compiler/openapi/src/com/intellij/compiler/CompilerWorkspaceConfiguration.java +++ b/java/compiler/openapi/src/com/intellij/compiler/CompilerWorkspaceConfiguration.java @@ -41,6 +41,7 @@ public class CompilerWorkspaceConfiguration implements PersistentStateComponent< } public boolean AUTO_SHOW_ERRORS_IN_EDITOR = true; + public boolean DISPLAY_NOTIFICATION_POPUP = true; @Deprecated public boolean CLOSE_MESSAGE_VIEW_IF_SUCCESS = true; public boolean CLEAR_OUTPUT_DIRECTORY = true; public boolean USE_OUT_OF_PROCESS_BUILD = true; diff --git a/resources-en/src/messages/CompilerBundle.properties b/resources-en/src/messages/CompilerBundle.properties index b9167ee2738b..27a33a6d02df 100644 --- a/resources-en/src/messages/CompilerBundle.properties +++ b/resources-en/src/messages/CompilerBundle.properties @@ -214,3 +214,4 @@ label.generate.ant.script.inline.runtime.classpaths=Inline runtime classpaths label.generate.ant.script.generate.idea.home=Use current IDEA instance for idea.home property label.option.autoshow.first.error=Automatically show first &error in editor label.generate.ant.script.filename=Output file name: +label.option.display.notification.popup=Display notification on build completion