diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactEditorImpl.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactEditorImpl.java index 233c3d24aa5d..3c3f136c16b2 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactEditorImpl.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactEditorImpl.java @@ -189,7 +189,9 @@ public class ArtifactEditorImpl implements ArtifactEditorEx, UiDataProvider { public JComponent createMainComponent() { myLayoutTreeComponent.initTree(); - DataManager.registerDataProvider(myMainPanel, (EdtNoGetDataProvider)this::uiDataSnapshot); + DataManager.registerDataProvider(myMainPanel, (EdtNoGetDataProvider)sink -> { + DataSink.uiDataSnapshot(sink, ArtifactEditorImpl.this); + }); myErrorPanelPlace.add(myValidationManager.getMainErrorPanel(), BorderLayout.CENTER); diff --git a/platform/lang-impl/api-dump-unreviewed.txt b/platform/lang-impl/api-dump-unreviewed.txt index c74090047794..2a1dbe91c1db 100644 --- a/platform/lang-impl/api-dump-unreviewed.txt +++ b/platform/lang-impl/api-dump-unreviewed.txt @@ -10801,7 +10801,6 @@ c:com.intellij.execution.console.IdeConsoleRootType c:com.intellij.execution.console.LanguageConsoleImpl - com.intellij.execution.impl.ConsoleViewImpl - com.intellij.execution.console.LanguageConsoleView -- com.intellij.openapi.actionSystem.DataProvider - sf:Companion:com.intellij.execution.console.LanguageConsoleImpl$Companion - (com.intellij.execution.console.LanguageConsoleImpl$Helper):V - (com.intellij.openapi.project.Project,java.lang.String,com.intellij.lang.Language):V @@ -10845,8 +10844,10 @@ f:com.intellij.execution.console.LanguageConsoleImpl$Companion - f:printWithHighlighting(com.intellij.execution.console.LanguageConsoleView,com.intellij.openapi.editor.Editor,com.intellij.openapi.util.TextRange):java.lang.String f:com.intellij.execution.console.LanguageConsoleImpl$ConsoleEditorsPanel - javax.swing.JPanel +- com.intellij.openapi.actionSystem.UiDataProvider - (com.intellij.execution.console.LanguageConsoleImpl):V - f:getConsole():com.intellij.execution.console.LanguageConsoleImpl +- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V c:com.intellij.execution.console.LanguageConsoleImpl$Helper - file:com.intellij.psi.PsiFile - f:project:com.intellij.openapi.project.Project @@ -10854,7 +10855,6 @@ c:com.intellij.execution.console.LanguageConsoleImpl$Helper - f:virtualFile:com.intellij.openapi.vfs.VirtualFile - (com.intellij.openapi.project.Project,com.intellij.openapi.vfs.VirtualFile):V - f:getDocument():com.intellij.openapi.editor.Document -- pf:getEditorData(com.intellij.openapi.editor.ex.EditorEx,java.lang.String):java.lang.Object - getFile():com.intellij.psi.PsiFile - f:getFileSafe():com.intellij.psi.PsiFile - f:setLanguage(com.intellij.lang.Language):V diff --git a/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/GotoDeclarationAction.java b/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/GotoDeclarationAction.java index e277b514d30c..8aa75c915543 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/GotoDeclarationAction.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/navigation/actions/GotoDeclarationAction.java @@ -72,14 +72,8 @@ public class GotoDeclarationAction extends BaseCodeInsightAction implements Dumb private static @NotNull AnActionEvent getEventWithReporter(@NotNull AnActionEvent e) { GotoDeclarationReporter reporter = new GotoDeclarationFUSReporter(); - CustomizedDataContext context = CustomizedDataContext.create(e.getDataContext(), new DataProvider() { - @Override - public @Nullable Object getData(@NotNull String dataId) { - if (GO_TO_DECLARATION_REPORTER_DATA_KEY.is(dataId)) { - return reporter; - } - return null; - } + DataContext context = CustomizedDataContext.withSnapshot(e.getDataContext(), sink -> { + sink.set(GO_TO_DECLARATION_REPORTER_DATA_KEY, reporter); }); return e.withDataContext(context); } diff --git a/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.kt b/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.kt index 4535af7ad872..370d429b45ec 100644 --- a/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.kt +++ b/platform/lang-impl/src/com/intellij/execution/console/LanguageConsoleImpl.kt @@ -5,12 +5,12 @@ import com.intellij.codeInsight.daemon.impl.HighlightInfo import com.intellij.execution.impl.ConsoleViewImpl import com.intellij.execution.impl.ConsoleViewUtil import com.intellij.execution.ui.ConsoleViewContentType -import com.intellij.ide.DataManager import com.intellij.ide.highlighter.HighlighterFactory import com.intellij.injected.editor.EditorWindow import com.intellij.lang.Language import com.intellij.lang.annotation.HighlightSeverity -import com.intellij.openapi.actionSystem.DataProvider +import com.intellij.openapi.actionSystem.DataSink +import com.intellij.openapi.actionSystem.UiDataProvider import com.intellij.openapi.actionSystem.ex.ActionUtil.copyRegisteredShortcuts import com.intellij.openapi.application.ReadAction import com.intellij.openapi.command.undo.UndoUtil @@ -32,7 +32,6 @@ import com.intellij.openapi.editor.markup.MarkupModel import com.intellij.openapi.fileEditor.FileDocumentManager import com.intellij.openapi.fileEditor.FileEditorManager import com.intellij.openapi.fileEditor.OpenFileDescriptor -import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx.Companion.getInstanceEx import com.intellij.openapi.project.Project import com.intellij.openapi.util.Disposer import com.intellij.openapi.util.NlsContexts @@ -70,7 +69,7 @@ import kotlin.math.min * In case of REPL consider to use [LanguageConsoleBuilder] */ open class LanguageConsoleImpl(private val myHelper: Helper) : ConsoleViewImpl( - myHelper.project, GlobalSearchScope.allScope(myHelper.project), true, true), LanguageConsoleView, DataProvider { + myHelper.project, GlobalSearchScope.allScope(myHelper.project), true, true), LanguageConsoleView { private val consoleExecutionEditor = ConsoleExecutionEditor(myHelper) override val historyViewer: EditorEx private val myPanel: JPanel = ConsoleEditorsPanel(this) @@ -197,7 +196,6 @@ open class LanguageConsoleImpl(private val myHelper: Helper) : ConsoleViewImpl( myPanel.add(consoleExecutionEditor.component) myPanel.add(myScrollBar) myPanel.background = JBColor.lazy { consoleExecutionEditor.editor.backgroundColor } - DataManager.registerDataProvider(myPanel, this) } private fun setupComponents() { @@ -428,24 +426,16 @@ open class LanguageConsoleImpl(private val myHelper: Helper) : ConsoleViewImpl( editor.setHorizontalScrollbarVisible(true) editor.setVerticalScrollbarVisible(true) - - DataManager.registerDataProvider(editor.component) { dataId -> getEditorData(editor, dataId) } } val fileSafe: PsiFile get() = if (file == null || !file!!.isValid) getFile().also { file = it } else file!! - - protected fun getEditorData(editor: EditorEx, dataId: String): Any? { - if (OpenFileDescriptor.NAVIGATE_IN_EDITOR.`is`(dataId)) { - return editor - } - else if (project.isInitialized) { - val caret = editor.caretModel.currentCaret - return getInstanceEx(project).getData(dataId, editor, caret) - } - return null - } } - class ConsoleEditorsPanel(val console: LanguageConsoleImpl) : JPanel() + class ConsoleEditorsPanel(val console: LanguageConsoleImpl) : JPanel(), UiDataProvider { + override fun uiDataSnapshot(sink: DataSink) { + DataSink.uiDataSnapshot(sink, console) + sink[OpenFileDescriptor.NAVIGATE_IN_EDITOR] = console.consoleExecutionEditor.editor + } + } } diff --git a/platform/platform-api/src/com/intellij/ui/components/JBList.java b/platform/platform-api/src/com/intellij/ui/components/JBList.java index cb9f6f39c7f9..8361a6e77020 100644 --- a/platform/platform-api/src/com/intellij/ui/components/JBList.java +++ b/platform/platform-api/src/com/intellij/ui/components/JBList.java @@ -371,6 +371,8 @@ public class JBList extends JList implements ComponentWithEmptyText, Compo setCellRenderer(new SelectionAwareListCellRenderer<>(fun)); } + /** @deprecated Implement {@link com.intellij.openapi.actionSystem.UiDataProvider} instead */ + @Deprecated(forRemoval = true) public void setDataProvider(@NotNull DataProvider provider) { DataManager.registerDataProvider(this, provider); } diff --git a/platform/xdebugger-impl/api-dump-unreviewed.txt b/platform/xdebugger-impl/api-dump-unreviewed.txt index cf33c28d532b..849bd254679d 100644 --- a/platform/xdebugger-impl/api-dump-unreviewed.txt +++ b/platform/xdebugger-impl/api-dump-unreviewed.txt @@ -1247,6 +1247,7 @@ com.intellij.xdebugger.impl.frame.XDebuggerFramesList$ItemWithSeparatorAbove - setWithSeparator(Z):V f:com.intellij.xdebugger.impl.frame.XDebuggerThreadsList - com.intellij.ui.components.JBList +- com.intellij.openapi.actionSystem.UiDataProvider - sf:Companion:com.intellij.xdebugger.impl.frame.XDebuggerThreadsList$Companion - (javax.swing.ListCellRenderer):V - f:clear():V @@ -1255,6 +1256,7 @@ f:com.intellij.xdebugger.impl.frame.XDebuggerThreadsList - f:getStackUnderMouse():com.intellij.xdebugger.impl.frame.StackInfo - locationToIndex(java.awt.Point):I - setModel(javax.swing.ListModel):V +- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V f:com.intellij.xdebugger.impl.frame.XDebuggerThreadsList$Companion - f:create(javax.swing.ListCellRenderer):com.intellij.xdebugger.impl.frame.XDebuggerThreadsList - f:createDefault():com.intellij.xdebugger.impl.frame.XDebuggerThreadsList diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/XDebuggerThreadsList.kt b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/XDebuggerThreadsList.kt index da70b8905e51..8109d1d34445 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/XDebuggerThreadsList.kt +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/XDebuggerThreadsList.kt @@ -2,6 +2,8 @@ package com.intellij.xdebugger.impl.frame import com.intellij.openapi.actionSystem.DataKey +import com.intellij.openapi.actionSystem.DataSink +import com.intellij.openapi.actionSystem.UiDataProvider import com.intellij.openapi.ui.popup.ListItemDescriptor import com.intellij.ui.CollectionListModel import com.intellij.ui.ColoredListCellRenderer @@ -24,9 +26,8 @@ import javax.swing.* import javax.swing.plaf.FontUIResource -class XDebuggerThreadsList(private val renderer: ListCellRenderer) : JBList( - CollectionListModel() -) { +class XDebuggerThreadsList(private val renderer: ListCellRenderer +) : JBList(CollectionListModel()), UiDataProvider { private var mySelectedFrame: StackInfo? = null var stackUnderMouse: StackInfo? = null @@ -56,12 +57,13 @@ class XDebuggerThreadsList(private val renderer: ListCellRenderer) : if (font != null) { setFont(FontUIResource(font.name, font.style, font.size)) } - setDataProvider { - return@setDataProvider if (THREADS_LIST.`is`(it)) this@XDebuggerThreadsList else null - } } - private fun doInit() { + override fun uiDataSnapshot(sink: DataSink) { + sink[THREADS_LIST] = this + } + + private fun doInit() { selectionModel.selectionMode = ListSelectionModel.SINGLE_SELECTION cellRenderer = renderer selectionModel.addListSelectionListener { e ->