diff --git a/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplateUtil.java b/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplateUtil.java index b2e21797a8d6..0279c2f74cd5 100644 --- a/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplateUtil.java +++ b/platform/lang-impl/src/com/intellij/ide/fileTemplates/FileTemplateUtil.java @@ -199,13 +199,6 @@ public class FileTemplateUtil{ return stringWriter.toString(); } - public static void copyTemplate(FileTemplate from, FileTemplate to){ - to.setExtension(from.getExtension()); - to.setName(from.getName()); - to.setText(from.getText()); - to.setReformatCode(from.isReformatCode()); - } - @SuppressWarnings({"HardCodedStringLiteral"}) private static synchronized void initVelocity(){ try{ diff --git a/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FTManager.java b/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FTManager.java index aaea2e71518c..51b5696aa02e 100644 --- a/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FTManager.java +++ b/platform/lang-impl/src/com/intellij/ide/fileTemplates/impl/FTManager.java @@ -168,6 +168,8 @@ class FTManager { _template.setText(template.getText()); _template.setReformatCode(template.isReformatCode()); } + // Important! Must update template files on disk so that Velocity is able to use them + saveTemplates(); } public void addDefaultTemplate(DefaultTemplate template) { @@ -185,72 +187,6 @@ class FTManager { return bundled; } - // synchronizes templates: merges user-defined templates with default templates from the same category - //private void loadTemplates() { - // final File configRoot = getConfigRoot(false); - // File[] configFiles = configRoot.listFiles(); - // if (configFiles == null) { - // configFiles = ArrayUtil.EMPTY_FILE_ARRAY; - // } - // - // final List existingTemplates = new ArrayList(); - // // Read user-defined templates - // for (File file : configFiles) { - // if (file.isDirectory() || myTypeManager.isFileIgnored(file.getName()) || file.isHidden()) { - // continue; - // } - // String name = file.getName(); - // final String extension = myTypeManager.getExtension(name); - // name = name.substring(0, name.length() - extension.length() - 1); - // if (name.length() == 0) { - // continue; - // } - // final FileTemplate existing = myTemplates.findByName(name); - // if (existing == null || existing.isDefault()) { - // if (existing != null) { - // myTemplates.removeTemplate(existing); - // } - // FileTemplateImpl fileTemplate = new FileTemplateImpl(file, name, extension, false); - // myTemplates.addTemplate(fileTemplate); - // existingTemplates.add(fileTemplate); - // } - // else { - // // it is a user-defined template, revalidate it - // LOG.assertTrue(!((FileTemplateImpl)existing).isModified()); - // ((FileTemplateImpl)existing).invalidate(); - // existingTemplates.add(existing); - // } - // } - // - // for (final DefaultTemplate defaultTemplate : getDefaultTemplates()) { - // final String name = defaultTemplate.getName(); - // final FileTemplate template = myTemplates.findByName(name); - // if (template == null) { - // final FileTemplateImpl _template = new FileTemplateImpl(defaultTemplate.getTemplateURL(), defaultTemplate.getName(), defaultTemplate.getExtension()); - // _template.setDescription(defaultTemplate.getDescriptionURL()); - // myTemplates.addTemplate(_template); - // } - // } - // - // List toRemove = null; - // for (FileTemplate template : myTemplates.getAllTemplates()) { - // final FileTemplateImpl templateImpl = (FileTemplateImpl)template; - // if (!templateImpl.isDefault() && !existingTemplates.contains(templateImpl) && !templateImpl.isNew()) { - // if (toRemove == null) { - // toRemove = new ArrayList(); - // } - // toRemove.add(templateImpl); - // } - // } - // - // if (toRemove != null) { - // for (FileTemplateImpl template : toRemove) { - // myTemplates.removeTemplate(template); - // template.removeFromDisk(); - // } - // } - //} - void saveTemplates() { try { final File configRoot = getConfigRoot(true); @@ -259,9 +195,7 @@ class FTManager { final File[] files = configRoot.listFiles(); if (files != null) { for (File file : files) { - if (file.getName().endsWith(TEMPLATE_EXTENSION_SUFFIX)) { - FileUtil.delete(file); - } + FileUtil.delete(file); } } @@ -283,7 +217,7 @@ class FTManager { * todo: review saving algorithm */ private static void saveTemplate(File parentDir, FileTemplateBase template, final String lineSeparator) throws IOException { - final File templateFile = new File(parentDir, template.getName() + "." + template.getExtension() + TEMPLATE_EXTENSION_SUFFIX); + final File templateFile = new File(parentDir, template.getName() + "." + template.getExtension()); FileOutputStream fileOutputStream = new FileOutputStream(templateFile); OutputStreamWriter outputStreamWriter; 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 5076f42beafd..7af76830d2ad 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 @@ -35,7 +35,6 @@ import com.intellij.openapi.util.*; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.SystemProperties; -import com.intellij.util.messages.MessageBus; import com.intellij.util.text.DateFormatUtil; import org.jdom.Element; import org.jetbrains.annotations.NonNls; @@ -199,31 +198,32 @@ public class FileTemplateManagerImpl extends FileTemplateManager implements Expo return; } - final List oldFormatTemplates = new ArrayList(); + final List templateWithDefaultExtension = new ArrayList(); final Set processedNames = new HashSet(); for (File file : configFiles) { if (file.isDirectory() || myTypeManager.isFileIgnored(file.getName()) || file.isHidden()) { continue; } - String name = file.getName(); - if (!name.endsWith(FTManager.TEMPLATE_EXTENSION_SUFFIX)) { - oldFormatTemplates.add(file); - continue; + final String name = file.getName(); + if (name.endsWith(FTManager.TEMPLATE_EXTENSION_SUFFIX)) { + templateWithDefaultExtension.add(file); + } + else { + processedNames.add(name); + addTemplateFromFile(manager, name, file); } - // cut default template extension - name = name.substring(0, name.length() - FTManager.TEMPLATE_EXTENSION_SUFFIX.length()); - processedNames.add(name); - addTemplateFromFile(manager, name, file); } - for (File oldFile : oldFormatTemplates) { - final String name = oldFile.getName(); + for (File file : templateWithDefaultExtension) { + String name = file.getName(); + // cut default template extension + name = name.substring(0, name.length() - FTManager.TEMPLATE_EXTENSION_SUFFIX.length()); if (!processedNames.contains(name)) { - addTemplateFromFile(manager, name, oldFile); + addTemplateFromFile(manager, name, file); } - FileUtil.delete(oldFile); + FileUtil.delete(file); } } @@ -554,6 +554,8 @@ public class FileTemplateManagerImpl extends FileTemplateManager implements Expo final String text = normalizeText(getDefaultClassTemplateText(templateName)); template = myInternalTemplatesManager.addTemplate(templateName, "java"); template.setText(text); + // Important! Must update template files on disk so that Velocity is able to use them + myInternalTemplatesManager.saveTemplates(); } } return template;