From f64be2cf2c58209741b2a992280b8ab22322ea12 Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Mon, 13 Jan 2020 14:09:35 +0100 Subject: [PATCH] [ui] suggesting IDE restart when imported configs contain custom VM options (IDEA-22407/IDEA-26855) GitOrigin-RevId: 0884671088518a13eb6f9b036339f026caed5122 --- .../application/ConfigImportHelper.java | 23 +++++++++++++++++++ .../src/messages/ApplicationBundle.properties | 5 +++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/application/ConfigImportHelper.java b/platform/platform-impl/src/com/intellij/openapi/application/ConfigImportHelper.java index 5741045249bb..898684328745 100644 --- a/platform/platform-impl/src/com/intellij/openapi/application/ConfigImportHelper.java +++ b/platform/platform-impl/src/com/intellij/openapi/application/ConfigImportHelper.java @@ -10,6 +10,7 @@ import com.intellij.idea.SplashManager; import com.intellij.openapi.components.StoragePathMacros; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileTypes.FileTypeRegistry; +import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.SystemInfo; @@ -19,6 +20,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.AppUIUtil; import com.intellij.util.PlatformUtils; import com.intellij.util.ReflectionUtil; +import com.intellij.util.Restarter; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.io.Decompressor; import com.intellij.util.text.VersionComparatorUtil; @@ -26,6 +28,7 @@ import gnu.trove.THashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import javax.swing.*; import java.awt.*; import java.io.File; import java.io.IOException; @@ -93,9 +96,29 @@ public final class ConfigImportHelper { if (!result.isNull()) { doImport(result.get().first, newConfigDir, result.get().second, log); + if (settings != null) { settings.importFinished(newConfigDir); } + + if (Files.isRegularFile(newConfigDir.resolve(VMOptions.getCustomVMOptionsFileName()))) { + String title = ApplicationBundle.message("title.import.settings", ApplicationNamesInfo.getInstance().getFullProductName()); + String message = ApplicationBundle.message("restart.import.settings"); + String[] options = {ApplicationBundle.message("restart.import.now"), ApplicationBundle.message("restart.import.later")}; + if (JOptionPane.showOptionDialog(JOptionPane.getRootFrame(), message, title, JOptionPane.YES_NO_OPTION, + JOptionPane.INFORMATION_MESSAGE, Messages.getInformationIcon(), options, null) == 0) { + if (Restarter.isSupported()) { + try { + Restarter.scheduleRestart(false); + } + catch (IOException e) { + Main.showMessage("Restart failed", e); + } + } + System.exit(0); + } + } + System.setProperty(CONFIG_IMPORTED_IN_CURRENT_SESSION_KEY, Boolean.TRUE.toString()); } } diff --git a/platform/platform-resources-en/src/messages/ApplicationBundle.properties b/platform/platform-resources-en/src/messages/ApplicationBundle.properties index cc442b8aad95..e489fd8c5305 100644 --- a/platform/platform-resources-en/src/messages/ApplicationBundle.properties +++ b/platform/platform-resources-en/src/messages/ApplicationBundle.properties @@ -8,7 +8,10 @@ error.no.read.permissions=You do not have read permissions to {0} radio.do.not.import=Do not import settings radio.import.auto=Previous version radio.import=Config or installation folder: -title.import.settings=Import {0} Settings From... +title.import.settings=Import {0} Settings +restart.import.settings=Imported settings contain custom VM options.\nPlease restart the IDE to apply these options. +restart.import.now=Restart now +restart.import.later=Restart later button.ok=OK title.code.completion=Code Completion editbox.lookup.height=Lookup height (items):