From 92179ae0ad547f67f893086ceb2a96cd3ffda1fc Mon Sep 17 00:00:00 2001 From: Elena Shaverdova Date: Tue, 24 Oct 2023 19:03:51 +0200 Subject: [PATCH] IDEA-336134 Rework implementation of ProjectTemplateExportable through ExportableComponent GitOrigin-RevId: dda70a261e39833aec8e93fe71ddc75502d37593 --- .../resources/META-INF/plugin.xml | 1 - .../templates/ProjectTemplateExportable.java | 37 ++++++++++++++----- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/java/ide-customization/resources/META-INF/plugin.xml b/java/ide-customization/resources/META-INF/plugin.xml index 78859e3ca605..471880115e26 100644 --- a/java/ide-customization/resources/META-INF/plugin.xml +++ b/java/ide-customization/resources/META-INF/plugin.xml @@ -40,7 +40,6 @@ - diff --git a/platform/lang-impl/src/com/intellij/platform/templates/ProjectTemplateExportable.java b/platform/lang-impl/src/com/intellij/platform/templates/ProjectTemplateExportable.java index f0e7e58cd73c..218955a0bec2 100644 --- a/platform/lang-impl/src/com/intellij/platform/templates/ProjectTemplateExportable.java +++ b/platform/lang-impl/src/com/intellij/platform/templates/ProjectTemplateExportable.java @@ -2,21 +2,40 @@ package com.intellij.platform.templates; import com.intellij.lang.LangBundle; -import com.intellij.openapi.components.ExportableComponent; +import com.intellij.openapi.components.PersistentStateComponent; +import com.intellij.openapi.components.SettingsCategory; +import com.intellij.openapi.components.State; +import com.intellij.openapi.components.Storage; +import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -import java.io.File; - -public final class ProjectTemplateExportable implements ExportableComponent { +@State(name = "ProjectTemplates", + storages = @Storage(value = "ProjectTemplates.xml", exportable = true),//no non-default state, so won't ever be created + additionalExportDirectory = "projectTemplates", + presentableName = ProjectTemplateExportable.NameGetter.class, + category = SettingsCategory.CODE) +public final class ProjectTemplateExportable implements PersistentStateComponent { @Override - public File @NotNull [] getExportFiles() { - return new File[]{new File(ArchivedTemplatesFactory.getCustomTemplatesPath())}; + public @Nullable ProjectTemplateExportable.ProjectTemplateExportableState getState() { + return null; } - @NotNull @Override - public String getPresentableName() { - return LangBundle.message("project.template.presentable.name"); + public void loadState(@NotNull ProjectTemplateExportableState state) { + //ignore + } + + public static class ProjectTemplateExportableState { + } + + public static class NameGetter extends State.NameGetter { + + @Nls + @Override + public String get() { + return LangBundle.message("project.template.presentable.name"); + } } }