IDEA-135950 14.1 EAP deletes file templates

This commit is contained in:
Dmitry Avdeev
2015-02-05 16:24:45 +03:00
parent 0034db8708
commit f45d41104b
2 changed files with 22 additions and 9 deletions
@@ -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(){
@@ -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 {