mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IJOB-570 Fix 'The editor has been closed' warning in Java Inheritance Hierarchy lesson
GitOrigin-RevId: 298e94227a3fdc626ba81cea4e8517db921f1c09
This commit is contained in:
committed by
intellij-monorepo-bot
parent
6ba16ae992
commit
29bc27c597
+19
-5
@@ -6,7 +6,11 @@ import com.intellij.icons.AllIcons
|
||||
import com.intellij.ide.IdeBundle
|
||||
import com.intellij.java.analysis.JavaAnalysisBundle
|
||||
import com.intellij.java.ift.JavaLessonsBundle
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.editor.impl.EditorComponentImpl
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.openapi.wm.impl.content.BaseLabel
|
||||
import com.intellij.ui.InplaceButton
|
||||
import com.intellij.ui.UIBundle
|
||||
@@ -18,6 +22,12 @@ class JavaInheritanceHierarchyLesson
|
||||
: KLesson("java.inheritance.hierarchy.lesson", JavaLessonsBundle.message("java.inheritance.hierarchy.lesson.name")) {
|
||||
override val sampleFilePath: String = "src/InheritanceHierarchySample.java"
|
||||
|
||||
private val TaskRuntimeContext.editorOrNull: Editor?
|
||||
get() = FileEditorManager.getInstance(project).selectedTextEditor
|
||||
|
||||
private val TaskRuntimeContext.virtualFileOrNull: VirtualFile?
|
||||
get() = editorOrNull?.document?.let { FileDocumentManager.getInstance().getFile(it) }
|
||||
|
||||
override val lessonContent: LessonContext.() -> Unit = {
|
||||
sdkConfigurationTasks()
|
||||
|
||||
@@ -32,7 +42,9 @@ class JavaInheritanceHierarchyLesson
|
||||
text(JavaLessonsBundle.message("java.inheritance.hierarchy.choose.any.implementation", LessonUtil.rawEnter()))
|
||||
|
||||
stateCheck {
|
||||
(virtualFile.name == "DerivedClass1.java" || virtualFile.name == "DerivedClass2.java") && atDeclarationPosition()
|
||||
val editor = editorOrNull ?: return@stateCheck false
|
||||
val file = virtualFileOrNull ?: return@stateCheck false
|
||||
(file.name == "DerivedClass1.java" || file.name == "DerivedClass2.java") && editor.atDeclarationPosition()
|
||||
}
|
||||
|
||||
restoreState(delayMillis = defaultRestoreDelay) {
|
||||
@@ -48,7 +60,9 @@ class JavaInheritanceHierarchyLesson
|
||||
task("GotoSuperMethod") {
|
||||
text(JavaLessonsBundle.message("java.inheritance.hierarchy.navigate.to.base", action(it), icon(AllIcons.Gutter.ImplementingMethod)))
|
||||
stateCheck {
|
||||
virtualFile.name == "SomeInterface.java" && atDeclarationPosition()
|
||||
val editor = editorOrNull ?: return@stateCheck false
|
||||
val file = virtualFileOrNull ?: return@stateCheck false
|
||||
file.name == "SomeInterface.java" && editor.atDeclarationPosition()
|
||||
}
|
||||
restoreIfModifiedOrMoved()
|
||||
|
||||
@@ -122,9 +136,9 @@ class JavaInheritanceHierarchyLesson
|
||||
strong("hierarchy")))
|
||||
}
|
||||
|
||||
private fun TaskRuntimeContext.atDeclarationPosition(): Boolean {
|
||||
return editor.document.charsSequence.let {
|
||||
it.subSequence(editor.caretModel.currentCaret.offset, it.length).startsWith("foo(FileStructureDemo demo)")
|
||||
private fun Editor.atDeclarationPosition(): Boolean {
|
||||
return document.charsSequence.let {
|
||||
it.subSequence(caretModel.currentCaret.offset, it.length).startsWith("foo(FileStructureDemo demo)")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user