From b83a6715bab43e31991e86be86ea2aee20d2255f Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Fri, 24 May 2024 14:19:48 +0200 Subject: [PATCH] diff: use DiffEditorTabFilesManager over VcsEditorTabFilesManager GitOrigin-RevId: af2bc69b324aacf8f2ca7393275f1cf8d58d74a4 --- .../com/intellij/diff/editor/DiffEditorTabFilesManager.kt | 7 +++++++ .../src/com/intellij/platform/lvcs/impl/ui/ActivityView.kt | 4 ++-- .../src/training/git/lesson/GitAnnotateLesson.kt | 4 ++-- .../src/training/git/lesson/GitProjectHistoryLesson.kt | 4 ++-- .../file/GitLabMergeRequestsFilesController.kt | 4 ++-- 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/platform/diff-impl/src/com/intellij/diff/editor/DiffEditorTabFilesManager.kt b/platform/diff-impl/src/com/intellij/diff/editor/DiffEditorTabFilesManager.kt index b4ab0b7f2d5b..33952b62cee8 100644 --- a/platform/diff-impl/src/com/intellij/diff/editor/DiffEditorTabFilesManager.kt +++ b/platform/diff-impl/src/com/intellij/diff/editor/DiffEditorTabFilesManager.kt @@ -16,11 +16,18 @@ interface DiffEditorTabFilesManager { companion object { private const val SHOW_DIFF_IN_EDITOR_SETTING = "show.diff.as.editor.tab" + /** + * If enabled - the [DiffViewerVirtualFile] will open like a normal editor in current split. + * If disabled - it will use [com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl.OpenMode.NEW_WINDOW]. + */ @JvmStatic var isDiffInEditor: Boolean get() = AdvancedSettings.getBoolean(SHOW_DIFF_IN_EDITOR_SETTING) set(value) = AdvancedSettings.setBoolean(SHOW_DIFF_IN_EDITOR_SETTING, value) + @JvmStatic + val isDiffInWindow: Boolean get() = !isDiffInEditor + @JvmStatic fun isDiffOpenedInNewWindow(file: VirtualFile): Boolean = DIFF_OPENED_IN_NEW_WINDOW.get(file, false) diff --git a/platform/lvcs-impl/src/com/intellij/platform/lvcs/impl/ui/ActivityView.kt b/platform/lvcs-impl/src/com/intellij/platform/lvcs/impl/ui/ActivityView.kt index 727a696f62f3..a1090dbae1ed 100644 --- a/platform/lvcs-impl/src/com/intellij/platform/lvcs/impl/ui/ActivityView.kt +++ b/platform/lvcs-impl/src/com/intellij/platform/lvcs/impl/ui/ActivityView.kt @@ -1,6 +1,7 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.platform.lvcs.impl.ui +import com.intellij.diff.editor.DiffEditorTabFilesManager import com.intellij.diff.impl.DiffEditorViewer import com.intellij.diff.impl.DiffRequestProcessor import com.intellij.diff.impl.DiffRequestProcessorListener @@ -23,7 +24,6 @@ import com.intellij.openapi.util.NlsContexts import com.intellij.openapi.util.registry.Registry import com.intellij.openapi.vcs.changes.EditorTabDiffPreview import com.intellij.openapi.vcs.changes.EditorTabDiffPreviewManager -import com.intellij.openapi.vcs.changes.VcsEditorTabFilesManager import com.intellij.openapi.vcs.changes.ui.TreeHandlerEditorDiffPreview import com.intellij.openapi.wm.IdeFocusManager import com.intellij.platform.lvcs.impl.* @@ -322,7 +322,7 @@ class ActivityView(private val project: Project, gateway: IdeaGateway, val activ } val activityView = ActivityView(project, gateway, activityScope) - if (Registry.`is`("lvcs.open.diff.automatically") && !VcsEditorTabFilesManager.getInstance().shouldOpenInNewWindow) { + if (Registry.`is`("lvcs.open.diff.automatically") && DiffEditorTabFilesManager.isDiffInEditor) { activityView.openDiffWhenLoaded() } diff --git a/plugins/git-features-trainer/src/training/git/lesson/GitAnnotateLesson.kt b/plugins/git-features-trainer/src/training/git/lesson/GitAnnotateLesson.kt index a3994705c3df..5a1d3efe4ff8 100644 --- a/plugins/git-features-trainer/src/training/git/lesson/GitAnnotateLesson.kt +++ b/plugins/git-features-trainer/src/training/git/lesson/GitAnnotateLesson.kt @@ -1,6 +1,7 @@ // Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package training.git.lesson +import com.intellij.diff.editor.DiffEditorTabFilesManager import com.intellij.diff.impl.DiffWindowBase import com.intellij.diff.tools.util.DiffSplitter import com.intellij.ide.IdeBundle @@ -17,7 +18,6 @@ import com.intellij.openapi.ui.popup.Balloon import com.intellij.openapi.vcs.actions.ActiveAnnotationGutter import com.intellij.openapi.vcs.actions.AnnotateToggleAction import com.intellij.openapi.vcs.actions.ShowDiffFromAnnotation -import com.intellij.openapi.vcs.changes.VcsEditorTabFilesManager import com.intellij.openapi.vcs.changes.ui.ChangeListViewerDialog import com.intellij.openapi.wm.impl.IdeFrameImpl import com.intellij.util.ui.HtmlPanel @@ -247,7 +247,7 @@ class GitAnnotateLesson : GitLesson("Git.Annotate", GitLessonsBundle.message("gi task("EditorEscape") { text(GitLessonsBundle.message("git.annotate.close.all.windows", - if (VcsEditorTabFilesManager.getInstance().shouldOpenInNewWindow) 0 else 1, action(it))) + if (DiffEditorTabFilesManager.isDiffInWindow) 0 else 1, action(it))) stateCheck { firstDiffSplitter?.isShowing != true && secondDiffSplitter?.isShowing != true } diff --git a/plugins/git-features-trainer/src/training/git/lesson/GitProjectHistoryLesson.kt b/plugins/git-features-trainer/src/training/git/lesson/GitProjectHistoryLesson.kt index eb77e25d5d31..67c7f419e216 100644 --- a/plugins/git-features-trainer/src/training/git/lesson/GitProjectHistoryLesson.kt +++ b/plugins/git-features-trainer/src/training/git/lesson/GitProjectHistoryLesson.kt @@ -1,11 +1,11 @@ // Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package training.git.lesson +import com.intellij.diff.editor.DiffEditorTabFilesManager import com.intellij.diff.tools.util.SimpleDiffPanel import com.intellij.icons.AllIcons import com.intellij.openapi.project.Project import com.intellij.openapi.ui.popup.Balloon -import com.intellij.openapi.vcs.changes.VcsEditorTabFilesManager import com.intellij.openapi.wm.IdeFocusManager import com.intellij.openapi.wm.ToolWindowId import com.intellij.ui.components.SearchFieldWithExtension @@ -205,7 +205,7 @@ class GitProjectHistoryLesson : GitLesson("Git.ProjectHistory", GitLessonsBundle } } - if (VcsEditorTabFilesManager.getInstance().shouldOpenInNewWindow) { + if (DiffEditorTabFilesManager.isDiffInWindow) { task("EditorEscape") { text(GitLessonsBundle.message("git.project.history.close.diff", action(it))) stateCheck { previous.ui?.isShowing != true } diff --git a/plugins/gitlab/src/org/jetbrains/plugins/gitlab/mergerequest/file/GitLabMergeRequestsFilesController.kt b/plugins/gitlab/src/org/jetbrains/plugins/gitlab/mergerequest/file/GitLabMergeRequestsFilesController.kt index 1de2efced3c5..587b692ca9c8 100644 --- a/plugins/gitlab/src/org/jetbrains/plugins/gitlab/mergerequest/file/GitLabMergeRequestsFilesController.kt +++ b/plugins/gitlab/src/org/jetbrains/plugins/gitlab/mergerequest/file/GitLabMergeRequestsFilesController.kt @@ -2,12 +2,12 @@ package org.jetbrains.plugins.gitlab.mergerequest.file import com.intellij.collaboration.util.CodeReviewFilesUtil +import com.intellij.diff.editor.DiffEditorTabFilesManager import com.intellij.openapi.application.EDT import com.intellij.openapi.application.writeAction import com.intellij.openapi.components.serviceAsync import com.intellij.openapi.fileEditor.FileEditorManager import com.intellij.openapi.project.Project -import com.intellij.openapi.vcs.changes.VcsEditorTabFilesManager import com.intellij.util.concurrency.annotations.RequiresEdt import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext @@ -39,7 +39,7 @@ class GitLabMergeRequestsFilesControllerImpl( val fs = GitLabVirtualFileSystem.getInstance() val path = fs.getPath(connection.id, project, connection.repo.repository, mrIid, true) val file = fs.refreshAndFindFileByPath(path) ?: return - VcsEditorTabFilesManager.getInstance().openFile(project, file, focus) + DiffEditorTabFilesManager.getInstance(project).showDiffFile(file, focus) } override suspend fun closeAllFiles() {