From f45d41104be1a46d0cdceb5d23315be5129c6dcf Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Thu, 5 Feb 2015 16:20:28 +0300 Subject: [PATCH] IDEA-135950 14.1 EAP deletes file templates --- .../fileTemplates/FileTemplateManager.java | 4 ++- .../impl/FileTemplateManagerImpl.java | 27 +++++++++++++------ 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplateManager.java b/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplateManager.java index 21b3a5decb4d..e1dc6ccc8c2f 100644 --- a/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplateManager.java +++ b/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplateManager.java @@ -52,9 +52,11 @@ public abstract class FileTemplateManager{ public static final String PROJECT_NAME_VARIABLE = "PROJECT_NAME"; public static FileTemplateManager getInstance(@NotNull Project project){ - return ServiceManager.getService(project, FileTemplateManager.class); + return ServiceManager.getService(project, FileTemplateManager.class).checkInitialized(); } + protected FileTemplateManager checkInitialized() { return this; } + /** Use {@link #getInstance(Project)} instead */ @Deprecated public static FileTemplateManager getInstance(){ diff --git a/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateManagerImpl.java b/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateManagerImpl.java index fe126a1eb7a6..ba20119f945a 100644 --- a/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FileTemplateManagerImpl.java @@ -65,9 +65,11 @@ public class FileTemplateManagerImpl extends FileTemplateManager implements Pers private final FileTypeManagerEx myTypeManager; private final Project myProject; + /** Null for default project. */ @Nullable private final FileTemplatesScheme myProjectScheme; private FileTemplatesScheme myScheme = FileTemplatesScheme.DEFAULT; + private boolean myInitialized; private final FTManager myInternalTemplatesManager; private final FTManager myDefaultTemplatesManager; @@ -130,19 +132,27 @@ public class FileTemplateManagerImpl extends FileTemplateManager implements Pers @Override public void setCurrentScheme(@NotNull FileTemplatesScheme scheme) { - setScheme(scheme, true); + for (FTManager child : myAllManagers) { + child.saveTemplates(); + } + setScheme(scheme); } - private void setScheme(@NotNull FileTemplatesScheme scheme, boolean saveBefore) { - if (saveBefore) { - for (FTManager child : myAllManagers) { - child.saveTemplates(); - } - } + private void setScheme(@NotNull FileTemplatesScheme scheme) { myScheme = scheme; for (FTManager manager : myAllManagers) { manager.setScheme(scheme); } + myInitialized = true; + } + + @Override + protected FileTemplateManager checkInitialized() { + if (!myInitialized) { + // loadState() not called; init default scheme + setScheme(myScheme); + } + return this; } @Nullable @@ -436,7 +446,8 @@ public class FileTemplateManagerImpl extends FileTemplateManager implements Pers @Override public void loadState(State state) { XmlSerializerUtil.copyBean(state, myState); - setScheme(myProjectScheme != null && myProjectScheme.getName().equals(state.SCHEME) ? myProjectScheme : FileTemplatesScheme.DEFAULT, false); + FileTemplatesScheme scheme = myProjectScheme != null && myProjectScheme.getName().equals(state.SCHEME) ? myProjectScheme : FileTemplatesScheme.DEFAULT; + setScheme(scheme); } public static class State {