mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-05 01:50:56 +07:00
[IFT] Add sdk configuration tasks to lessons
Also specify original sample objects for restores in the first meaningful task of the lesson. It is required for the case when user change the sample during SDK configuration tasks. IJ-CR-23618 GitOrigin-RevId: cbe08c75fc89c43b3fe966e87b3feeb3a0dce9af
This commit is contained in:
committed by
intellij-monorepo-bot
parent
5aa970d397
commit
eb44558322
@@ -46,7 +46,7 @@ class JavaSmartTypeCompletionLesson : KLesson("Smart type completion", LessonsBu
|
||||
val text = editor.document.text
|
||||
text.contains("strings = arrayBlockingQueue;") || text.contains("strings = linkedList;")
|
||||
}
|
||||
restoreIfModifiedOrMoved()
|
||||
restoreIfModifiedOrMoved(sample)
|
||||
testSmartCompletion()
|
||||
}
|
||||
caret(20, 16)
|
||||
|
||||
@@ -37,7 +37,7 @@ class JavaStatementCompletionLesson
|
||||
override val lessonContent: LessonContext.() -> Unit = {
|
||||
prepareSample(sample)
|
||||
actionTask("EditorCompleteStatement") {
|
||||
restoreIfModifiedOrMoved()
|
||||
restoreIfModifiedOrMoved(sample)
|
||||
JavaLessonsBundle.message("java.statement.completion.complete.for", action(it), code("for"))
|
||||
}
|
||||
task("EditorCompleteStatement") {
|
||||
|
||||
@@ -21,6 +21,8 @@ class JavaInheritanceHierarchyLesson
|
||||
override val sampleFilePath: String = "src/InheritanceHierarchySample.java"
|
||||
|
||||
override val lessonContent: LessonContext.() -> Unit = {
|
||||
sdkConfigurationTasks()
|
||||
|
||||
caret("foo(demo)")
|
||||
|
||||
actionTask("GotoImplementation") {
|
||||
|
||||
@@ -62,7 +62,7 @@ class JavaOccurrencesLesson
|
||||
task("Find") {
|
||||
text(JavaLessonsBundle.message("java.find.occurrences.invoke.find", code("cellphone"), action(it)))
|
||||
triggerUI().component { _: SearchTextArea -> true }
|
||||
restoreIfModifiedOrMoved()
|
||||
restoreIfModifiedOrMoved(sample)
|
||||
test { actions(it) }
|
||||
}
|
||||
task("FindNext") {
|
||||
|
||||
@@ -20,7 +20,7 @@ class JavaExtractMethodCocktailSortLesson
|
||||
showWarningIfInplaceRefactoringsDisabled()
|
||||
|
||||
actionTask("ExtractMethod") {
|
||||
restoreIfModifiedOrMoved()
|
||||
restoreIfModifiedOrMoved(javaSortSample)
|
||||
LessonsBundle.message("extract.method.invoke.action", action(it))
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ import training.util.adaptToNotNativeLocalization
|
||||
import javax.swing.JDialog
|
||||
|
||||
class JavaRefactoringMenuLesson : RefactoringMenuLessonBase("java.refactoring.menu") {
|
||||
private val sample = parseLessonSample("""
|
||||
override val sample = parseLessonSample("""
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
@@ -44,8 +44,6 @@ class JavaRefactoringMenuLesson : RefactoringMenuLessonBase("java.refactoring.me
|
||||
""".trimIndent())
|
||||
|
||||
override val lessonContent: LessonContext.() -> Unit = {
|
||||
prepareSample(sample)
|
||||
showWarningIfInplaceRefactoringsDisabled()
|
||||
extractParameterTasks()
|
||||
moreRefactoringsTasks()
|
||||
restoreRefactoringOptionsInformer()
|
||||
|
||||
@@ -21,7 +21,7 @@ abstract class CompletionWithTabLesson(private val proposal: String) :
|
||||
task("CodeCompletion") {
|
||||
text(LessonsBundle.message("completion.with.tab.begin.completion", action(it), code(proposal)))
|
||||
triggerAndBorderHighlight().listItem { item -> item.isToStringContains(proposal) }
|
||||
restoreIfModifiedOrMoved()
|
||||
restoreIfModifiedOrMoved(sample)
|
||||
test { actions(it) }
|
||||
}
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ abstract class ContextActionsLesson : KLesson("context.actions", LessonsBundle.m
|
||||
triggerAndBorderHighlight().listItem { item ->
|
||||
item.isToStringContains(warningQuickFix)
|
||||
}
|
||||
restoreIfModifiedOrMovedIncorrectly(warningPossibleArea)
|
||||
restoreIfModifiedOrMovedIncorrectly(warningPossibleArea, sample)
|
||||
test {
|
||||
actions(it)
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ class DuplicateLesson(private val sample: LessonSample) :
|
||||
task("EditorDuplicate") {
|
||||
text(LessonsBundle.message("duplicate.and.delete.lines.duplicate.line", action(it)))
|
||||
trigger(it)
|
||||
restoreIfModifiedOrMoved()
|
||||
restoreIfModifiedOrMoved(sample)
|
||||
test { actions(it) }
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ class MoveLesson(private val caretText: String, private val sample: LessonSample
|
||||
prepareSample(sample)
|
||||
|
||||
actionTask("MoveLineDown") {
|
||||
restoreIfModifiedOrMoved()
|
||||
restoreIfModifiedOrMoved(sample)
|
||||
LessonsBundle.message("move.pull.down", action(it))
|
||||
}
|
||||
actionTask("MoveLineUp") {
|
||||
|
||||
@@ -26,8 +26,8 @@ abstract class SurroundAndUnwrapLesson
|
||||
|
||||
task("SurroundWith") {
|
||||
proposeIfModified {
|
||||
editor.caretModel.currentCaret.selectionStart != previous.sample.selection?.first ||
|
||||
editor.caretModel.currentCaret.selectionEnd != previous.sample.selection?.second
|
||||
editor.caretModel.currentCaret.selectionStart != sample.selection?.first ||
|
||||
editor.caretModel.currentCaret.selectionEnd != sample.selection?.second
|
||||
}
|
||||
text(LessonsBundle.message("surround.and.unwrap.invoke.surround", action(it)))
|
||||
triggerAndBorderHighlight().listItem { item ->
|
||||
|
||||
@@ -24,7 +24,7 @@ class CodeFormatLesson(private val sample: LessonSample, private val optimizeImp
|
||||
}
|
||||
|
||||
actionTask("ReformatCode") {
|
||||
restoreIfModifiedOrMoved()
|
||||
restoreIfModifiedOrMoved(sample)
|
||||
LessonsBundle.message("code.format.reformat.selection", action(it))
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ abstract class EditorCodingAssistanceLesson(private val sample: LessonSample) :
|
||||
prepareSample(sample)
|
||||
|
||||
actionTask("GotoNextError") {
|
||||
restoreIfModifiedOrMoved()
|
||||
restoreIfModifiedOrMoved(sample)
|
||||
LessonsBundle.message("editor.coding.assistance.goto.next.error", action(it))
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ class ParameterInfoLesson(private val sample: LessonSample) :
|
||||
val initialOffset = sample.getPosition(0).startOffset
|
||||
|
||||
actionTask("ParameterInfo") {
|
||||
restoreIfModifiedOrMoved()
|
||||
restoreIfModifiedOrMoved(sample)
|
||||
LessonsBundle.message("parameter.info.use.action", action(it))
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ class QuickPopupsLesson(private val sample: LessonSample) :
|
||||
task("QuickJavaDoc") {
|
||||
text(LessonsBundle.message("quick.popups.show.documentation", action(it)))
|
||||
triggerOnQuickDocumentationPopup()
|
||||
restoreIfModifiedOrMoved()
|
||||
restoreIfModifiedOrMoved(sample)
|
||||
test { actions(it) }
|
||||
}
|
||||
|
||||
|
||||
@@ -27,6 +27,8 @@ abstract class DeclarationAndUsagesLesson
|
||||
|
||||
override val lessonContent: LessonContext.() -> Unit
|
||||
get() = {
|
||||
sdkConfigurationTasks()
|
||||
|
||||
setInitialPosition()
|
||||
|
||||
prepareRuntimeTask {
|
||||
|
||||
@@ -6,10 +6,7 @@ import com.intellij.openapi.actionSystem.ActionManager
|
||||
import com.intellij.openapi.editor.LogicalPosition
|
||||
import com.intellij.openapi.editor.impl.EditorComponentImpl
|
||||
import com.intellij.ui.speedSearch.SpeedSearchSupply
|
||||
import training.dsl.LessonContext
|
||||
import training.dsl.LessonUtil
|
||||
import training.dsl.TaskRuntimeContext
|
||||
import training.dsl.restoreAfterStateBecomeFalse
|
||||
import training.dsl.*
|
||||
import training.learn.LessonsBundle
|
||||
import training.learn.course.KLesson
|
||||
import training.learn.course.LessonType
|
||||
@@ -28,6 +25,8 @@ abstract class FileStructureLesson
|
||||
|
||||
override val lessonContent: LessonContext.() -> Unit
|
||||
get() = {
|
||||
sdkConfigurationTasks()
|
||||
|
||||
caret(0)
|
||||
|
||||
actionTask("FileStructurePopup") {
|
||||
|
||||
@@ -29,6 +29,8 @@ class FindInFilesLesson(override val sampleFilePath: String)
|
||||
: KLesson("Find in files", LessonsBundle.message("find.in.files.lesson.name")) {
|
||||
|
||||
override val lessonContent: LessonContext.() -> Unit = {
|
||||
sdkConfigurationTasks()
|
||||
|
||||
prepareRuntimeTask {
|
||||
resetFindSettings(project)
|
||||
}
|
||||
|
||||
@@ -42,6 +42,8 @@ abstract class RecentFilesLesson : KLesson("Recent Files and Locations", Lessons
|
||||
private val countOfFilesToDelete: Int = 5
|
||||
|
||||
override val lessonContent: LessonContext.() -> Unit = {
|
||||
sdkConfigurationTasks()
|
||||
|
||||
setInitialPosition()
|
||||
|
||||
task("GotoDeclaration") {
|
||||
|
||||
@@ -36,6 +36,8 @@ abstract class SearchEverywhereLesson : KLesson("Search everywhere", LessonsBund
|
||||
private var backupPopupLocation: Point? = null
|
||||
|
||||
override val lessonContent: LessonContext.() -> Unit = {
|
||||
sdkConfigurationTasks()
|
||||
|
||||
task("SearchEverywhere") {
|
||||
triggerAndBorderHighlight().component { ui: ExtendableTextField ->
|
||||
UIUtil.getParentOfType(SearchEverywhereUI::class.java, ui) != null
|
||||
|
||||
@@ -25,7 +25,7 @@ class ExtractMethodCocktailSortLesson(private val sample: LessonSample)
|
||||
triggerUI().component { dialog: JDialog ->
|
||||
dialog.title == extractMethodDialogTitle
|
||||
}
|
||||
restoreIfModifiedOrMoved()
|
||||
restoreIfModifiedOrMoved(sample)
|
||||
test { actions(it) }
|
||||
}
|
||||
// Now will be open the first dialog
|
||||
|
||||
@@ -20,7 +20,7 @@ class ExtractVariableFromBubbleLesson(private val sample: LessonSample)
|
||||
task("IntroduceVariable") {
|
||||
text(LessonsBundle.message("extract.variable.start.refactoring", action(it), code("i + 1")))
|
||||
triggerStart("IntroduceVariable")
|
||||
restoreIfModifiedOrMoved()
|
||||
restoreIfModifiedOrMoved(sample)
|
||||
test {
|
||||
actions(it)
|
||||
}
|
||||
|
||||
@@ -15,7 +15,13 @@ import training.util.isToStringContains
|
||||
import javax.swing.JList
|
||||
|
||||
abstract class RefactoringMenuLessonBase(lessonId: String) : KLesson(lessonId, LessonsBundle.message("refactoring.menu.lesson.name")) {
|
||||
protected abstract val sample: LessonSample
|
||||
|
||||
fun LessonContext.extractParameterTasks() {
|
||||
prepareSample(sample)
|
||||
|
||||
showWarningIfInplaceRefactoringsDisabled()
|
||||
|
||||
lateinit var showPopupTaskId: TaskContext.TaskId
|
||||
task("Refactorings.QuickListPopupAction") {
|
||||
showPopupTaskId = taskId
|
||||
@@ -24,7 +30,7 @@ abstract class RefactoringMenuLessonBase(lessonId: String) : KLesson(lessonId, L
|
||||
triggerUI().component { ui: EngravedLabel ->
|
||||
ui.text.isToStringContains(refactorThisTitle)
|
||||
}
|
||||
restoreIfModifiedOrMoved()
|
||||
restoreIfModifiedOrMoved(sample)
|
||||
test { actions(it) }
|
||||
}
|
||||
|
||||
|
||||
@@ -124,10 +124,12 @@ class PythonOnboardingTourLesson :
|
||||
|
||||
projectTasks()
|
||||
|
||||
prepareSample(sample)
|
||||
prepareSample(sample, checkSdkConfiguration = false)
|
||||
|
||||
openLearnToolwindow()
|
||||
|
||||
sdkConfigurationTasks()
|
||||
|
||||
showInterpreterConfiguration()
|
||||
|
||||
waitIndexingTasks()
|
||||
|
||||
@@ -4,11 +4,10 @@ package com.jetbrains.python.ift.lesson.refactorings
|
||||
import training.dsl.LessonContext
|
||||
import training.dsl.parseLessonSample
|
||||
import training.dsl.restoreRefactoringOptionsInformer
|
||||
import training.dsl.showWarningIfInplaceRefactoringsDisabled
|
||||
import training.learn.lesson.general.refactorings.RefactoringMenuLessonBase
|
||||
|
||||
class PythonRefactorMenuLesson : RefactoringMenuLessonBase("Refactoring menu") {
|
||||
private val sample = parseLessonSample("""
|
||||
override val sample = parseLessonSample("""
|
||||
# Need to think about better sample!
|
||||
import random
|
||||
|
||||
@@ -18,8 +17,6 @@ class PythonRefactorMenuLesson : RefactoringMenuLessonBase("Refactoring menu") {
|
||||
""".trimIndent())
|
||||
|
||||
override val lessonContent: LessonContext.() -> Unit = {
|
||||
prepareSample(sample)
|
||||
showWarningIfInplaceRefactoringsDisabled()
|
||||
extractParameterTasks()
|
||||
restoreRefactoringOptionsInformer()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user