mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-05 01:50:56 +07:00
IJPL-796 refactor TextEditorWithPreview (part 2)
GitOrigin-RevId: 6accb42e148d3ea40a01c13af9d0bce54f3faadc
This commit is contained in:
committed by
intellij-monorepo-bot
parent
2c8d3eb46d
commit
faafc33646
@@ -218,7 +218,7 @@ abstract class AbstractScratchRunActionTest : FileEditorManagerTestCase(),
|
||||
val scratchFileEditor = getScratchEditorForSelectedFile(manager!!, myFixture.file.virtualFile)
|
||||
?: error("Couldn't find scratch panel")
|
||||
|
||||
val previewEditor = scratchFileEditor.getPreviewEditor() as TextEditor
|
||||
val previewEditor = scratchFileEditor.previewEditor as TextEditor
|
||||
return getFoldingData(previewEditor.editor, withCollapseStatus = false)
|
||||
}
|
||||
|
||||
|
||||
@@ -16,9 +16,9 @@ internal object MarkdownFileEditorUtils {
|
||||
@JvmStatic
|
||||
fun findMarkdownPreviewEditor(editor: FileEditor): MarkdownPreviewFileEditor? {
|
||||
return when (editor) {
|
||||
is MarkdownEditorWithPreview -> editor.getPreviewEditor() as? MarkdownPreviewFileEditor
|
||||
is MarkdownEditorWithPreview -> editor.previewEditor as? MarkdownPreviewFileEditor
|
||||
is MarkdownPreviewFileEditor -> editor
|
||||
else -> TextEditorWithPreview.getParentSplitEditor(editor)?.getPreviewEditor() as? MarkdownPreviewFileEditor
|
||||
else -> TextEditorWithPreview.getParentSplitEditor(editor)?.previewEditor as? MarkdownPreviewFileEditor
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ object MarkdownActionUtil {
|
||||
@JvmStatic
|
||||
fun findMarkdownPreviewEditor(event: AnActionEvent): MarkdownPreviewFileEditor? {
|
||||
val splitEditor = findSplitEditor(event) ?: return null
|
||||
val editor = splitEditor.getPreviewEditor()
|
||||
val editor = splitEditor.previewEditor
|
||||
return when {
|
||||
editor !is MarkdownPreviewFileEditor || !editor.getComponent().isVisible -> null
|
||||
else -> editor
|
||||
|
||||
@@ -9,7 +9,7 @@ import com.intellij.openapi.editor.ex.util.EditorUtil;
|
||||
import com.intellij.openapi.editor.impl.EditorImpl;
|
||||
import com.intellij.openapi.fileEditor.TextEditor;
|
||||
import com.intellij.openapi.fileEditor.TextEditorWithPreview;
|
||||
import com.intellij.openapi.project.ProjectUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.intellij.plugins.markdown.MarkdownBundle;
|
||||
import org.intellij.plugins.markdown.settings.MarkdownSettings;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -20,13 +20,13 @@ import org.jetbrains.annotations.NotNull;
|
||||
public final class MarkdownEditorWithPreview extends TextEditorWithPreview {
|
||||
private boolean autoScrollPreview;
|
||||
|
||||
public MarkdownEditorWithPreview(@NotNull TextEditor editor, @NotNull MarkdownPreviewFileEditor preview) {
|
||||
public MarkdownEditorWithPreview(@NotNull TextEditor editor, @NotNull MarkdownPreviewFileEditor preview, @NotNull Project project) {
|
||||
super(
|
||||
editor,
|
||||
preview,
|
||||
MarkdownBundle.message("markdown.editor.name"),
|
||||
Layout.SHOW_EDITOR_AND_PREVIEW,
|
||||
!MarkdownSettings.getInstance(ProjectUtil.currentOrDefaultProject(editor.getEditor().getProject())).isVerticalSplit()
|
||||
!MarkdownSettings.getInstance(project).isVerticalSplit()
|
||||
);
|
||||
|
||||
// allow launching actions while in preview mode;
|
||||
@@ -34,28 +34,26 @@ public final class MarkdownEditorWithPreview extends TextEditorWithPreview {
|
||||
editor.getEditor().getContentComponent().putClientProperty(ActionUtil.ALLOW_ACTION_PERFORM_WHEN_HIDDEN, true);
|
||||
preview.setMainEditor(editor.getEditor());
|
||||
|
||||
final var project = ProjectUtil.currentOrDefaultProject(editor.getEditor().getProject());
|
||||
final var settings = MarkdownSettings.getInstance(project);
|
||||
MarkdownSettings settings = MarkdownSettings.getInstance(project);
|
||||
autoScrollPreview = settings.isAutoScrollEnabled();
|
||||
|
||||
final var settingsChangedListener = new MarkdownSettings.ChangeListener() {
|
||||
project.getMessageBus().connect(this).subscribe(MarkdownSettings.ChangeListener.TOPIC, new MarkdownSettings.ChangeListener() {
|
||||
private boolean wasVerticalSplitBefore = settings.isVerticalSplit();
|
||||
|
||||
@Override
|
||||
public void beforeSettingsChanged(@NotNull MarkdownSettings settings) {
|
||||
wasVerticalSplitBefore = settings.isVerticalSplit();
|
||||
public void beforeSettingsChanged(@NotNull MarkdownSettings settings1) {
|
||||
wasVerticalSplitBefore = settings1.isVerticalSplit();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void settingsChanged(@NotNull MarkdownSettings settings) {
|
||||
setAutoScrollPreview(settings.isAutoScrollEnabled());
|
||||
if (wasVerticalSplitBefore != settings.isVerticalSplit()) {
|
||||
handleLayoutChange(!settings.isVerticalSplit());
|
||||
public void settingsChanged(@NotNull MarkdownSettings settings1) {
|
||||
setAutoScrollPreview(settings1.isAutoScrollEnabled());
|
||||
if (wasVerticalSplitBefore != settings1.isVerticalSplit()) {
|
||||
handleLayoutChange(!settings1.isVerticalSplit());
|
||||
}
|
||||
}
|
||||
};
|
||||
project.getMessageBus().connect(this).subscribe(MarkdownSettings.ChangeListener.TOPIC, settingsChangedListener);
|
||||
getTextEditor().getEditor().getScrollingModel().addVisibleAreaListener(new MyVisibleAreaListener(), this);
|
||||
});
|
||||
editor.getEditor().getScrollingModel().addVisibleAreaListener(new MyVisibleAreaListener(), this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -85,11 +83,6 @@ public final class MarkdownEditorWithPreview extends TextEditorWithPreview {
|
||||
this.autoScrollPreview = autoScrollPreview;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLayout(@NotNull Layout layout) {
|
||||
super.setLayout(layout);
|
||||
}
|
||||
|
||||
private final class MyVisibleAreaListener implements VisibleAreaListener {
|
||||
private int previousLine = 0;
|
||||
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.intellij.plugins.markdown.ui.preview
|
||||
|
||||
import com.intellij.openapi.fileEditor.FileEditor
|
||||
import com.intellij.openapi.fileEditor.TextEditor
|
||||
import com.intellij.openapi.fileEditor.TextEditorWithPreviewProvider
|
||||
import com.intellij.openapi.project.currentOrDefaultProject
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
|
||||
@ApiStatus.Internal
|
||||
class MarkdownSplitEditorProvider : TextEditorWithPreviewProvider(MarkdownPreviewFileEditorProvider()) {
|
||||
override fun createSplitEditor(firstEditor: TextEditor, secondEditor: FileEditor): FileEditor {
|
||||
require(secondEditor is MarkdownPreviewFileEditor) { "Secondary editor should be MarkdownPreviewFileEditor" }
|
||||
return MarkdownEditorWithPreview(firstEditor, secondEditor)
|
||||
return MarkdownEditorWithPreview(firstEditor, secondEditor, currentOrDefaultProject(firstEditor.getEditor().getProject()))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,14 +37,15 @@ private val FileEditor.description: String
|
||||
get() = "${hashCode()} ${javaClass} ${toString()}"
|
||||
|
||||
// See DaemonFusReporter. Reality in DaemonCodeAnalyzerImpl is a bit more complicated, probably including other editors if the file has Psi
|
||||
private fun Collection<FileEditor>.getWorthy(): List<TextEditor> =
|
||||
mapNotNull {
|
||||
private fun Collection<FileEditor>.getWorthy(): List<TextEditor> {
|
||||
return mapNotNull {
|
||||
if (it !is TextEditor || it.editor.editorKind != EditorKind.MAIN_EDITOR) null
|
||||
else if (it is TextEditorWithPreview) it.getTextEditor()
|
||||
else if (it is TextEditorWithPreview) it.textEditor
|
||||
else it
|
||||
}
|
||||
}
|
||||
|
||||
class WaitForFinishedCodeAnalysis(text: String, line: Int) : PerformanceCommandCoroutineAdapter(text, line) {
|
||||
internal class WaitForFinishedCodeAnalysis(text: String, line: Int) : PerformanceCommandCoroutineAdapter(text, line) {
|
||||
companion object {
|
||||
const val PREFIX = CMD_PREFIX + "waitForFinishedCodeAnalysis"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user