[rd debugger] Use ColorId to serialize Color

IJPL-176964

GitOrigin-RevId: 90c6d849213d2a86c6ea59ed489d59d746850c9f
This commit is contained in:
Maria Sokolova
2025-10-23 11:02:50 +00:00
committed by intellij-monorepo-bot
parent 8e0590d2b6
commit 510344a7de
5 changed files with 15 additions and 11 deletions
@@ -1,6 +1,7 @@
// 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.debugger.impl.backend
import com.intellij.ide.ui.colors.color
import com.intellij.platform.debugger.impl.rpc.XDebuggerValueMarkupApi
import com.intellij.platform.debugger.impl.rpc.XValueMarkerDto
import com.intellij.ui.JBColor
@@ -20,7 +21,7 @@ internal class BackendXDebuggerValueMarkupApi : XDebuggerValueMarkupApi {
val session = xValueModel.session
val markers = session.getValueMarkers() ?: return
val markup = ValueMarkup(markerDto.text, markerDto.color ?: JBColor.RED, markerDto.tooltipText)
val markup = ValueMarkup(markerDto.text, markerDto.colorId?.color() ?: JBColor.RED, markerDto.tooltipText)
markers.markValue(xValueModel.xValue, markup).await()
updateMarkersForAllXValueModels(markers, session)
}
@@ -1,13 +1,14 @@
// 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.debugger.impl.frontend
import com.intellij.ide.ui.colors.color
import com.intellij.ide.ui.colors.rpcId
import com.intellij.openapi.components.Service
import com.intellij.openapi.components.service
import com.intellij.openapi.project.Project
import com.intellij.platform.debugger.impl.frontend.evaluate.quick.FrontendXValue
import com.intellij.platform.debugger.impl.rpc.XDebuggerValueMarkupApi
import com.intellij.platform.debugger.impl.rpc.XValueMarkerDto
import com.intellij.ui.JBColor
import com.intellij.xdebugger.frame.XValue
import com.intellij.xdebugger.impl.frame.XDebugManagerProxy
import com.intellij.xdebugger.impl.frame.XDebugSessionProxy
@@ -23,8 +24,7 @@ import org.jetbrains.concurrency.asPromise
internal class FrontendXValueMarkers<V : XValue, M>(private val project: Project) : XValueMarkers<V, M>() {
override fun getMarkup(value: XValue): ValueMarkup? {
val markerDto = FrontendXValue.asFrontendXValueOrNull(value)?.markerDto ?: return null
// TODO[IJPL-160146]: Implement implement Color serialization
return ValueMarkup(markerDto.text, markerDto.color ?: JBColor.RED, markerDto.tooltipText)
return ValueMarkup(markerDto.text, markerDto.colorId?.color(), markerDto.tooltipText)
}
override fun canMarkValue(value: XValue): Boolean {
@@ -54,7 +54,7 @@ internal class FrontendXValueMarkers<V : XValue, M>(private val project: Project
private class FrontendXValueMarkersService(project: Project, private val cs: CoroutineScope) {
fun markValue(value: XValue, markup: ValueMarkup): Promise<Any> {
val valueMarked = cs.async {
val marker = XValueMarkerDto(markup.text, markup.color, markup.toolTipText)
val marker = XValueMarkerDto(markup.text, markup.color.rpcId(), markup.toolTipText)
XDebuggerValueMarkupApi.getInstance().markValue(FrontendXValue.asFrontendXValue(value).xValueDto.id, marker)
marker as Any
}
@@ -1,10 +1,10 @@
// 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.debugger.impl.rpc
import com.intellij.ide.ui.colors.ColorId
import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient
import java.awt.Color
import org.jetbrains.annotations.ApiStatus
// TODO[IJPL-160146]: Implement implement Color serialization
@ApiStatus.Internal
@Serializable
data class XValueMarkerDto(val text: String, @Transient val color: Color? = null, val tooltipText: String?)
data class XValueMarkerDto(val text: String, val colorId: ColorId?, val tooltipText: String?)
@@ -1,6 +1,7 @@
// 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.xdebugger.impl.actions.handlers
import com.intellij.ide.ui.colors.rpcId
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.actionSystem.PlatformCoreDataKeys
import com.intellij.openapi.application.EDT
@@ -97,7 +98,7 @@ private suspend fun performMarkObject(
return false
}
XDebugManagerProxy.getInstance().withId(value, proxy) { xValueId ->
val marker = XValueMarkerDto(markup.text, markup.color, markup.toolTipText)
val marker = XValueMarkerDto(markup.text, markup.color.rpcId(), markup.toolTipText)
XDebuggerValueMarkupApi.getInstance().markValue(xValueId, marker)
}
}
@@ -1,6 +1,7 @@
// 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.xdebugger.impl.rpc.models
import com.intellij.ide.ui.colors.rpcId
import com.intellij.ide.ui.icons.rpcId
import com.intellij.openapi.components.Service
import com.intellij.openapi.components.service
@@ -15,6 +16,7 @@ import com.intellij.platform.kernel.ids.BackendValueIdType
import com.intellij.platform.kernel.ids.deleteValueById
import com.intellij.platform.kernel.ids.findValueById
import com.intellij.platform.kernel.ids.storeValueGlobally
import com.intellij.ui.JBColor
import com.intellij.util.AwaitCancellationAndInvoke
import com.intellij.util.awaitCancellationAndInvoke
import com.intellij.xdebugger.frame.XFullValueEvaluator
@@ -107,7 +109,7 @@ class BackendXValueModel internal constructor(
_marker.value = null
return
}
_marker.update { XValueMarkerDto(marker.text, marker.color, marker.toolTipText) }
_marker.update { XValueMarkerDto(marker.text, (marker.color ?: JBColor.RED).rpcId(), marker.toolTipText) }
}
@ApiStatus.Internal