import training.learn.interfaces.Module
import training.learn.lesson.kimpl.KLesson
import training.learn.lesson.kimpl.LessonContext
+import training.learn.lesson.kimpl.closeAllFindTabs
abstract class DeclarationAndUsagesLesson(module: Module, lang: String)
: KLesson("Declaration and usages", LessonsBundle.message("declaration.and.usages.lesson.name"), module, lang) {
}
task("FindUsages") {
+ before {
+ closeAllFindTabs()
+ }
text(LessonsBundle.message("declaration.and.usages.find.usages", action(it)))
triggerByUiComponentAndHighlight { ui: BaseLabel ->
import com.intellij.openapi.util.text.TextWithMnemonic
import com.intellij.openapi.wm.ToolWindow
import com.intellij.openapi.wm.ex.ToolWindowManagerListener
+import com.intellij.ui.content.Content
+import com.intellij.usageView.UsageViewContentManager
import com.intellij.util.messages.Topic
import com.intellij.xdebugger.XDebuggerManager
import training.commands.kotlin.TaskContext
}
}
+fun TaskRuntimeContext.closeAllFindTabs() {
+ val usageViewManager = UsageViewContentManager.getInstance(project)
+ var selectedContent: Content?
+ while (usageViewManager.selectedContent.also { selectedContent = it } != null) {
+ usageViewManager.closeContent(selectedContent!!)
+ }
+}
+
fun String.dropMnemonic(): String {
return TextWithMnemonic.parse(this).dropMnemonic(true).text
}
\ No newline at end of file