[IFT] Big files move

IDEA-CR-70490

GitOrigin-RevId: a20fef4ca9dd177f6af4b8aabff14c337c6aae80
This commit is contained in:
Alexey Merkulov
2021-02-12 12:09:23 +00:00
committed by intellij-monorepo-bot
parent 7059135400
commit ba6b3ef02d
117 changed files with 339 additions and 415 deletions
@@ -13,17 +13,17 @@ import com.intellij.java.ift.lesson.refactorings.JavaRenameLesson
import com.intellij.java.ift.lesson.run.JavaDebugLesson
import com.intellij.java.ift.lesson.run.JavaRunConfigurationLesson
import com.intellij.lang.java.JavaLanguage
import training.learn.LearningModule
import training.dsl.LessonUtil
import training.learn.LessonsBundle
import training.learn.course.LearningCourseBase
import training.learn.interfaces.LessonType
import training.learn.course.LearningModule
import training.learn.course.LessonType
import training.learn.lesson.general.*
import training.learn.lesson.general.assistance.CodeFormatLesson
import training.learn.lesson.general.assistance.ParameterInfoLesson
import training.learn.lesson.general.assistance.QuickPopupsLesson
import training.learn.lesson.general.navigation.FindInFilesLesson
import training.learn.lesson.general.refactorings.ExtractVariableFromBubbleLesson
import training.learn.lesson.kimpl.LessonUtil
class JavaLearningCourse : LearningCourseBase(JavaLanguage.INSTANCE.id) {
override fun modules() = listOf(
@@ -3,8 +3,8 @@ package com.intellij.java.ift.lesson.assistance
import com.intellij.codeInsight.daemon.QuickFixBundle
import com.siyeh.InspectionGadgetsBundle
import training.dsl.LessonSample
import training.learn.lesson.general.assistance.EditorCodingAssistanceLesson
import training.learn.lesson.kimpl.LessonSample
class JavaEditorCodingAssistanceLesson(lang: String, sample: LessonSample) :
EditorCodingAssistanceLesson(lang, sample) {
@@ -3,9 +3,9 @@ package com.intellij.java.ift.lesson.basic
import com.intellij.codeInsight.daemon.QuickFixBundle
import com.siyeh.IntentionPowerPackBundle
import training.dsl.LessonSample
import training.dsl.parseLessonSample
import training.learn.lesson.general.ContextActionsLesson
import training.learn.lesson.kimpl.LessonSample
import training.learn.lesson.kimpl.parseLessonSample
class JavaContextActionsLesson : ContextActionsLesson("JAVA") {
override val sample: LessonSample = parseLessonSample("""
@@ -1,9 +1,9 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.java.ift.lesson.basic
import training.dsl.LessonSample
import training.dsl.parseLessonSample
import training.learn.lesson.general.NewSelectLesson
import training.learn.lesson.kimpl.LessonSample
import training.learn.lesson.kimpl.parseLessonSample
class JavaSelectLesson : NewSelectLesson("JAVA") {
override val selectArgument = "\"$selectString\""
@@ -2,10 +2,10 @@
package com.intellij.java.ift.lesson.basic
import com.intellij.java.ift.JavaLessonsBundle
import training.dsl.LessonSample
import training.dsl.parseLessonSample
import training.learn.LessonsBundle
import training.learn.lesson.general.SurroundAndUnwrapLesson
import training.learn.lesson.kimpl.LessonSample
import training.learn.lesson.kimpl.parseLessonSample
class JavaSurroundAndUnwrapLesson : SurroundAndUnwrapLesson("JAVA") {
override val sample: LessonSample = parseLessonSample("""
@@ -3,13 +3,13 @@ package com.intellij.java.ift.lesson.completion
import com.intellij.java.ift.JavaLangSupport
import com.intellij.java.ift.JavaLessonsBundle
import training.dsl.LessonContext
import training.dsl.LessonUtil.checkExpectedStateOfEditor
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.dsl.LessonUtil.restoreIfModifiedOrMovedIncorrectly
import training.dsl.parseLessonSample
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonUtil.checkExpectedStateOfEditor
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMovedIncorrectly
import training.learn.lesson.kimpl.parseLessonSample
import training.learn.course.KLesson
class JavaBasicCompletionLesson
: KLesson("Basic completion", LessonsBundle.message("basic.completion.lesson.name"), JavaLangSupport.lang) {
@@ -2,8 +2,8 @@
package com.intellij.java.ift.lesson.completion
import com.intellij.java.ift.JavaLangSupport
import training.dsl.parseLessonSample
import training.learn.lesson.general.CompletionWithTabLesson
import training.learn.lesson.kimpl.parseLessonSample
class JavaCompletionWithTabLesson :
CompletionWithTabLesson(JavaLangSupport.lang, "DO_NOTHING_ON_CLOSE") {
@@ -3,10 +3,10 @@ package com.intellij.java.ift.lesson.completion
import com.intellij.java.ift.JavaLangSupport
import com.intellij.java.ift.JavaLessonsBundle
import training.dsl.LessonContext
import training.dsl.parseLessonSample
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.parseLessonSample
import training.learn.course.KLesson
class JavaPostfixCompletionLesson
: KLesson("Postfix completion", LessonsBundle.message("postfix.completion.lesson.name"), JavaLangSupport.lang) {
@@ -3,10 +3,10 @@ package com.intellij.java.ift.lesson.completion
import com.intellij.java.ift.JavaLangSupport
import com.intellij.java.ift.JavaLessonsBundle
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.lesson.kimpl.parseLessonSample
import training.dsl.LessonContext
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.dsl.parseLessonSample
import training.learn.course.KLesson
class JavaSmartTypeCompletionLesson
: KLesson("Smart type completion", JavaLessonsBundle.message("java.smart.type.completion.lesson.name"), JavaLangSupport.lang) {
@@ -6,12 +6,12 @@ import com.intellij.java.ift.JavaLessonsBundle
import com.intellij.psi.PsiDocumentManager
import com.intellij.psi.PsiForStatement
import com.intellij.psi.util.PsiTreeUtil
import training.commands.kotlin.TaskRuntimeContext
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonUtil.checkExpectedStateOfEditor
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.lesson.kimpl.parseLessonSample
import training.dsl.LessonContext
import training.dsl.LessonUtil.checkExpectedStateOfEditor
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.dsl.TaskRuntimeContext
import training.dsl.parseLessonSample
import training.learn.course.KLesson
class JavaStatementCompletionLesson
: KLesson("Statement completion", JavaLessonsBundle.message("java.statement.completion.lesson.name"), JavaLangSupport.lang) {
@@ -1,8 +1,8 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.java.ift.lesson.navigation
import training.dsl.LessonContext
import training.learn.lesson.general.navigation.DeclarationAndUsagesLesson
import training.learn.lesson.kimpl.LessonContext
class JavaDeclarationAndUsagesLesson : DeclarationAndUsagesLesson("JAVA") {
override fun LessonContext.setInitialPosition() = caret("foo()")
@@ -14,10 +14,9 @@ import com.intellij.testGuiFramework.framework.GuiTestUtil
import com.intellij.testGuiFramework.util.Key
import com.intellij.ui.InplaceButton
import com.intellij.ui.UIBundle
import training.commands.kotlin.TaskContext
import training.commands.kotlin.TaskRuntimeContext
import training.learn.lesson.kimpl.*
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMoved
import training.dsl.*
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.course.KLesson
class JavaInheritanceHierarchyLesson
: KLesson("java.inheritance.hierarchy.lesson", JavaLessonsBundle.message("java.inheritance.hierarchy.lesson.name"), "JAVA") {
@@ -7,12 +7,12 @@ import com.intellij.testGuiFramework.framework.GuiTestUtil
import com.intellij.testGuiFramework.impl.actionButton
import com.intellij.testGuiFramework.util.Key
import com.intellij.usageView.UsageViewBundle
import training.learn.interfaces.LessonType
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonUtil
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.lesson.kimpl.parseLessonSample
import training.dsl.LessonContext
import training.dsl.LessonUtil
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.dsl.parseLessonSample
import training.learn.course.KLesson
import training.learn.course.LessonType
class JavaOccurrencesLesson
: KLesson("java.occurrences.lesson", JavaLessonsBundle.message("java.find.occurrences.lesson.name"), "JAVA") {
@@ -1,8 +1,8 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.java.ift.lesson.navigation
import training.dsl.LessonContext
import training.learn.lesson.general.navigation.RecentFilesLesson
import training.learn.lesson.kimpl.LessonContext
class JavaRecentFilesLesson : RecentFilesLesson("JAVA") {
override val existedFile: String = "src/RecentFilesDemo.java"
@@ -1,9 +1,9 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.java.ift.lesson.navigation
import training.dsl.LessonContext
import training.learn.LessonsBundle
import training.learn.lesson.general.navigation.SearchEverywhereLesson
import training.learn.lesson.kimpl.LessonContext
class JavaSearchEverywhereLesson : SearchEverywhereLesson("JAVA") {
override val existedFile = "src/RecentFilesDemo.java"
@@ -6,13 +6,13 @@ import com.intellij.refactoring.RefactoringBundle
import com.intellij.refactoring.extractMethod.ExtractMethodHandler
import com.intellij.testGuiFramework.impl.button
import com.intellij.ui.UIBundle
import training.commands.kotlin.TaskTestContext
import training.dsl.LessonContext
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.dsl.TaskTestContext
import training.dsl.dropMnemonic
import training.dsl.parseLessonSample
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.lesson.kimpl.dropMnemonic
import training.learn.lesson.kimpl.parseLessonSample
import training.learn.course.KLesson
import javax.swing.JDialog
class JavaExtractMethodCocktailSortLesson
@@ -7,12 +7,12 @@ import com.intellij.refactoring.RefactoringBundle
import com.intellij.testGuiFramework.framework.GuiTestUtil
import com.intellij.testGuiFramework.util.Key
import com.intellij.util.ui.UIUtil
import training.commands.kotlin.TaskRuntimeContext
import training.dsl.LessonContext
import training.dsl.LessonUtil
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.dsl.TaskRuntimeContext
import training.dsl.parseLessonSample
import training.learn.lesson.general.refactorings.RefactoringMenuLessonBase
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonUtil
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.lesson.kimpl.parseLessonSample
import javax.swing.JDialog
class JavaRefactoringMenuLesson : RefactoringMenuLessonBase("java.refactoring.menu", "JAVA") {
@@ -8,11 +8,10 @@ import com.intellij.java.refactoring.JavaRefactoringBundle
import com.intellij.refactoring.rename.RenameProcessor
import com.intellij.testGuiFramework.impl.button
import com.intellij.util.ui.UIUtil
import training.commands.kotlin.TaskContext
import training.commands.kotlin.TaskRuntimeContext
import training.dsl.*
import training.dsl.LessonUtil.checkExpectedStateOfEditor
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.*
import training.learn.lesson.kimpl.LessonUtil.checkExpectedStateOfEditor
import training.learn.course.KLesson
import javax.swing.JDialog
class JavaRenameLesson
@@ -5,10 +5,10 @@ import com.intellij.icons.AllIcons
import com.intellij.java.ift.JavaLessonsBundle
import com.intellij.openapi.editor.LogicalPosition
import com.intellij.testGuiFramework.impl.button
import training.commands.kotlin.TaskTestContext
import training.dsl.LessonContext
import training.dsl.TaskTestContext
import training.dsl.highlightButtonById
import training.learn.lesson.general.run.CommonDebugLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.highlightButtonById
class JavaDebugLesson : CommonDebugLesson("java.debug.workflow", "JAVA") {
private val demoClassName = JavaRunLessonsUtils.demoClassName
@@ -7,11 +7,11 @@ import com.intellij.java.ift.JavaLessonsBundle
import com.intellij.openapi.actionSystem.CommonDataKeys
import com.intellij.openapi.actionSystem.DataProvider
import com.intellij.openapi.editor.ex.EditorGutterComponentEx
import training.dsl.LessonContext
import training.dsl.LessonSample
import training.dsl.checkToolWindowState
import training.dsl.dropMnemonic
import training.learn.lesson.general.run.CommonRunConfigurationLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonSample
import training.learn.lesson.kimpl.checkToolWindowState
import training.learn.lesson.kimpl.dropMnemonic
import java.awt.Rectangle
class JavaRunConfigurationLesson : CommonRunConfigurationLesson("java.run.configuration", "JAVA") {
@@ -1,7 +1,7 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.java.ift.lesson.run
import training.learn.lesson.kimpl.parseLessonSample
import training.dsl.parseLessonSample
object JavaRunLessonsUtils {
const val demoClassName = "Sample"
@@ -29,7 +29,7 @@
</extensionPoint>
<extensionPoint name="ift.learning.course" beanClass="com.intellij.lang.LanguageExtensionPoint" dynamic="true">
<with attribute="implementationClass" implements="training.learn.LearningCourse"/>
<with attribute="implementationClass" implements="training.learn.course.LearningCourse"/>
</extensionPoint>
</extensionPoints>
@@ -5,12 +5,12 @@ import com.intellij.ide.CopyPasteManagerEx
import com.intellij.openapi.actionSystem.AnAction
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.project.Project
import training.commands.kotlin.TaskContext
import training.commands.kotlin.TaskRuntimeContext
import training.dsl.LearningBalloonConfig
import training.dsl.TaskContext
import training.dsl.TaskRuntimeContext
import training.dsl.impl.ApplyTaskLessonContext
import training.learn.CourseManager
import training.learn.lesson.kimpl.ApplyTaskLessonContext
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LearningBalloonConfig
import training.learn.course.KLesson
import java.awt.datatransfer.StringSelection
class DumpFeaturesTrainerText : AnAction() {
@@ -1,5 +1,5 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.kimpl
package training.dsl
import com.intellij.openapi.ui.popup.Balloon
import javax.swing.JComponent
@@ -1,5 +1,5 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.kimpl
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.dsl
@DslMarker
annotation class LearningDsl
@@ -1,5 +1,5 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.kimpl
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.dsl
import com.intellij.openapi.util.text.StringUtil
import training.ui.LearningUiManager
@@ -1,13 +1,11 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.kimpl
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.dsl
import com.intellij.openapi.application.ModalityState
import com.intellij.openapi.application.invokeLater
import com.intellij.util.concurrency.annotations.RequiresEdt
import org.intellij.lang.annotations.Language
import org.jetbrains.annotations.Nls
import training.commands.kotlin.TaskContext
import training.commands.kotlin.TaskRuntimeContext
@LearningDsl
abstract class LessonContext: LearningDslBase {
@@ -1,5 +1,5 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.kimpl
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.dsl
import com.intellij.openapi.editor.Editor
@@ -1,5 +1,5 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.kimpl
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.dsl
import com.intellij.openapi.actionSystem.*
import com.intellij.openapi.actionSystem.impl.ActionButton
@@ -29,13 +29,12 @@ import com.intellij.util.ui.UIUtil
import com.intellij.xdebugger.XDebuggerManager
import org.fest.swing.timing.Timeout
import org.jetbrains.annotations.Nls
import training.commands.kotlin.TaskContext
import training.commands.kotlin.TaskRuntimeContext
import training.keymap.KeymapUtil
import training.dsl.*
import training.learn.LearnBundle
import training.learn.LessonsBundle
import training.ui.LearningUiHighlightingManager
import training.ui.LearningUiUtil
import training.util.KeymapUtil
import java.awt.Component
import java.awt.Rectangle
import java.awt.event.KeyEvent
@@ -1,9 +1,8 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.commands.kotlin
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.dsl
import com.intellij.openapi.editor.LogicalPosition
import com.intellij.openapi.vfs.VirtualFile
import training.learn.lesson.kimpl.LessonSample
import java.awt.Component
interface PreviousTaskInfo {
@@ -1,5 +1,5 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.commands.kotlin
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.dsl
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.project.Project
@@ -9,7 +9,6 @@ import org.fest.swing.timing.Timeout
import org.intellij.lang.annotations.Language
import org.jetbrains.annotations.Nls
import training.learn.LearnBundle
import training.learn.lesson.kimpl.*
import training.ui.LearningUiHighlightingManager
import training.ui.LearningUiUtil
import java.awt.Component
@@ -1,5 +1,5 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.commands.kotlin
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.dsl
import com.intellij.openapi.Disposable
import com.intellij.openapi.application.ModalityState
@@ -19,8 +19,8 @@ import com.intellij.openapi.vfs.VirtualFile
import com.intellij.openapi.wm.IdeFocusManager
import com.intellij.psi.PsiDocumentManager
import com.intellij.util.DocumentUtil
import training.dsl.impl.LessonExecutor
import training.learn.ActionsRecorder
import training.learn.lesson.kimpl.*
import java.awt.Component
@LearningDsl
@@ -1,5 +1,5 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.commands.kotlin
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.dsl
import com.intellij.openapi.actionSystem.ActionManager
import com.intellij.testGuiFramework.cellReader.ExtendedJListCellReader
@@ -15,7 +15,6 @@ import org.fest.swing.core.Robot
import org.fest.swing.fixture.ContainerFixture
import org.fest.swing.fixture.JListFixture
import org.fest.swing.timing.Timeout
import training.learn.lesson.kimpl.LearningDsl
import training.util.invokeActionForFocusContext
import java.awt.Component
import java.awt.Container
@@ -72,7 +71,8 @@ class TaskTestContext(rt: TaskRuntimeContext): TaskRuntimeContext(rt) {
}
class SimpleComponentFixture(robot: Robot, target: Component): ComponentFixture<SimpleComponentFixture, Component>(SimpleComponentFixture::class.java, robot, target)
class SimpleComponentFixture(robot: Robot, target: Component): ComponentFixture<SimpleComponentFixture, Component>(
SimpleComponentFixture::class.java, robot, target)
fun IdeFrameFixture.jComponent(target: Component): SimpleComponentFixture {
return SimpleComponentFixture(robot(), target)
@@ -1,7 +1,8 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.kimpl
package training.dsl.impl
import training.commands.kotlin.TaskContext
import training.dsl.LessonContext
import training.dsl.TaskContext
internal class ApplyTaskLessonContext(private val taskContext: TaskContext) : LessonContext() {
override fun task(taskContent: TaskContext.() -> Unit) {
@@ -1,7 +1,8 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.kimpl
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.dsl.impl
import training.commands.kotlin.TaskContext
import training.dsl.LessonContext
import training.dsl.TaskContext
class LessonContextImpl(private val executor: LessonExecutor): LessonContext() {
override fun task(taskContent: TaskContext.() -> Unit) {
@@ -1,5 +1,5 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.kimpl
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.dsl.impl
import com.intellij.openapi.Disposable
import com.intellij.openapi.application.ApplicationManager
@@ -15,10 +15,9 @@ import com.intellij.openapi.util.Disposer
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.util.Alarm
import org.intellij.lang.annotations.Language
import training.commands.kotlin.PreviousTaskInfo
import training.commands.kotlin.TaskContext
import training.commands.kotlin.TaskTestContext
import training.dsl.*
import training.learn.ActionsRecorder
import training.learn.course.KLesson
import training.learn.exceptons.NoTextEditor
import training.learn.lesson.LessonManager
import training.statistic.StatisticBase
@@ -1,5 +1,5 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.kimpl
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.dsl.impl
import com.intellij.openapi.application.invokeLater
import com.intellij.openapi.project.Project
@@ -11,9 +11,10 @@ import com.intellij.openapi.ui.popup.LightweightWindowEvent
import com.intellij.ui.UIBundle
import com.intellij.ui.awt.RelativePoint
import com.intellij.util.Alarm
import training.commands.kotlin.TaskContext
import training.commands.kotlin.TaskRuntimeContext
import training.commands.kotlin.TaskTestContext
import training.dsl.LearningBalloonConfig
import training.dsl.TaskContext
import training.dsl.TaskRuntimeContext
import training.dsl.TaskTestContext
import training.learn.ActionsRecorder
import training.learn.LearnBundle
import training.learn.lesson.LessonManager
@@ -1,8 +1,10 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.kimpl
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.dsl.impl
import com.intellij.openapi.project.Project
import training.commands.kotlin.TaskContext
import training.dsl.LearningBalloonConfig
import training.dsl.LessonContext
import training.dsl.TaskContext
import training.learn.lesson.LessonManager
class OpenPassedContext(private val project: Project) : LessonContext() {
@@ -1,5 +1,5 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.kimpl
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.dsl.impl
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.ModalityState
@@ -17,9 +17,7 @@ import com.intellij.ui.EditorNotifications
import org.fest.swing.exception.ComponentLookupException
import org.fest.swing.exception.WaitTimedOutError
import org.intellij.lang.annotations.Language
import training.commands.kotlin.TaskContext
import training.commands.kotlin.TaskRuntimeContext
import training.commands.kotlin.TaskTestContext
import training.dsl.*
import training.learn.ActionsRecorder
import training.learn.LearnBundle
import training.learn.lesson.LessonManager
@@ -21,7 +21,7 @@ import com.intellij.openapi.util.Disposer
import com.intellij.openapi.util.Pair
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.PsiDocumentManager
import training.commands.kotlin.TaskContext
import training.dsl.TaskContext
import training.learn.exceptons.NoTextEditor
import training.learn.lesson.LessonManager
import training.ui.LearningUiManager
@@ -10,8 +10,9 @@ import com.intellij.openapi.vfs.VirtualFile
import com.intellij.util.containers.ContainerUtil
import training.lang.LangManager
import training.lang.LangSupport
import training.learn.interfaces.Lesson
import training.learn.interfaces.Module
import training.learn.course.LearningCourse
import training.learn.course.Lesson
import training.learn.course.Module
import training.learn.lesson.LessonManager
import training.ui.LearnToolWindowFactory
import training.util.WeakReferenceDelegator
@@ -24,17 +24,17 @@ import com.intellij.openapi.vfs.VirtualFile
import com.intellij.openapi.wm.ToolWindowManager
import com.intellij.util.Alarm
import com.intellij.util.concurrency.annotations.RequiresEdt
import training.dsl.LessonUtil
import training.dsl.impl.LessonContextImpl
import training.dsl.impl.LessonExecutor
import training.lang.LangManager
import training.lang.LangSupport
import training.learn.interfaces.Lesson
import training.learn.interfaces.LessonType
import training.learn.course.KLesson
import training.learn.course.Lesson
import training.learn.course.LessonType
import training.learn.lesson.LessonManager
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContextImpl
import training.learn.lesson.kimpl.LessonExecutor
import training.learn.lesson.kimpl.LessonUtil
import training.learn.lesson.listeners.StatisticLessonListener
import training.project.ProjectUtils
import training.statistic.StatisticLessonListener
import training.ui.LearnToolWindowFactory
import training.ui.LearningUiManager
import training.util.findLanguageByID
@@ -1,11 +1,9 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.kimpl
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.course
import org.jetbrains.annotations.Nls
import org.jetbrains.annotations.NonNls
import training.learn.interfaces.Lesson
import training.learn.interfaces.LessonType
import training.learn.interfaces.Module
import training.dsl.LessonContext
import training.learn.lesson.LessonListener
import training.util.findLanguageByID
@@ -1,6 +1,5 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn
import training.learn.interfaces.Module
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.course
interface LearningCourse {
fun modules() : Collection<Module>
@@ -1,11 +1,10 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.course
import training.dsl.LessonSample
import training.dsl.parseLessonSample
import training.lang.LangManager
import training.lang.LangSupport
import training.learn.LearningCourse
import training.learn.lesson.kimpl.LessonSample
import training.learn.lesson.kimpl.parseLessonSample
import training.util.DataLoader
abstract class LearningCourseBase(val lang: String) : LearningCourse {
@@ -1,10 +1,8 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.course
import org.jetbrains.annotations.Nls
import training.lang.LangSupport
import training.learn.interfaces.LessonType
import training.learn.lesson.kimpl.KLesson
class LearningModule(@Nls name: String,
@Nls description: String,
@@ -1,12 +1,8 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.course
import org.jetbrains.annotations.Nls
import training.lang.LangSupport
import training.learn.interfaces.Lesson
import training.learn.interfaces.LessonType
import training.learn.interfaces.Module
import training.learn.lesson.kimpl.KLesson
abstract class LearningModuleBase(@Nls override val name: String,
@Nls override val description: String,
@@ -1,15 +1,14 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.interfaces
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.course
import com.intellij.openapi.project.Project
import com.intellij.util.concurrency.annotations.RequiresBackgroundThread
import org.jetbrains.annotations.Nls
import org.jetbrains.annotations.NonNls
import training.commands.kotlin.TaskTestContext
import training.dsl.TaskTestContext
import training.learn.lesson.LessonListener
import training.learn.lesson.LessonState
import training.learn.lesson.LessonStateManager
import training.learn.lesson.kimpl.LessonProperties
interface Lesson {
@@ -1,5 +1,5 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.kimpl
package training.learn.course
data class LessonProperties(
val canStartInDumbMode: Boolean = false,
@@ -1,5 +1,5 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.interfaces
package training.learn.course
enum class LessonType(val isProject: Boolean, val isSingleEditor: Boolean) {
SCRATCH(false, true), SINGLE_EDITOR(true, true), PROJECT(true, false)
@@ -1,5 +1,5 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.interfaces
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.course
import com.intellij.openapi.util.NlsSafe
import org.jetbrains.annotations.Nls
@@ -5,7 +5,7 @@ import com.intellij.openapi.util.SystemInfo
import com.intellij.psi.PsiDocumentManager
import com.intellij.psi.PsiElement
import com.intellij.ui.components.fields.ExtendableTextField
import training.commands.kotlin.TaskRuntimeContext
import training.dsl.TaskRuntimeContext
fun TaskRuntimeContext.textBeforeCaret(text: String): Boolean {
val offset = editor.caretModel.offset
@@ -1,7 +1,7 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson
import training.learn.interfaces.Lesson
import training.learn.course.Lesson
import java.util.*
interface LessonListener : EventListener {
@@ -12,11 +12,11 @@ import com.intellij.openapi.keymap.Keymap
import com.intellij.openapi.keymap.KeymapManagerListener
import com.intellij.openapi.project.Project
import org.intellij.lang.annotations.Language
import training.commands.kotlin.TaskContext
import training.learn.interfaces.Lesson
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonExecutor
import training.learn.lesson.kimpl.OpenPassedContext
import training.dsl.TaskContext
import training.dsl.impl.LessonExecutor
import training.dsl.impl.OpenPassedContext
import training.learn.course.KLesson
import training.learn.course.Lesson
import training.ui.*
import training.ui.views.LearnPanel
import training.util.createNamedSingleThreadExecutor
@@ -5,7 +5,7 @@ import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.components.PersistentStateComponent
import com.intellij.openapi.components.State
import com.intellij.openapi.components.Storage
import training.learn.interfaces.Lesson
import training.learn.course.Lesson
import training.util.trainerPluginConfigName
@State(name = "LessonStateBase", storages = [Storage(value = trainerPluginConfigName)])
@@ -1,36 +0,0 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson
import org.jdom.Element
import training.util.DataLoader
class Scenario(private val path: String, classLoader: ClassLoader) {
val root: Element = DataLoader.getXmlRootElement(path, classLoader)
val lang: String
get() {
val lang = root.getAttribute(LANG)
if (lang != null) return lang.value else throw Exception("Cannot get '$LANG' property for the lesson file with path: $path")
}
val name: String
get() = root.getAttribute(NAME)!!.value
/**
* It is a unique String attribute to distinguish different lessons with a probably similar names
*/
val id: String
get() = root.getAttribute(ID)!!.value
val file: String?
get() = root.getAttribute(FILE)?.value
companion object {
private const val LANG = "lang"
private const val NAME = "name"
private const val ID = "id"
private const val FILE = "file"
}
}
@@ -1,10 +1,10 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.general
import training.dsl.LessonContext
import training.dsl.LessonSample
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonSample
import training.learn.course.KLesson
class CollapseLesson(lang: String, private val sample: LessonSample)
: KLesson("Collapse", LessonsBundle.message("collapse.lesson.name"), lang) {
@@ -1,11 +1,11 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.general
import training.dsl.LessonContext
import training.dsl.LessonSample
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonSample
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.course.KLesson
abstract class CompletionWithTabLesson(lang: String, private val proposal: String) :
KLesson("Completion with tab", LessonsBundle.message("completion.with.tab.lesson.name"), lang) {
@@ -3,11 +3,10 @@ package training.learn.lesson.general
import com.intellij.codeInsight.intention.impl.ShowIntentionActionsHandler
import com.intellij.openapi.editor.impl.EditorComponentImpl
import training.commands.kotlin.TaskContext
import training.commands.kotlin.TaskRuntimeContext
import training.dsl.*
import training.dsl.LessonUtil.restoreIfModifiedOrMovedIncorrectly
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.*
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMovedIncorrectly
import training.learn.course.KLesson
abstract class ContextActionsLesson(lang: String) :
KLesson("context.actions", LessonsBundle.message("context.actions.lesson.name"), lang) {
@@ -1,10 +1,10 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.general
import training.dsl.LessonContext
import training.dsl.LessonSample
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonSample
import training.learn.course.KLesson
class DuplicateLesson(lang: String, private val sample: LessonSample) :
KLesson("Duplicate", LessonsBundle.message("duplicate.and.delete.lines.lesson.name"), lang) {
@@ -13,11 +13,10 @@ import com.intellij.testGuiFramework.framework.GuiTestUtil
import com.intellij.testGuiFramework.impl.jList
import com.intellij.testGuiFramework.util.Key
import com.intellij.util.ui.UIUtil
import training.commands.kotlin.TaskContext
import training.commands.kotlin.TaskRuntimeContext
import training.dsl.*
import training.learn.LearnBundle
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.*
import training.learn.course.KLesson
import java.awt.event.KeyEvent
import javax.swing.JPanel
@@ -1,11 +1,11 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.general
import training.dsl.LessonContext
import training.dsl.LessonSample
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonSample
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.course.KLesson
class MoveLesson(lang: String, private val caretText: String, private val sample: LessonSample)
: KLesson("Move", LessonsBundle.message("move.lesson.name"), lang) {
@@ -4,12 +4,12 @@ package training.learn.lesson.general
import com.intellij.psi.PsiDocumentManager
import com.intellij.psi.html.HtmlTag
import com.intellij.psi.util.PsiTreeUtil
import training.commands.kotlin.TaskRuntimeContext
import training.dsl.LessonContext
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.dsl.TaskRuntimeContext
import training.dsl.parseLessonSample
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.lesson.kimpl.parseLessonSample
import training.learn.course.KLesson
class MultipleSelectionHtmlLesson
: KLesson("Multiple selections", LessonsBundle.message("multiple.selections.lesson.name"), "HTML") {
@@ -1,11 +1,13 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.general
import training.commands.kotlin.TaskRuntimeContext
import training.dsl.LessonContext
import training.dsl.LessonSample
import training.dsl.LessonUtil.checkPositionOfEditor
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.dsl.TaskRuntimeContext
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.*
import training.learn.lesson.kimpl.LessonUtil.checkPositionOfEditor
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.course.KLesson
abstract class NewSelectLesson(lang: String) :
KLesson("Select", LessonsBundle.message("selection.lesson.name"), lang) {
@@ -1,10 +1,10 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.general
import training.dsl.LessonContext
import training.dsl.LessonSample
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonSample
import training.learn.course.KLesson
class SelectLesson(lang: String, private val sample: LessonSample) :
KLesson("Select", LessonsBundle.message("selection.lesson.name"), lang) {
@@ -4,11 +4,11 @@ package training.learn.lesson.general
import com.intellij.psi.PsiComment
import com.intellij.psi.PsiDocumentManager
import com.intellij.psi.PsiElement
import training.commands.kotlin.TaskRuntimeContext
import training.dsl.LessonContext
import training.dsl.LessonSample
import training.dsl.TaskRuntimeContext
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonSample
import training.learn.course.KLesson
class SingleLineCommentLesson(lang: String, private val sample: LessonSample)
: KLesson("Comment line", LessonsBundle.message("comment.line.lesson.name"), lang) {
@@ -1,15 +1,11 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.general
import training.commands.kotlin.TaskContext
import training.commands.kotlin.TaskRuntimeContext
import training.dsl.*
import training.dsl.LessonUtil.checkExpectedStateOfEditor
import training.learn.LearnBundle
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonSample
import training.learn.lesson.kimpl.LessonUtil.checkExpectedStateOfEditor
import training.learn.lesson.kimpl.restoreAfterStateBecomeFalse
import training.learn.course.KLesson
abstract class SurroundAndUnwrapLesson(lang: String)
: KLesson("Surround and unwrap", LessonsBundle.message("surround.and.unwrap.lesson.name"), lang) {
@@ -5,12 +5,12 @@ import com.intellij.codeInsight.CodeInsightBundle
import com.intellij.ide.util.PropertiesComponent
import com.intellij.openapi.editor.impl.EditorComponentImpl
import com.intellij.testGuiFramework.impl.button
import training.dsl.LessonContext
import training.dsl.LessonSample
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.dsl.restoreAfterStateBecomeFalse
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonSample
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.lesson.kimpl.restoreAfterStateBecomeFalse
import training.learn.course.KLesson
class CodeFormatLesson(override val lang: String, private val sample: LessonSample, private val optimizeImports: Boolean) :
KLesson("CodeAssistance.CodeFormatting", LessonsBundle.message("code.format.lesson.name"), lang) {
@@ -7,14 +7,10 @@ import com.intellij.testGuiFramework.impl.jList
import com.intellij.testGuiFramework.util.Key
import com.intellij.testGuiFramework.util.Modifier
import com.intellij.testGuiFramework.util.Shortcut
import training.commands.kotlin.TaskContext
import training.commands.kotlin.TaskRuntimeContext
import training.commands.kotlin.TaskTestContext
import training.dsl.*
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonSample
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.course.KLesson
import training.util.PerformActionUtil
import javax.swing.JEditorPane
@@ -1,12 +1,12 @@
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.general.assistance
import training.commands.kotlin.TaskRuntimeContext
import training.dsl.LessonContext
import training.dsl.LessonSample
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.dsl.TaskRuntimeContext
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonSample
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.course.KLesson
import kotlin.math.min
class ParameterInfoLesson(lang: String, private val sample: LessonSample) :
@@ -6,12 +6,12 @@ import com.intellij.codeInsight.documentation.QuickDocUtil
import com.intellij.codeInsight.hint.ImplementationViewComponent
import com.intellij.testGuiFramework.framework.GuiTestUtil
import com.intellij.testGuiFramework.util.Key
import training.commands.kotlin.TaskRuntimeContext
import training.dsl.LessonContext
import training.dsl.LessonSample
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.dsl.TaskRuntimeContext
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonSample
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.course.KLesson
class QuickPopupsLesson(lang: String, private val sample: LessonSample) :
KLesson("CodeAssistance.QuickPopups", LessonsBundle.message("quick.popups.lesson.name"), lang) {
@@ -3,9 +3,13 @@ package training.learn.lesson.general.completion
import com.intellij.testGuiFramework.framework.GuiTestUtil
import com.intellij.testGuiFramework.util.Key
import training.dsl.LessonContext
import training.dsl.LessonSample
import training.dsl.LessonUtil
import training.dsl.LessonUtil.checkExpectedStateOfEditor
import training.dsl.restoreAfterStateBecomeFalse
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.*
import training.learn.lesson.kimpl.LessonUtil.checkExpectedStateOfEditor
import training.learn.course.KLesson
import javax.swing.JList
abstract class BasicCompletionLessonBase(lang: String)
@@ -12,14 +12,14 @@ import com.intellij.testGuiFramework.framework.GuiTestUtil.shortcut
import com.intellij.testGuiFramework.util.Key
import com.intellij.ui.UIBundle
import com.intellij.ui.table.JBTable
import training.commands.kotlin.TaskRuntimeContext
import training.dsl.LessonContext
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.dsl.TaskRuntimeContext
import training.dsl.checkToolWindowState
import training.dsl.closeAllFindTabs
import training.learn.LearnBundle
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.lesson.kimpl.checkToolWindowState
import training.learn.lesson.kimpl.closeAllFindTabs
import training.learn.course.KLesson
abstract class DeclarationAndUsagesLesson(lang: String)
: KLesson("Declaration and usages", LessonsBundle.message("declaration.and.usages.lesson.name"), lang) {
@@ -7,13 +7,13 @@ import com.intellij.openapi.editor.impl.EditorComponentImpl
import com.intellij.testGuiFramework.framework.GuiTestUtil
import com.intellij.testGuiFramework.util.Key
import com.intellij.ui.speedSearch.SpeedSearchSupply
import training.commands.kotlin.TaskRuntimeContext
import training.dsl.LessonContext
import training.dsl.LessonUtil
import training.dsl.TaskRuntimeContext
import training.dsl.restoreAfterStateBecomeFalse
import training.learn.LessonsBundle
import training.learn.interfaces.LessonType
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonUtil
import training.learn.lesson.kimpl.restoreAfterStateBecomeFalse
import training.learn.course.KLesson
import training.learn.course.LessonType
abstract class FileStructureLesson(lang: String)
: KLesson("File structure", LessonsBundle.message("file.structure.lesson.name"), lang) {
@@ -20,11 +20,9 @@ import com.intellij.util.ui.UIUtil
import org.fest.swing.core.MouseClickInfo
import org.fest.swing.data.TableCell
import org.fest.swing.fixture.JTextComponentFixture
import training.commands.kotlin.TaskContext
import training.commands.kotlin.TaskRuntimeContext
import training.commands.kotlin.TaskTestContext
import training.dsl.*
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.*
import training.learn.course.KLesson
import java.awt.event.InputEvent
import java.awt.event.KeyEvent
import javax.swing.*
@@ -15,17 +15,12 @@ import com.intellij.ui.components.JBList
import com.intellij.ui.speedSearch.SpeedSearchSupply
import com.intellij.util.ui.UIUtil
import icons.FeaturesTrainerIcons
import training.commands.kotlin.TaskContext
import training.commands.kotlin.TaskRuntimeContext
import training.commands.kotlin.TaskTestContext
import training.dsl.*
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.LearnBundle
import training.learn.LessonsBundle
import training.learn.course.KLesson
import training.learn.lesson.LessonManager
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonUtil
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.lesson.kimpl.defaultRestoreDelay
import java.awt.event.KeyEvent
import javax.swing.JComponent
import javax.swing.JLabel
@@ -14,14 +14,10 @@ import com.intellij.testGuiFramework.util.Modifier
import com.intellij.testGuiFramework.util.Shortcut
import com.intellij.ui.components.fields.ExtendableTextField
import com.intellij.util.ui.UIUtil
import training.commands.kotlin.TaskRuntimeContext
import training.commands.kotlin.TaskTestContext
import training.dsl.*
import training.learn.LessonsBundle
import training.learn.interfaces.LessonType
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.kimpl.LessonUtil
import training.learn.lesson.kimpl.restoreAfterStateBecomeFalse
import training.learn.course.KLesson
import training.learn.course.LessonType
import java.awt.event.KeyEvent
import javax.swing.JList
@@ -5,11 +5,10 @@ import com.intellij.CommonBundle
import com.intellij.refactoring.RefactoringBundle
import com.intellij.testGuiFramework.impl.button
import com.intellij.ui.UIBundle
import training.commands.kotlin.TaskContext
import training.commands.kotlin.TaskTestContext
import training.dsl.*
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.*
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.course.KLesson
import javax.swing.JButton
import javax.swing.JDialog
@@ -3,9 +3,13 @@ package training.learn.lesson.general.refactorings
import com.intellij.testGuiFramework.impl.jList
import com.intellij.ui.components.JBList
import training.dsl.LessonContext
import training.dsl.LessonSample
import training.dsl.LessonUtil
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.dsl.restoreAfterStateBecomeFalse
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.*
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.course.KLesson
class ExtractVariableFromBubbleLesson(lang: String, private val sample: LessonSample)
: KLesson("Extract variable", LessonsBundle.message("extract.variable.lesson.name"), lang) {
@@ -6,11 +6,10 @@ import com.intellij.refactoring.rename.inplace.InplaceRefactoring
import com.intellij.testGuiFramework.framework.GuiTestUtil
import com.intellij.testGuiFramework.util.Key
import com.intellij.ui.components.JBList
import training.commands.kotlin.TaskContext
import training.commands.kotlin.TaskRuntimeContext
import training.dsl.*
import training.dsl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.*
import training.learn.lesson.kimpl.LessonUtil.restoreIfModifiedOrMoved
import training.learn.course.KLesson
import javax.swing.JList
abstract class RefactoringMenuLessonBase(lessonId: String, languageId: String)
@@ -29,20 +29,18 @@ import com.intellij.xdebugger.impl.breakpoints.XBreakpointUtil
import com.intellij.xdebugger.impl.frame.XDebuggerFramesList
import com.intellij.xdebugger.impl.ui.tree.XDebuggerTree
import org.jetbrains.annotations.Nls
import training.commands.kotlin.TaskContext
import training.commands.kotlin.TaskRuntimeContext
import training.commands.kotlin.TaskTestContext
import training.keymap.KeymapUtil
import training.dsl.*
import training.dsl.LessonUtil.checkExpectedStateOfEditor
import training.dsl.LessonUtil.checkPositionOfEditor
import training.dsl.LessonUtil.highlightBreakpointGutter
import training.dsl.LessonUtil.sampleRestoreNotification
import training.learn.CourseManager
import training.learn.LessonsBundle
import training.learn.course.KLesson
import training.learn.lesson.LessonManager
import training.learn.lesson.kimpl.*
import training.learn.lesson.kimpl.LessonUtil.checkExpectedStateOfEditor
import training.learn.lesson.kimpl.LessonUtil.checkPositionOfEditor
import training.learn.lesson.kimpl.LessonUtil.highlightBreakpointGutter
import training.learn.lesson.kimpl.LessonUtil.sampleRestoreNotification
import training.ui.LearningUiHighlightingManager
import training.ui.LearningUiManager
import training.util.KeymapUtil
import training.util.WeakReferenceDelegator
import training.util.invokeActionForFocusContext
import java.awt.Rectangle
@@ -9,11 +9,9 @@ import com.intellij.testGuiFramework.impl.button
import com.intellij.testGuiFramework.impl.jList
import com.intellij.ui.UIBundle
import com.intellij.ui.components.JBCheckBox
import training.commands.kotlin.TaskContext
import training.commands.kotlin.TaskRuntimeContext
import training.commands.kotlin.TaskTestContext
import training.dsl.*
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.*
import training.learn.course.KLesson
import training.ui.LearningUiHighlightingManager
import java.util.concurrent.CompletableFuture
import javax.swing.JButton
@@ -1,7 +1,7 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.log
import training.learn.interfaces.Lesson
import training.learn.course.Lesson
import java.util.*
class LessonLog(lesson: Lesson) {
@@ -2,10 +2,10 @@
package training.project
import com.intellij.idea.ActionsBundle
import training.dsl.LessonUtil
import training.dsl.dropMnemonic
import training.learn.LearnBundle
import training.learn.LessonsBundle
import training.learn.lesson.kimpl.LessonUtil
import training.learn.lesson.kimpl.dropMnemonic
open class ReadMeCreator {
private val learnName get() = LearnBundle.message("toolwindow.stripe.Learn")
@@ -10,11 +10,10 @@ import com.intellij.openapi.keymap.Keymap
import com.intellij.openapi.keymap.KeymapManager
import com.intellij.openapi.keymap.impl.DefaultKeymapImpl
import com.intellij.util.TimeoutUtil
import training.keymap.KeymapUtil
import training.lang.LangManager
import training.learn.CourseManager
import training.learn.interfaces.Lesson
import training.learn.interfaces.Module
import training.learn.course.Lesson
import training.learn.course.Module
import training.learn.lesson.LessonManager
import training.statistic.FeatureUsageStatisticConsts.ACTION_ID
import training.statistic.FeatureUsageStatisticConsts.COMPLETED_COUNT
@@ -32,6 +31,7 @@ import training.statistic.FeatureUsageStatisticConsts.SHORTCUT_CLICKED
import training.statistic.FeatureUsageStatisticConsts.START
import training.statistic.FeatureUsageStatisticConsts.START_MODULE_ACTION
import training.statistic.FeatureUsageStatisticConsts.TASK_ID
import training.util.KeymapUtil
import java.awt.event.KeyEvent
import java.util.concurrent.ConcurrentHashMap
import javax.swing.JOptionPane
@@ -1,10 +1,9 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.learn.lesson.listeners
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.statistic
import com.intellij.openapi.project.Project
import training.learn.interfaces.Lesson
import training.learn.course.Lesson
import training.learn.lesson.LessonListener
import training.statistic.StatisticBase
class StatisticLessonListener(val project: Project) : LessonListener {
@@ -15,9 +15,9 @@ import com.intellij.ui.awt.RelativePoint
import com.intellij.ui.components.labels.LinkLabel
import com.intellij.util.ui.JBUI
import com.intellij.util.ui.UIUtil
import training.keymap.KeymapUtil
import training.learn.LearnBundle
import training.statistic.StatisticBase
import training.util.KeymapUtil
import training.util.invokeActionForFocusContext
import java.awt.Component
import java.awt.Insets
@@ -11,8 +11,8 @@ import org.jdom.Element
import org.jdom.Text
import org.jdom.input.SAXBuilder
import org.jdom.output.XMLOutputter
import training.keymap.KeymapUtil
import training.learn.CourseManager
import training.util.KeymapUtil
import training.util.openLinkInBrowser
object MessageFactory {
@@ -14,7 +14,7 @@ import org.intellij.lang.annotations.Language
import org.jetbrains.annotations.Nls
import training.learn.CourseManager
import training.learn.LearnBundle
import training.learn.interfaces.Lesson
import training.learn.course.Lesson
import training.learn.lesson.LessonManager
import training.ui.*
import training.util.getNextLessonForCurrent
@@ -15,8 +15,8 @@ import icons.FeaturesTrainerIcons
import org.jetbrains.annotations.NotNull
import training.learn.CourseManager
import training.learn.LearnBundle
import training.learn.interfaces.Lesson
import training.learn.interfaces.Module
import training.learn.course.Lesson
import training.learn.course.Module
import training.learn.lesson.LessonManager
import training.ui.UISettings
import training.util.createBalloon
@@ -16,7 +16,7 @@ import com.intellij.ui.scale.JBUIScale
import icons.FeaturesTrainerIcons.Img.PluginIcon
import training.learn.CourseManager
import training.learn.LearnBundle
import training.learn.interfaces.Module
import training.learn.course.Module
import training.statistic.StatisticBase
import training.util.rigid
import java.awt.event.ActionEvent
@@ -1,5 +1,5 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.keymap
// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package training.util
import com.intellij.openapi.actionSystem.ActionManager
import com.intellij.openapi.actionSystem.KeyboardShortcut
@@ -7,11 +7,11 @@ import com.intellij.openapi.progress.ProgressIndicator
import com.intellij.openapi.progress.runBackgroundableTask
import com.intellij.openapi.project.Project
import org.jetbrains.concurrency.AsyncPromise
import training.commands.kotlin.TaskTestContext
import training.dsl.TaskTestContext
import training.learn.CourseManager
import training.learn.interfaces.Lesson
import training.learn.course.KLesson
import training.learn.course.Lesson
import training.learn.lesson.LessonListener
import training.learn.lesson.kimpl.KLesson
import java.util.concurrent.TimeUnit
import java.util.concurrent.TimeoutException
@@ -25,7 +25,7 @@ import training.lang.LangManager
import training.lang.LangSupport
import training.learn.CourseManager
import training.learn.LearnBundle
import training.learn.interfaces.Lesson
import training.learn.course.Lesson
import training.learn.lesson.LessonManager
import training.learn.lesson.LessonStateManager
import training.ui.LearnToolWindowFactory
@@ -3,7 +3,7 @@ package training.simple
import com.intellij.testFramework.UsefulTestCase
import junit.framework.TestCase
import training.keymap.KeymapUtil
import training.util.KeymapUtil
class DecryptMacShortcutTest : UsefulTestCase() {
fun testSimpleKey() {
@@ -5,7 +5,7 @@ package training.simple
import com.intellij.testFramework.UsefulTestCase
import junit.framework.TestCase
import training.learn.lesson.kimpl.parseLessonSample
import training.dsl.parseLessonSample
class SampleParserTest : UsefulTestCase() {
fun testStartCaretTag1() {
@@ -21,10 +21,10 @@ import com.jetbrains.python.sdk.configuration.PyProjectSdkConfiguration.setReady
import com.jetbrains.python.sdk.configuration.PyProjectVirtualEnvConfiguration
import com.jetbrains.python.sdk.flavors.PythonSdkFlavor
import com.jetbrains.python.statistics.modules
import training.dsl.LessonUtil
import training.lang.AbstractLangSupport
import training.learn.LearnBundle
import training.learn.exceptons.NoSdkException
import training.learn.lesson.kimpl.LessonUtil
import training.project.ProjectUtils
import training.project.ReadMeCreator
import training.util.getFeedbackLink
@@ -18,10 +18,11 @@ import com.jetbrains.python.ift.lesson.refactorings.PythonRefactorMenuLesson
import com.jetbrains.python.ift.lesson.refactorings.PythonRenameLesson
import com.jetbrains.python.ift.lesson.run.PythonDebugLesson
import com.jetbrains.python.ift.lesson.run.PythonRunConfigurationLesson
import training.learn.LearningModule
import training.dsl.LessonUtil
import training.learn.LessonsBundle
import training.learn.course.LearningCourseBase
import training.learn.interfaces.LessonType
import training.learn.course.LearningModule
import training.learn.course.LessonType
import training.learn.lesson.general.*
import training.learn.lesson.general.assistance.CodeFormatLesson
import training.learn.lesson.general.assistance.ParameterInfoLesson
@@ -29,7 +30,6 @@ import training.learn.lesson.general.assistance.QuickPopupsLesson
import training.learn.lesson.general.navigation.FindInFilesLesson
import training.learn.lesson.general.refactorings.ExtractMethodCocktailSortLesson
import training.learn.lesson.general.refactorings.ExtractVariableFromBubbleLesson
import training.learn.lesson.kimpl.LessonUtil
import training.util.switchOnExperimentalLessons
class PythonLearningCourse : LearningCourseBase(PythonLanguage.INSTANCE.id) {
@@ -3,9 +3,9 @@ package com.jetbrains.python.ift.lesson.assistance
import com.jetbrains.python.PyPsiBundle
import com.jetbrains.python.ift.PythonLessonsBundle
import training.commands.kotlin.TaskContext
import training.dsl.LessonSample
import training.dsl.TaskContext
import training.learn.lesson.general.assistance.EditorCodingAssistanceLesson
import training.learn.lesson.kimpl.LessonSample
class PythonEditorCodingAssistanceLesson(lang: String, sample: LessonSample) :
EditorCodingAssistanceLesson(lang, sample) {
@@ -1,9 +1,9 @@
package com.jetbrains.python.ift.lesson.basic
import com.jetbrains.python.PyPsiBundle
import training.dsl.LessonSample
import training.dsl.parseLessonSample
import training.learn.lesson.general.ContextActionsLesson
import training.learn.lesson.kimpl.LessonSample
import training.learn.lesson.kimpl.parseLessonSample
class PythonContextActionsLesson : ContextActionsLesson("Python") {
override val sample: LessonSample = parseLessonSample("""

Some files were not shown because too many files have changed in this diff Show More