mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[gitlab] put comment navigation data to the correct components
Fixed IJPL-249453 GitOrigin-RevId: 635a6c61289a33c60546f4066552ec58ab17dc4f
This commit is contained in:
committed by
intellij-monorepo-bot
parent
ddd7464712
commit
36025263e3
+13
-4
@@ -7,8 +7,10 @@ import com.intellij.collaboration.ui.codereview.CodeReviewChatItemUIUtil
|
||||
import com.intellij.collaboration.ui.codereview.comment.CodeReviewCommentUIUtil
|
||||
import com.intellij.collaboration.ui.codereview.comment.CommentInputActionsComponentFactory
|
||||
import com.intellij.collaboration.ui.codereview.timeline.comment.CommentTextFieldFactory
|
||||
import com.intellij.collaboration.ui.codereview.timeline.thread.CodeReviewTrackableItemViewModel
|
||||
import com.intellij.collaboration.ui.icon.IconsProvider
|
||||
import com.intellij.collaboration.ui.util.swingAction
|
||||
import com.intellij.openapi.actionSystem.UiDataProvider
|
||||
import com.intellij.openapi.options.advanced.AdvancedSettings
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.ui.MessageDialogBuilder.Companion.yesNo
|
||||
@@ -51,7 +53,7 @@ internal object GitLabMergeRequestDiffInlayComponentsFactory {
|
||||
GitLabDiscussionComponentFactory.create(project, cs, avatarIconsProvider, imageLoader, vm, place).apply {
|
||||
border = JBUI.Borders.empty(CodeReviewCommentUIUtil.getInlayPadding(CodeReviewChatItemUIUtil.ComponentType.COMPACT))
|
||||
}.let {
|
||||
wrapInRoundedPanel(it, vm)
|
||||
wrapInRoundedTrackablePanel(it, vm)
|
||||
}
|
||||
|
||||
fun createDraftNote(
|
||||
@@ -66,11 +68,13 @@ internal object GitLabMergeRequestDiffInlayComponentsFactory {
|
||||
imageLoader, vm, place).apply {
|
||||
border = JBUI.Borders.empty(CodeReviewCommentUIUtil.getInlayPadding(CodeReviewChatItemUIUtil.ComponentType.COMPACT))
|
||||
}.let {
|
||||
wrapInRoundedPanel(it, vm)
|
||||
wrapInRoundedTrackablePanel(it, vm)
|
||||
}
|
||||
|
||||
private fun wrapInRoundedPanel(component: JComponent, vm: FocusableViewModel): JComponent =
|
||||
CodeReviewCommentUIUtil.createEditorInlayPanel(component).apply {
|
||||
private fun <T> wrapInRoundedTrackablePanel(component: JComponent, vm: T): JComponent
|
||||
where T : CodeReviewTrackableItemViewModel,
|
||||
T : FocusableViewModel {
|
||||
return CodeReviewCommentUIUtil.createEditorInlayPanel(component).apply {
|
||||
isFocusable = true
|
||||
launchOnShow("focusRequests") {
|
||||
vm.focusRequests.collect { requestFocus(false) }
|
||||
@@ -84,7 +88,12 @@ internal object GitLabMergeRequestDiffInlayComponentsFactory {
|
||||
else {
|
||||
roundedPanel
|
||||
}
|
||||
}.let {
|
||||
UiDataProvider.wrapComponent(it) { sink ->
|
||||
sink[CodeReviewTrackableItemViewModel.TRACKABLE_ITEM_KEY] = vm
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun createNewDiscussion(
|
||||
project: Project,
|
||||
|
||||
+14
-19
@@ -17,7 +17,6 @@ import com.intellij.collaboration.ui.codereview.comment.CodeReviewCommentUIUtil
|
||||
import com.intellij.collaboration.ui.codereview.comment.CommentInputActionsComponentFactory
|
||||
import com.intellij.collaboration.ui.codereview.timeline.comment.CommentTextFieldFactory
|
||||
import com.intellij.collaboration.ui.codereview.timeline.thread.CodeReviewResolvableItemViewModel
|
||||
import com.intellij.collaboration.ui.codereview.timeline.thread.CodeReviewTrackableItemViewModel
|
||||
import com.intellij.collaboration.ui.codereview.timeline.thread.TimelineThreadCommentsPanel
|
||||
import com.intellij.collaboration.ui.icon.IconsProvider
|
||||
import com.intellij.collaboration.ui.util.bindChildIn
|
||||
@@ -25,7 +24,6 @@ import com.intellij.collaboration.ui.util.bindEnabledIn
|
||||
import com.intellij.collaboration.ui.util.bindTextIn
|
||||
import com.intellij.collaboration.ui.util.bindVisibilityIn
|
||||
import com.intellij.collaboration.ui.util.swingAction
|
||||
import com.intellij.openapi.actionSystem.UiDataProvider
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.ui.components.ActionLink
|
||||
import com.intellij.util.ui.JBUI
|
||||
@@ -68,28 +66,25 @@ internal object GitLabDiscussionComponentFactory {
|
||||
}
|
||||
}
|
||||
|
||||
return UiDataProvider.wrapComponent(
|
||||
VerticalListPanel().apply {
|
||||
name = "GitLab Discussion Panel ${vm.id}"
|
||||
add(notesPanel)
|
||||
return VerticalListPanel().apply {
|
||||
name = "GitLab Discussion Panel ${vm.id}"
|
||||
add(notesPanel)
|
||||
|
||||
cs.launchNow {
|
||||
vm.replyVm.collectScoped { replyVm ->
|
||||
if (replyVm == null) return@collectScoped
|
||||
cs.launchNow {
|
||||
vm.replyVm.collectScoped { replyVm ->
|
||||
if (replyVm == null) return@collectScoped
|
||||
|
||||
bindChildIn(this, replyVm.newNoteVm) { newNoteVm ->
|
||||
newNoteVm?.let {
|
||||
createReplyField(ComponentType.COMPACT, project, this, vm, newNoteVm, avatarIconsProvider, place,
|
||||
swingAction("") { replyVm.stopWriting() })
|
||||
} ?: createReplyActionsPanel(vm, replyVm, project, place).apply {
|
||||
border = JBUI.Borders.empty(8, ComponentType.COMPACT.fullLeftShift)
|
||||
}
|
||||
bindChildIn(this, replyVm.newNoteVm) { newNoteVm ->
|
||||
newNoteVm?.let {
|
||||
createReplyField(ComponentType.COMPACT, project, this, vm, newNoteVm, avatarIconsProvider, place,
|
||||
swingAction("") { replyVm.stopWriting() })
|
||||
} ?: createReplyActionsPanel(vm, replyVm, project, place).apply {
|
||||
border = JBUI.Borders.empty(8, ComponentType.COMPACT.fullLeftShift)
|
||||
}
|
||||
}
|
||||
}
|
||||
}, { sink ->
|
||||
sink[CodeReviewTrackableItemViewModel.TRACKABLE_ITEM_KEY] = vm
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun createReplyField(
|
||||
|
||||
+5
-10
@@ -12,13 +12,11 @@ import com.intellij.collaboration.ui.codereview.CodeReviewChatItemUIUtil
|
||||
import com.intellij.collaboration.ui.codereview.CodeReviewChatItemUIUtil.ComponentType
|
||||
import com.intellij.collaboration.ui.codereview.CodeReviewTimelineUIUtil
|
||||
import com.intellij.collaboration.ui.codereview.comment.CodeReviewCommentUIUtil
|
||||
import com.intellij.collaboration.ui.codereview.timeline.thread.CodeReviewTrackableItemViewModel
|
||||
import com.intellij.collaboration.ui.html.AsyncHtmlImageLoader
|
||||
import com.intellij.collaboration.ui.icon.IconsProvider
|
||||
import com.intellij.collaboration.ui.util.bindChildIn
|
||||
import com.intellij.collaboration.ui.util.bindDisabledIn
|
||||
import com.intellij.collaboration.ui.util.bindTextIn
|
||||
import com.intellij.openapi.actionSystem.UiDataProvider
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.util.ui.InlineIconButton
|
||||
import icons.CollaborationToolsIcons
|
||||
@@ -66,14 +64,11 @@ internal object GitLabNoteComponentFactory {
|
||||
}
|
||||
|
||||
val actionsPanel = createActions(cs, flowOf(vm), project, place)
|
||||
return UiDataProvider.wrapComponent(
|
||||
CodeReviewChatItemUIUtil.build(componentType,
|
||||
{ avatarIconsProvider.getIcon(vm.author, it) },
|
||||
contentPanel) {
|
||||
withHeader(createTitle(cs, vm, project, place), actionsPanel)
|
||||
}, { sink ->
|
||||
sink[CodeReviewTrackableItemViewModel.TRACKABLE_ITEM_KEY] = vm
|
||||
})
|
||||
return CodeReviewChatItemUIUtil.build(componentType,
|
||||
{ avatarIconsProvider.getIcon(vm.author, it) },
|
||||
contentPanel) {
|
||||
withHeader(createTitle(cs, vm, project, place), actionsPanel)
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
|
||||
Reference in New Issue
Block a user