diff --git a/spellchecker/src/META-INF/SpellCheckerPlugin.xml b/spellchecker/src/META-INF/SpellCheckerPlugin.xml index 30ac2c64e18f..98504c4dd809 100644 --- a/spellchecker/src/META-INF/SpellCheckerPlugin.xml +++ b/spellchecker/src/META-INF/SpellCheckerPlugin.xml @@ -14,6 +14,7 @@ overrides="true"/> + diff --git a/spellchecker/src/com/intellij/spellchecker/settings/SettingsTransferActivity.java b/spellchecker/src/com/intellij/spellchecker/settings/SettingsTransferActivity.java new file mode 100644 index 000000000000..55ddeee1a9d5 --- /dev/null +++ b/spellchecker/src/com/intellij/spellchecker/settings/SettingsTransferActivity.java @@ -0,0 +1,25 @@ +// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.intellij.spellchecker.settings; + +import com.intellij.openapi.components.ServiceManager; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.startup.StartupActivity; +import com.intellij.spellchecker.state.ProjectDictionaryState; +import org.jetbrains.annotations.NotNull; + +import static com.intellij.spellchecker.SpellCheckerManager.DictionaryLevel.APP; +import static com.intellij.spellchecker.SpellCheckerManager.DictionaryLevel.PROJECT; + +public class SettingsTransferActivity implements StartupActivity { + + @Override + public void runActivity(@NotNull Project project) { + final SpellCheckerSettings settings = SpellCheckerSettings.getInstance(project); + if (!settings.isSettingsTransferred() && settings.isUseSingleDictionaryToSave() && PROJECT.getName().equals(settings.getDictionaryToSave())) { + if (ServiceManager.getService(project, ProjectDictionaryState.class).getProjectDictionary().getWords().isEmpty()) { + settings.setDictionaryToSave(APP.getName()); + settings.setSettingsTransferred(true); + } + } + } +} diff --git a/spellchecker/src/com/intellij/spellchecker/settings/SpellCheckerSettings.java b/spellchecker/src/com/intellij/spellchecker/settings/SpellCheckerSettings.java index 831f7341efb0..5f545b24f7e7 100644 --- a/spellchecker/src/com/intellij/spellchecker/settings/SpellCheckerSettings.java +++ b/spellchecker/src/com/intellij/spellchecker/settings/SpellCheckerSettings.java @@ -40,6 +40,7 @@ public class SpellCheckerSettings implements PersistentStateComponent { private static final String DEFAULT_DICTIONARY_TO_SAVE = SpellCheckerManager.DictionaryLevel.PROJECT.getName(); private static final String USE_SINGLE_DICT_ATTR_NAME = "UseSingleDictionary"; private static final boolean DEFAULT_USE_SINGLE_DICT = true; + private static final String SETTINGS_TRANSFERRED = "transferred"; // Paths private final List myOldDictionaryFoldersPaths = new ArrayList<>(); @@ -49,6 +50,7 @@ public class SpellCheckerSettings implements PersistentStateComponent { private Set myRuntimeDisabledDictionariesNames = new HashSet<>(); private String myDictionaryToSave = DEFAULT_DICTIONARY_TO_SAVE; private boolean myUseSingleDictionaryToSave = DEFAULT_USE_SINGLE_DICT; + private boolean mySettingsTransferred = false; public String getDictionaryToSave() { return myDictionaryToSave; @@ -66,6 +68,14 @@ public class SpellCheckerSettings implements PersistentStateComponent { this.myUseSingleDictionaryToSave = useSingleDictionaryToSave; } + public boolean isSettingsTransferred() { + return mySettingsTransferred; + } + + public void setSettingsTransferred(boolean settingsTransferred) { + mySettingsTransferred = settingsTransferred; + } + public static @NotNull SpellCheckerSettings getInstance(Project project) { return ServiceManager.getService(project, SpellCheckerSettings.class); } @@ -140,6 +150,7 @@ public class SpellCheckerSettings implements PersistentStateComponent { } element.setAttribute(DICTIONARY_TO_SAVE_ATTR_NAME, myDictionaryToSave); element.setAttribute(USE_SINGLE_DICT_ATTR_NAME, String.valueOf(myUseSingleDictionaryToSave)); + element.setAttribute(SETTINGS_TRANSFERRED, String.valueOf(mySettingsTransferred)); return element; } @@ -187,6 +198,7 @@ public class SpellCheckerSettings implements PersistentStateComponent { myDictionaryToSave = notNullize(element.getAttributeValue(DICTIONARY_TO_SAVE_ATTR_NAME), DEFAULT_DICTIONARY_TO_SAVE); myUseSingleDictionaryToSave = Boolean.parseBoolean(notNullize(element.getAttributeValue(USE_SINGLE_DICT_ATTR_NAME), String.valueOf(DEFAULT_USE_SINGLE_DICT))); + mySettingsTransferred = Boolean.parseBoolean(notNullize(element.getAttributeValue(SETTINGS_TRANSFERRED), "false")); } catch (Exception ignored) { }