mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Pull up getComposite() to FileEditorManager ex api
GitOrigin-RevId: baf908d430129998250e5a3d0d5c8a978b9c0994
This commit is contained in:
committed by
intellij-monorepo-bot
parent
453952ddd7
commit
2e5bde39e9
+18
-11
@@ -17,6 +17,7 @@ import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.editor.EditorFactory
|
||||
import com.intellij.openapi.editor.ex.EditorEx
|
||||
import com.intellij.openapi.fileEditor.*
|
||||
import com.intellij.openapi.fileEditor.ex.EditorCompositeBase
|
||||
import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx
|
||||
import com.intellij.openapi.fileEditor.ex.FileEditorWithProvider
|
||||
import com.intellij.openapi.fileEditor.impl.text.TextEditorImpl
|
||||
@@ -474,20 +475,17 @@ internal class TestEditorManagerImpl(private val project: Project) : FileEditorM
|
||||
override fun getPreferredFocusedComponent(): JComponent = throw UnsupportedOperationException()
|
||||
|
||||
override fun getEditorsWithProviders(file: VirtualFile): Pair<Array<FileEditor>, Array<FileEditorProvider>> {
|
||||
return EditorComposite.retrofit(getComposite(file))
|
||||
}
|
||||
|
||||
override fun getComposite(file: VirtualFile): EditorCompositeBase? {
|
||||
if (!isCurrentlyUnderLocalId) {
|
||||
val clientManager = clientFileEditorManager
|
||||
?: return Pair(FileEditor.EMPTY_ARRAY, FileEditorProvider.EMPTY_ARRAY)
|
||||
return EditorComposite.retrofit(clientManager.getComposite(file))
|
||||
return clientFileEditorManager?.getComposite(file)
|
||||
}
|
||||
|
||||
val editorAndProvider = testEditorSplitter.getEditorAndProvider(file)
|
||||
var fileEditor = FileEditor.EMPTY_ARRAY
|
||||
var fileEditorProvider = FileEditorProvider.EMPTY_ARRAY
|
||||
if (editorAndProvider != null) {
|
||||
fileEditor = arrayOf(editorAndProvider.first)
|
||||
fileEditorProvider = arrayOf(editorAndProvider.second)
|
||||
return testEditorSplitter.getEditorAndProvider(file)?.let {
|
||||
TestEditorComposite(it.first, it.second)
|
||||
}
|
||||
return Pair(fileEditor, fileEditorProvider)
|
||||
}
|
||||
|
||||
override fun getWindowSplitCount() = 0
|
||||
@@ -512,4 +510,13 @@ internal class TestEditorManagerImpl(private val project: Project) : FileEditorM
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data class TestEditorComposite(val editor: FileEditor, val provider: FileEditorProvider) : EditorCompositeBase() {
|
||||
override val allEditors: List<FileEditor>
|
||||
get() = listOf(editor)
|
||||
override val allProviders: List<FileEditorProvider>
|
||||
get() = listOf(provider)
|
||||
override val isPreview: Boolean
|
||||
get() = false
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.openapi.fileEditor.ex
|
||||
|
||||
import com.intellij.openapi.fileEditor.FileEditor
|
||||
import com.intellij.openapi.fileEditor.FileEditorProvider
|
||||
import com.intellij.openapi.util.UserDataHolderBase
|
||||
|
||||
abstract class EditorCompositeBase : UserDataHolderBase() {
|
||||
abstract val allEditors: List<FileEditor>
|
||||
abstract val allProviders: List<FileEditorProvider>
|
||||
abstract val isPreview: Boolean
|
||||
}
|
||||
@@ -49,6 +49,8 @@ public abstract class FileEditorManagerEx extends FileEditorManager implements B
|
||||
|
||||
public abstract @NotNull Pair<FileEditor[], FileEditorProvider[]> getEditorsWithProviders(@NotNull VirtualFile file);
|
||||
|
||||
public abstract @Nullable EditorCompositeBase getComposite(@NotNull VirtualFile file);
|
||||
|
||||
/** @deprecated use {@link FileEditor#getFile()} instead */
|
||||
@Deprecated(forRemoval = true)
|
||||
public abstract @Nullable VirtualFile getFile(@NotNull FileEditor editor);
|
||||
|
||||
+5
-6
@@ -16,10 +16,7 @@ import com.intellij.openapi.editor.colors.EditorColors;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsManager;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsScheme;
|
||||
import com.intellij.openapi.fileEditor.*;
|
||||
import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx;
|
||||
import com.intellij.openapi.fileEditor.ex.FileEditorProviderManager;
|
||||
import com.intellij.openapi.fileEditor.ex.FileEditorWithProvider;
|
||||
import com.intellij.openapi.fileEditor.ex.IdeDocumentHistory;
|
||||
import com.intellij.openapi.fileEditor.ex.*;
|
||||
import com.intellij.openapi.project.DumbService;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.*;
|
||||
@@ -57,7 +54,7 @@ import java.util.function.Supplier;
|
||||
* It's a composite what can be pinned in the tabs list or opened as a preview, not concrete file editors.
|
||||
* It also manages the internal UI structure: bottom and top components, panels, labels, actions for navigating between editors it owns.
|
||||
*/
|
||||
public class EditorComposite extends UserDataHolderBase implements Disposable {
|
||||
public class EditorComposite extends EditorCompositeBase implements Disposable {
|
||||
private static final Logger LOG = Logger.getInstance(EditorComposite.class);
|
||||
|
||||
/**
|
||||
@@ -236,6 +233,7 @@ public class EditorComposite extends UserDataHolderBase implements Disposable {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPreview() {
|
||||
return myPreview;
|
||||
}
|
||||
@@ -313,6 +311,7 @@ public class EditorComposite extends UserDataHolderBase implements Disposable {
|
||||
return getAllEditors().toArray(FileEditor.EMPTY_ARRAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull List<@NotNull FileEditor> getAllEditors() {
|
||||
return ContainerUtil.map(getAllEditorsWithProviders(), it -> it.getFileEditor());
|
||||
}
|
||||
@@ -667,7 +666,7 @@ public class EditorComposite extends UserDataHolderBase implements Disposable {
|
||||
/**
|
||||
* A mapper for old API with arrays and pairs
|
||||
*/
|
||||
public static @NotNull Pair<FileEditor @NotNull [], FileEditorProvider @NotNull []> retrofit(@Nullable EditorComposite composite) {
|
||||
public static @NotNull Pair<FileEditor @NotNull [], FileEditorProvider @NotNull []> retrofit(@Nullable EditorCompositeBase composite) {
|
||||
if (composite == null) return new Pair<>(FileEditor.EMPTY_ARRAY, FileEditorProvider.EMPTY_ARRAY);
|
||||
|
||||
FileEditor[] editors = composite.getAllEditors().toArray(FileEditor.EMPTY_ARRAY);
|
||||
|
||||
+7
-6
@@ -10,6 +10,7 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.extensions.ExtensionPointListener;
|
||||
import com.intellij.openapi.extensions.PluginDescriptor;
|
||||
import com.intellij.openapi.fileEditor.*;
|
||||
import com.intellij.openapi.fileEditor.ex.EditorCompositeBase;
|
||||
import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx;
|
||||
import com.intellij.openapi.fileEditor.ex.FileEditorWithProvider;
|
||||
import com.intellij.openapi.progress.ProcessCanceledException;
|
||||
@@ -102,9 +103,9 @@ public final class EditorHistoryManager implements PersistentStateComponent<Elem
|
||||
|
||||
FileEditorManagerEx editorManager = FileEditorManagerEx.getInstanceEx(myProject);
|
||||
|
||||
Pair<FileEditor[], FileEditorProvider[]> editorsWithProviders = editorManager.getEditorsWithProviders(file);
|
||||
FileEditor[] editors = editorsWithProviders.getFirst();
|
||||
FileEditorProvider[] oldProviders = editorsWithProviders.getSecond();
|
||||
@Nullable EditorCompositeBase editorComposite = editorManager.getComposite(file);
|
||||
FileEditor[] editors = editorComposite == null ? FileEditor.EMPTY_ARRAY : editorComposite.getAllEditors().toArray(FileEditor.EMPTY_ARRAY);
|
||||
FileEditorProvider[] oldProviders = editorComposite == null ? FileEditorProvider.EMPTY_ARRAY : editorComposite.getAllProviders().toArray(FileEditorProvider.EMPTY_ARRAY);
|
||||
LOG.assertTrue(editors.length == oldProviders.length, "Different number of editors and providers");
|
||||
if (editors.length <= 0 && fallbackEditor != null && fallbackProvider != null) {
|
||||
editors = new FileEditor[] { fallbackEditor };
|
||||
@@ -159,9 +160,9 @@ public final class EditorHistoryManager implements PersistentStateComponent<Elem
|
||||
FileEditor[] editors;
|
||||
FileEditorProvider[] providers;
|
||||
if (fileEditor == null || fileEditorProvider == null) {
|
||||
Pair<FileEditor[], FileEditorProvider[]> editorsWithProviders = editorManager.getEditorsWithProviders(file);
|
||||
editors = editorsWithProviders.getFirst();
|
||||
providers = editorsWithProviders.getSecond();
|
||||
EditorCompositeBase composite = editorManager.getComposite(file);
|
||||
editors = composite == null ? FileEditor.EMPTY_ARRAY : composite.getAllEditors().toArray(FileEditor.EMPTY_ARRAY);
|
||||
providers = composite == null ? FileEditorProvider.EMPTY_ARRAY : composite.getAllProviders().toArray(FileEditorProvider.EMPTY_ARRAY);
|
||||
}
|
||||
else {
|
||||
editors = new FileEditor[] {fileEditor};
|
||||
|
||||
+1
@@ -1595,6 +1595,7 @@ public abstract class FileEditorManagerImpl extends FileEditorManagerEx implemen
|
||||
return result.toArray(FileEditor.EMPTY_ARRAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable EditorComposite getComposite(@NotNull VirtualFile file) {
|
||||
ApplicationManager.getApplication().assertIsDispatchThread();
|
||||
if (!ClientId.isCurrentlyUnderLocalId()) {
|
||||
|
||||
@@ -181,6 +181,11 @@ public class Mock {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable EditorComposite getComposite(@NotNull VirtualFile file) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
public FileEditorProvider getProvider(FileEditor editor) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user