mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IJPL-188924 Rewrite Build for Remote Development
make sure new implementation doesn't break CWM workflow GitOrigin-RevId: a87f0f364e86112ee1c9478312823905bf75cdf8
This commit is contained in:
committed by
intellij-monorepo-bot
parent
8b98eacad9
commit
cbe21bc5c0
@@ -1,47 +1,15 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.platform.buildView.backend
|
||||
|
||||
import com.intellij.build.*
|
||||
import com.intellij.openapi.application.EDT
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.platform.buildView.BuildViewApi
|
||||
import com.intellij.platform.project.ProjectId
|
||||
import com.intellij.platform.project.findProject
|
||||
import com.intellij.platform.buildView.BuildViewApiImpl
|
||||
import com.intellij.platform.rpc.backend.RemoteApiProvider
|
||||
import fleet.rpc.remoteApiDescriptor
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
internal class BuildViewApiProvider : RemoteApiProvider {
|
||||
override fun RemoteApiProvider.Sink.remoteApis() {
|
||||
remoteApi(remoteApiDescriptor<BuildViewApi>()) {
|
||||
BuildViewApiImpl()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class BuildViewApiImpl : BuildViewApi {
|
||||
override suspend fun getBuildViewEventsFlow(projectId: ProjectId): Flow<BuildViewEvent> {
|
||||
return BuildViewViewModel.getInstance(projectId.findProject()).getFlowWithHistory()
|
||||
}
|
||||
|
||||
override suspend fun setBuildContentPinned(buildContentId: BuildContentId, pinned: Boolean) {
|
||||
val content = BackendMultipleBuildsView.getById(buildContentId) ?: return
|
||||
content.pinned = pinned
|
||||
}
|
||||
|
||||
override suspend fun disposeBuildContent(buildContentId: BuildContentId) {
|
||||
val content = BackendMultipleBuildsView.getById(buildContentId) ?: return
|
||||
withContext(Dispatchers.EDT) {
|
||||
Disposer.dispose(content)
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun notifyTooWindowActivated(buildId: BuildId) {
|
||||
val callback = BackendMultipleBuildsView.getToolWindowActivationCallback(buildId) ?: return
|
||||
withContext(Dispatchers.EDT) {
|
||||
callback.run()
|
||||
BuildViewApiImpl
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,11 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.platform.buildView
|
||||
|
||||
import com.intellij.build.BuildViewEvent
|
||||
import com.intellij.build.BuildContentId
|
||||
import com.intellij.build.BuildId
|
||||
import com.intellij.build.BuildViewEvent
|
||||
import com.intellij.frontend.FrontendApplicationInfo
|
||||
import com.intellij.frontend.FrontendType
|
||||
import com.intellij.platform.project.ProjectId
|
||||
import com.intellij.platform.rpc.RemoteApiProviderService
|
||||
import fleet.rpc.RemoteApi
|
||||
@@ -45,7 +47,8 @@ interface BuildViewApi : RemoteApi<Unit> {
|
||||
|
||||
companion object {
|
||||
suspend fun getInstance(): BuildViewApi {
|
||||
return RemoteApiProviderService.resolve(remoteApiDescriptor<BuildViewApi>())
|
||||
val isCWM = (FrontendApplicationInfo.getFrontendType() as? FrontendType.Remote)?.isGuest() == true
|
||||
return if (isCWM) BuildViewApiImpl else RemoteApiProviderService.resolve(remoteApiDescriptor<BuildViewApi>())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
// Copyright 2000-2026 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.platform.buildView
|
||||
|
||||
import com.intellij.build.*
|
||||
import com.intellij.openapi.application.EDT
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.platform.project.ProjectId
|
||||
import com.intellij.platform.project.findProject
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
|
||||
@ApiStatus.Internal
|
||||
object BuildViewApiImpl : BuildViewApi {
|
||||
override suspend fun getBuildViewEventsFlow(projectId: ProjectId): Flow<BuildViewEvent> {
|
||||
return BuildViewViewModel.getInstance(projectId.findProject()).getFlowWithHistory()
|
||||
}
|
||||
|
||||
override suspend fun setBuildContentPinned(buildContentId: BuildContentId, pinned: Boolean) {
|
||||
val content = BackendMultipleBuildsView.getById(buildContentId) ?: return
|
||||
content.pinned = pinned
|
||||
}
|
||||
|
||||
override suspend fun disposeBuildContent(buildContentId: BuildContentId) {
|
||||
val content = BackendMultipleBuildsView.getById(buildContentId) ?: return
|
||||
withContext(Dispatchers.EDT) {
|
||||
Disposer.dispose(content)
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun notifyTooWindowActivated(buildId: BuildId) {
|
||||
val callback = BackendMultipleBuildsView.getToolWindowActivationCallback(buildId) ?: return
|
||||
withContext(Dispatchers.EDT) {
|
||||
callback.run()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user