diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/ClearScratchAction.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/ClearScratchAction.kt index f564f3ea11c..4e4b4c0bb8a 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/ClearScratchAction.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/ClearScratchAction.kt @@ -18,17 +18,17 @@ package org.jetbrains.kotlin.idea.scratch.actions import com.intellij.icons.AllIcons import com.intellij.openapi.actionSystem.AnActionEvent -import com.intellij.openapi.actionSystem.CommonDataKeys import org.jetbrains.kotlin.idea.KotlinBundle import org.jetbrains.kotlin.idea.scratch.ScratchFileLanguageProvider +import org.jetbrains.kotlin.idea.scratch.getScratchPanelFromSelectedEditor class ClearScratchAction : ScratchAction( KotlinBundle.message("scratch.clear.button"), AllIcons.Actions.GC ) { override fun actionPerformed(e: AnActionEvent) { - val editor = e.getData(CommonDataKeys.EDITOR) ?: return - val scratchFile = getScratchPanel(editor)?.scratchFile ?: return + val project = e.project ?: return + val scratchFile = getScratchPanelFromSelectedEditor(project)?.scratchFile ?: return val psiFile = scratchFile.getPsiFile() ?: return ScratchFileLanguageProvider.get(psiFile.language)?.getOutputHandler()?.clear(scratchFile) diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/RunScratchAction.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/RunScratchAction.kt index 42d391c4904..c71db5eecdb 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/RunScratchAction.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/RunScratchAction.kt @@ -18,7 +18,6 @@ package org.jetbrains.kotlin.idea.scratch.actions import com.intellij.icons.AllIcons import com.intellij.openapi.actionSystem.AnActionEvent -import com.intellij.openapi.actionSystem.CommonDataKeys import com.intellij.openapi.keymap.KeymapManager import com.intellij.openapi.keymap.KeymapUtil import com.intellij.openapi.project.DumbService @@ -26,6 +25,7 @@ import com.intellij.task.ProjectTaskManager import org.jetbrains.kotlin.idea.KotlinBundle import org.jetbrains.kotlin.idea.scratch.ScratchFile import org.jetbrains.kotlin.idea.scratch.ScratchFileLanguageProvider +import org.jetbrains.kotlin.idea.scratch.getScratchPanelFromSelectedEditor import org.jetbrains.kotlin.idea.scratch.output.ScratchOutputHandlerAdapter import org.jetbrains.kotlin.idea.scratch.printDebugMessage import org.jetbrains.kotlin.idea.scratch.LOG as log @@ -43,8 +43,7 @@ class RunScratchAction : ScratchAction( override fun actionPerformed(e: AnActionEvent) { val project = e.project ?: return - val editor = e.getData(CommonDataKeys.EDITOR) ?: return - val scratchPanel = getScratchPanel(editor) ?: return + val scratchPanel = getScratchPanelFromSelectedEditor(project) ?: return val scratchFile = scratchPanel.scratchFile val psiFile = scratchFile.getPsiFile() ?: return diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/ScratchAction.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/ScratchAction.kt index f6542bc05e6..cc0be7679ce 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/ScratchAction.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/ScratchAction.kt @@ -7,25 +7,12 @@ package org.jetbrains.kotlin.idea.scratch.actions import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent -import com.intellij.openapi.editor.Editor -import com.intellij.openapi.fileEditor.FileEditorManager -import com.intellij.openapi.fileEditor.impl.text.TextEditorProvider -import org.jetbrains.kotlin.idea.scratch.getScratchPanel -import org.jetbrains.kotlin.idea.scratch.ui.ScratchTopPanel +import org.jetbrains.kotlin.idea.scratch.getScratchPanelFromSelectedEditor import javax.swing.Icon abstract class ScratchAction(message: String, icon: Icon) : AnAction(message, message, icon) { override fun update(e: AnActionEvent) { - val presentation = e.presentation - - val project = e.project ?: return - val editor = FileEditorManager.getInstance(project).selectedTextEditor ?: return - val scratchPanel = getScratchPanel(editor) - - presentation.isVisible = scratchPanel != null - } - - protected fun getScratchPanel(editor: Editor): ScratchTopPanel? { - return TextEditorProvider.getInstance().getTextEditor(editor).getScratchPanel() + val scratchPanel = e.project?.let { getScratchPanelFromSelectedEditor(it) } + e.presentation.isVisible = scratchPanel != null } } \ No newline at end of file diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/scratchUtils.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/scratchUtils.kt index 5d40851e1d4..0b08a6da958 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/scratchUtils.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/scratchUtils.kt @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.idea.scratch import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.fileEditor.FileEditorManager import com.intellij.openapi.fileEditor.TextEditor +import com.intellij.openapi.fileEditor.impl.text.TextEditorProvider import com.intellij.openapi.project.Project import com.intellij.openapi.util.Disposer import com.intellij.openapi.util.Key @@ -38,6 +39,11 @@ fun getAllEditorsWithScratchPanel(project: Project): List