From 1a0d51c339306f9ad00a9ed86d0c49c5c9412a49 Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Fri, 17 Oct 2014 18:35:06 +0200 Subject: [PATCH] get rid of ExportableTemplateSettings hack --- .../impl/ExportableTemplateSettings.java | 37 ++------ .../template/impl/TemplateSettings.java | 93 +++++++++---------- 2 files changed, 52 insertions(+), 78 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/ExportableTemplateSettings.java b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/ExportableTemplateSettings.java index 3520c6c77453..9d4520a6386b 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/ExportableTemplateSettings.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/ExportableTemplateSettings.java @@ -20,49 +20,32 @@ import com.intellij.openapi.components.State; import com.intellij.openapi.components.Storage; import com.intellij.openapi.components.StoragePathMacros; import com.intellij.util.SmartList; -import com.intellij.util.xmlb.XmlSerializerUtil; import org.jetbrains.annotations.Nullable; import java.util.Collection; +import java.util.List; -/** - * Contains exportable part of TemplateSettings (can be shared via export/import settings). - * @author Rustam Vishnyakov - */ +@SuppressWarnings("deprecation") +@Deprecated @State( name = "ExportableTemplateSettings", storages = @Storage(file = StoragePathMacros.APP_CONFIG + "/template.settings.xml") ) -public class ExportableTemplateSettings implements PersistentStateComponent { - private Collection deletedKeys = new SmartList(); - private TemplateSettings parentSettings; +final class ExportableTemplateSettings implements PersistentStateComponent { + public Collection deletedKeys = new SmartList(); @Nullable @Override public ExportableTemplateSettings getState() { - if (parentSettings != null) { - deletedKeys.clear(); - deletedKeys.addAll(parentSettings.getDeletedTemplates()); - } return this; } @Override public void loadState(ExportableTemplateSettings state) { - XmlSerializerUtil.copyBean(state, this); - } - - @SuppressWarnings("UnusedDeclaration") // Property via reflection - public Collection getDeletedKeys() { - return deletedKeys; - } - - @SuppressWarnings("UnusedDeclaration") // Property via reflection - public void setDeletedKeys(Collection deletedKeys) { - this.deletedKeys = deletedKeys; - } - - void setParentSettings(TemplateSettings settings) { - parentSettings = settings; + TemplateSettings templateSettings = TemplateSettings.getInstance(); + List deletedTemplates = templateSettings.getDeletedTemplates(); + deletedTemplates.clear(); + deletedTemplates.addAll(state.deletedKeys); + templateSettings.applyNewDeletedTemplates(); } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateSettings.java b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateSettings.java index 93901591cf4c..8ca15e778e68 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateSettings.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateSettings.java @@ -20,14 +20,15 @@ import com.intellij.codeInsight.template.Template; import com.intellij.openapi.application.ex.DecodeDefaultsUtil; import com.intellij.openapi.components.*; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.extensions.Extensions; import com.intellij.openapi.options.BaseSchemeProcessor; import com.intellij.openapi.options.SchemeProcessor; import com.intellij.openapi.options.SchemesManager; import com.intellij.openapi.options.SchemesManagerFactory; +import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.JDOMUtil; import com.intellij.openapi.util.WriteExternalException; +import com.intellij.util.SmartList; import com.intellij.util.containers.MultiMap; import com.intellij.util.xmlb.Converter; import com.intellij.util.xmlb.annotations.OptionTag; @@ -44,7 +45,11 @@ import java.util.*; @State( name = "TemplateSettings", - storages = @Storage(file = StoragePathMacros.APP_CONFIG + "/other.xml") + storages = { + @Storage(file = StoragePathMacros.APP_CONFIG + "/other.xml"), + @Storage(file = StoragePathMacros.APP_CONFIG + "/template.settings.xml") + }, + storageChooser = LastStorageChooserForWrite.class ) public class TemplateSettings implements PersistentStateComponent { private static final Logger LOG = Logger.getInstance(TemplateSettings.class); @@ -56,8 +61,6 @@ public class TemplateSettings implements PersistentStateComponent myDeletedTemplates = new ArrayList(); - public static final char SPACE_CHAR = ' '; public static final char TAB_CHAR = '\t'; public static final char ENTER_CHAR = '\n'; @@ -91,9 +94,9 @@ public class TemplateSettings implements PersistentStateComponent myTemplates = MultiMap.createLinked(); - - private final Map myTemplatesById = new LinkedHashMap(); - private final Map myDefaultTemplates = new LinkedHashMap(); + + private final Map myTemplatesById = new LinkedHashMap(); + private final Map myDefaultTemplates = new LinkedHashMap(); private int myMaxKeyLength = 0; private final SchemesManager mySchemesManager; @@ -123,6 +126,8 @@ public class TemplateSettings implements PersistentStateComponent deletedKeys = new SmartList(); } public static class TemplateKey { @@ -146,11 +151,7 @@ public class TemplateSettings implements PersistentStateComponent(myTemplates.get(templateKey.key))) { removeTemplate(template); @@ -383,8 +381,7 @@ public class TemplateSettings implements PersistentStateComponent loaded = mySchemesManager.loadSchemes(); - for (TemplateGroup group : loaded) { - Collection templates = group.getElements(); - - for (TemplateImpl template : templates) { + for (TemplateGroup group : mySchemesManager.loadSchemes()) { + for (TemplateImpl template : group.getElements()) { addTemplateImpl(template); } } @@ -443,7 +440,7 @@ public class TemplateSettings implements PersistentStateComponent templates = myTemplates.get(group.getReplace()); - for (TemplateImpl template : templates) { + for (TemplateImpl template : myTemplates.get(group.getReplace())) { removeTemplate(template); } } @@ -480,7 +476,7 @@ public class TemplateSettings implements PersistentStateComponent newGroups) { + public void setTemplates(@NotNull List newGroups) { myTemplates.clear(); - myDeletedTemplates.clear(); + myState.deletedKeys.clear(); for (TemplateImpl template : myDefaultTemplates.values()) { - myDeletedTemplates.add(TemplateKey.keyOf(template)); + myState.deletedKeys.add(TemplateKey.keyOf(template)); } mySchemesManager.clearAllSchemes(); myMaxKeyLength = 0; @@ -689,20 +685,15 @@ public class TemplateSettings implements PersistentStateComponent getDeletedTemplates() { - return myDeletedTemplates; + return myState.deletedKeys; } public void reset() { - myDeletedTemplates.clear(); + myState.deletedKeys.clear(); loadDefaultLiveTemplates(); } }