mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
editor: introduce API for StructureViewBuilder creation without FileEditor
Follow-up: 4bff20b5ba
GitOrigin-RevId: c589ce26e73426af36bd27051008d931845a6cf0
This commit is contained in:
committed by
intellij-monorepo-bot
parent
b3fcc71f0c
commit
ff2fb768ed
+17
@@ -0,0 +1,17 @@
|
||||
// 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.ide.structureView.StructureViewBuilder;
|
||||
import com.intellij.openapi.fileEditor.FileEditor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* If {@link FileEditor} implements this interface it be used instead of
|
||||
* creating a temp FileEditor just to call {@link FileEditor#getStructureViewBuilder()}.
|
||||
*/
|
||||
public interface StructureViewFileEditorProvider {
|
||||
@Nullable StructureViewBuilder getStructureViewBuilder(@NotNull Project project, @NotNull VirtualFile file);
|
||||
}
|
||||
@@ -121,6 +121,9 @@ public interface FileEditor extends UserDataHolder, Disposable {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see com.intellij.openapi.fileEditor.impl.text.StructureViewFileEditorProvider
|
||||
*/
|
||||
default @Nullable StructureViewBuilder getStructureViewBuilder() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -20,9 +20,9 @@ import com.intellij.openapi.fileEditor.FileEditor;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.fileEditor.FileEditorProvider;
|
||||
import com.intellij.openapi.fileEditor.ex.FileEditorProviderManager;
|
||||
import com.intellij.openapi.fileEditor.ex.StructureViewFileEditorProvider;
|
||||
import com.intellij.openapi.fileEditor.impl.EditorWindow;
|
||||
import com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl;
|
||||
import com.intellij.openapi.fileEditor.impl.text.TextEditorProvider;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleType;
|
||||
import com.intellij.openapi.module.ModuleUtilCore;
|
||||
@@ -470,8 +470,8 @@ public final class StructureViewWrapperImpl implements StructureViewWrapper, Dis
|
||||
List<FileEditorProvider> providers = FileEditorProviderManager.getInstance().getProviderList(myProject, file);
|
||||
FileEditorProvider provider = providers.size() == 0 ? null : providers.get(0);
|
||||
if (provider == null) return null;
|
||||
if (provider instanceof TextEditorProvider) {
|
||||
return StructureViewBuilder.PROVIDER.getStructureViewBuilder(file.getFileType(), file, myProject);
|
||||
if (provider instanceof StructureViewFileEditorProvider) {
|
||||
return ((StructureViewFileEditorProvider)provider).getStructureViewBuilder(myProject, file);
|
||||
}
|
||||
|
||||
FileEditor editor = provider.createEditor(myProject, file);
|
||||
|
||||
+12
-3
@@ -8,6 +8,7 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.*;
|
||||
import com.intellij.openapi.editor.ex.util.EditorUtil;
|
||||
import com.intellij.openapi.fileEditor.*;
|
||||
import com.intellij.openapi.fileEditor.ex.StructureViewFileEditorProvider;
|
||||
import com.intellij.openapi.fileEditor.impl.DefaultPlatformFileEditorProvider;
|
||||
import com.intellij.openapi.fileTypes.BinaryFileTypeDecompilers;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
@@ -35,8 +36,11 @@ import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
public class TextEditorProvider
|
||||
implements DefaultPlatformFileEditorProvider, TextBasedFileEditorProvider, QuickDefinitionProvider, DumbAware {
|
||||
public class TextEditorProvider implements DefaultPlatformFileEditorProvider,
|
||||
TextBasedFileEditorProvider,
|
||||
StructureViewFileEditorProvider,
|
||||
QuickDefinitionProvider,
|
||||
DumbAware {
|
||||
protected static final Logger LOG = Logger.getInstance(TextEditorProvider.class);
|
||||
|
||||
private static final Key<TextEditor> TEXT_EDITOR_KEY = Key.create("textEditor");
|
||||
@@ -277,6 +281,11 @@ public class TextEditorProvider
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable StructureViewBuilder getStructureViewBuilder(@NotNull Project project, @NotNull VirtualFile file) {
|
||||
return StructureViewBuilder.PROVIDER.getStructureViewBuilder(file.getFileType(), file, project);
|
||||
}
|
||||
|
||||
protected class EditorWrapper extends UserDataHolderBase implements TextEditor {
|
||||
private final Editor myEditor;
|
||||
|
||||
@@ -312,7 +321,7 @@ public class TextEditorProvider
|
||||
|
||||
final Project project = myEditor.getProject();
|
||||
if (project == null) return null;
|
||||
return StructureViewBuilder.PROVIDER.getStructureViewBuilder(file.getFileType(), file, project);
|
||||
return TextEditorProvider.this.getStructureViewBuilder(project, file);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user