diff --git a/platform/vcs-api/src/com/intellij/vcs/ShelveTitleProvider.kt b/platform/vcs-api/src/com/intellij/vcs/ShelveNameProvider.kt similarity index 60% rename from platform/vcs-api/src/com/intellij/vcs/ShelveTitleProvider.kt rename to platform/vcs-api/src/com/intellij/vcs/ShelveNameProvider.kt index f90dd6ed1359..865482661143 100644 --- a/platform/vcs-api/src/com/intellij/vcs/ShelveTitleProvider.kt +++ b/platform/vcs-api/src/com/intellij/vcs/ShelveNameProvider.kt @@ -7,12 +7,12 @@ import com.intellij.openapi.vcs.changes.LocalChangeList.getAllDefaultNames import org.jetbrains.annotations.ApiStatus import java.awt.Component -interface ShelveTitleProvider { +interface ShelveNameProvider { /** - * Create a custom title for shelved changes + * Create a custom name for shelved changes */ - suspend fun suggestTitle(project: Project, patch: ShelveTitlePatch): String? + suspend fun generateName(project: Project, patch: ShelveNamePatch): String? /** * Show got it tooltip popup if applicable @@ -21,16 +21,21 @@ interface ShelveTitleProvider { fun showGotItPopup(project: Project, component: Component): Boolean companion object { - val EP_NAME: ExtensionPointName = ExtensionPointName("com.intellij.vcs.shelve.name") + private val EP_NAME: ExtensionPointName = ExtensionPointName("com.intellij.vcs.shelve.name") @JvmStatic fun showGotItTooltip(project: Project, component: Component) { EP_NAME.extensionList.any { it.showGotItPopup(project, component) } } + @JvmStatic + suspend fun generateShelveName(project: Project, patch: ShelveNamePatch): String? { + return EP_NAME.getIterable().firstNotNullOfOrNull { it?.generateName(project, patch) } + } + @JvmStatic fun hasDefaultName(name: String): Boolean = getAllDefaultNames().contains(name) } } -data class ShelveTitlePatch(val patchText: String, val fileNumber: Int) \ No newline at end of file +data class ShelveNamePatch(val patchText: String, val fileNumber: Int) \ No newline at end of file diff --git a/platform/vcs-impl/resources/META-INF/VcsExtensionPoints.xml b/platform/vcs-impl/resources/META-INF/VcsExtensionPoints.xml index a62cdd20426d..988994e6f233 100644 --- a/platform/vcs-impl/resources/META-INF/VcsExtensionPoints.xml +++ b/platform/vcs-impl/resources/META-INF/VcsExtensionPoints.xml @@ -235,7 +235,7 @@ dynamic="false"/> diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelveChangesManager.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelveChangesManager.java index 7c2794977b48..fdf1c933d74f 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelveChangesManager.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/shelf/ShelveChangesManager.java @@ -57,15 +57,13 @@ import com.intellij.util.ui.UIUtil; import com.intellij.util.xmlb.annotations.Attribute; import com.intellij.util.xmlb.annotations.OptionTag; import com.intellij.util.xmlb.annotations.XCollection; -import com.intellij.vcs.ShelveTitlePatch; -import com.intellij.vcs.ShelveTitleProvider; +import com.intellij.vcs.ShelveNamePatch; +import com.intellij.vcs.ShelveNameProvider; import com.intellij.vcs.VcsActivity; import com.intellij.vcsUtil.FilesProgress; import com.intellij.vcsUtil.VcsImplUtil; import com.intellij.vcsUtil.VcsUtil; import io.opentelemetry.api.trace.Tracer; -import kotlin.Unit; -import kotlin.jvm.functions.Function1; import kotlinx.coroutines.CoroutineScope; import org.jdom.Element; import org.jdom.Parent; @@ -401,8 +399,8 @@ public final class ShelveChangesManager implements PersistentStateComponent renameChangeList(changeList, name)); } } @@ -852,7 +850,7 @@ public final class ShelveChangesManager implements PersistentStateComponent) { + fun suggestBetterName(project: Project, patch: ShelveNamePatch, rename: Consumer) { ShelveChangesManager.getInstance(project).coroutineScope.launch { - rename.accept(ShelveTitleProvider.EP_NAME.getIterable().firstNotNullOf { it?.suggestTitle(project, patch) }) + ShelveNameProvider.generateShelveName(project, patch)?.let { rename.accept(it) } } } } \ No newline at end of file