IJPL-180572 Added combined frontend plugin manager controller

Introduced `FrontendDelegatingPluginManagerController` to unify local and remote plugin management, enabling a merged view of plugin sources. Updated related configurations and dependencies to seamlessly support this integration.

GitOrigin-RevId: e2ae710f89f405422ecd177fe65cc1d7e29659a5
This commit is contained in:
Denis Zaichenko
2025-05-30 09:56:43 +02:00
committed by intellij-monorepo-bot
parent 43d43e2d57
commit cad2ef4938
3 changed files with 7 additions and 8 deletions

View File

@@ -40,9 +40,7 @@ interface PluginUiModel {
val isPaid: Boolean val isPaid: Boolean
val isEnabled: Boolean val isEnabled: Boolean
val source: PluginSource
val dependencies: List<PluginDependencyModel> val dependencies: List<PluginDependencyModel>
var dependencyNames: Collection<String>? var dependencyNames: Collection<String>?
@get:NlsSafe @get:NlsSafe
@@ -56,14 +54,16 @@ interface PluginUiModel {
@get:NlsSafe @get:NlsSafe
val productCode: String? val productCode: String?
@get:NlsSafe @get:NlsSafe
val size: String? val size: String?
val releaseVersion: Int val releaseVersion: Int
@get:NlsSafe @get:NlsSafe
val displayCategory: String? val displayCategory: String?
var source: PluginSource
@get:NlsSafe @get:NlsSafe
var forumUrl: String? var forumUrl: String?
@@ -147,7 +147,7 @@ private fun PluginUiModel.getPluginDescriptor(): IdeaPluginDescriptor {
@ApiStatus.Internal @ApiStatus.Internal
enum class PluginSource { enum class PluginSource {
LOCAL, REMOTE LOCAL, REMOTE, BOTH
} }
/** /**

View File

@@ -55,16 +55,15 @@ class PluginUiModelAdapter(
override val isEnabled: Boolean override val isEnabled: Boolean
get() = !PluginManagerCore.isDisabled(pluginDescriptor.pluginId) get() = !PluginManagerCore.isDisabled(pluginDescriptor.pluginId)
override val source: PluginSource = PluginSource.LOCAL
override val dependencies: List<PluginDependencyModel> override val dependencies: List<PluginDependencyModel>
get() = pluginDescriptor.dependencies.map { PluginDependencyModel(it.pluginId, it.isOptional) } get() = pluginDescriptor.dependencies.map { PluginDependencyModel(it.pluginId, it.isOptional) }
override val vendor: String? override val vendor: String?
get() = pluginDescriptor.vendor get() = pluginDescriptor.vendor
override val organization: String? override val organization: String?
get() = pluginDescriptor.organization get() = pluginDescriptor.organization
override val changeNotes: String? override val changeNotes: String?
get() = pluginDescriptor.changeNotes get() = pluginDescriptor.changeNotes
override val productCode: String? override val productCode: String?
get() = pluginDescriptor.productCode get() = pluginDescriptor.productCode
override val size: String? override val size: String?
@@ -80,6 +79,7 @@ class PluginUiModelAdapter(
pluginDescriptor.forumUrl = value pluginDescriptor.forumUrl = value
} }
} }
override var source: PluginSource = PluginSource.LOCAL
override var licenseUrl: String? override var licenseUrl: String?
get() = if (pluginDescriptor is PluginNode) pluginDescriptor.licenseUrl else null get() = if (pluginDescriptor is PluginNode) pluginDescriptor.licenseUrl else null
set(value) { set(value) {

View File

@@ -4,7 +4,6 @@
<module name="intellij.platform.pluginManager.shared"/> <module name="intellij.platform.pluginManager.shared"/>
</dependencies> </dependencies>
<extensions defaultExtensionNs="com.intellij"> <extensions defaultExtensionNs="com.intellij">
<uiPluginManagerController implementation="com.intellij.platform.pluginManager.frontend.BackendUiPluginManagerController" <uiPluginManagerController implementation="com.intellij.platform.pluginManager.frontend.BackendUiPluginManagerController"/>
order="first"/>
</extensions> </extensions>
</idea-plugin> </idea-plugin>