migrate getData to uiDataSnapshot: platform

GitOrigin-RevId: d61a393ffadb50ccadae880d30a75d362b2e2258
This commit is contained in:
Gregory.Shrago
2024-07-31 03:51:52 +04:00
committed by intellij-monorepo-bot
parent f969f84de1
commit 7cad79a9ca
71 changed files with 624 additions and 950 deletions

View File

@@ -15,6 +15,7 @@ import com.intellij.debugger.memory.utils.AndroidUtil;
import com.intellij.debugger.memory.utils.LowestPriorityCommand;
import com.intellij.debugger.requests.ClassPrepareRequestor;
import com.intellij.openapi.actionSystem.DataKey;
import com.intellij.openapi.actionSystem.DataSink;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.Disposer;
@@ -247,18 +248,16 @@ public class ClassesFilteredView extends ClassesFilteredViewBase {
}
@Override
public Object getData(@NotNull String dataId) {
if (NEW_INSTANCES_PROVIDER_KEY.is(dataId)) {
TypeInfo selectedClass = getTable().getSelectedClass();
if (selectedClass != null) {
TrackerForNewInstances strategy = getStrategy(selectedClass);
if (strategy != null && strategy.isReady()) {
List<ObjectReference> newInstances = strategy.getNewInstances();
return (InstancesProvider)limit -> ContainerUtil.map(newInstances, JavaReferenceInfo::new);
}
}
public void uiDataSnapshot(@NotNull DataSink sink) {
TypeInfo selectedClass = getTable().getSelectedClass();
if (selectedClass == null) {
return;
}
TrackerForNewInstances strategy = getStrategy(selectedClass);
if (strategy != null && strategy.isReady()) {
List<ObjectReference> newInstances = strategy.getNewInstances();
sink.set(NEW_INSTANCES_PROVIDER_KEY, limit -> ContainerUtil.map(newInstances, JavaReferenceInfo::new));
}
return null;
}
@Nullable

View File

@@ -4,6 +4,7 @@ package com.intellij.collaboration.ui.codereview.timeline.comment
import com.intellij.collaboration.ui.CollaborationToolsUIUtil
import com.intellij.collaboration.ui.codereview.CodeReviewChatItemUIUtil
import com.intellij.collaboration.ui.icon.IconsProvider
import com.intellij.openapi.actionSystem.DataSink
import com.intellij.openapi.actionSystem.PlatformCoreDataKeys
import com.intellij.openapi.editor.Document
import com.intellij.openapi.editor.actions.IncrementalFindAction
@@ -148,11 +149,10 @@ private class CommentTextField(
}
}
override fun getData(dataId: String): Any? {
if (PlatformCoreDataKeys.FILE_EDITOR.`is`(dataId)) {
return editor?.let { TextEditorProvider.getInstance().getTextEditor(it) } ?: super.getData(dataId)
}
return super.getData(dataId)
override fun uiDataSnapshot(sink: DataSink) {
super.uiDataSnapshot(sink)
val editor = editor ?: return
sink[PlatformCoreDataKeys.FILE_EDITOR] = TextEditorProvider.getInstance().getTextEditor(editor)
}
}

View File

@@ -109,7 +109,11 @@ public abstract class DataManager {
*/
@ApiStatus.Obsolete
public static void registerDataProvider(@NotNull JComponent component, @NotNull DataProvider provider) {
if (component instanceof DataProvider) {
if (component instanceof UiDataProvider) {
LOG.warn(String.format("Registering CLIENT_PROPERTY_DATA_PROVIDER on component implementing UiDataProvider. " +
"The key will be ignored. Component: %s", component), new Throwable());
}
else if (component instanceof DataProvider) {
LOG.warn(String.format("Registering CLIENT_PROPERTY_DATA_PROVIDER on component implementing DataProvider. " +
"The key will be ignored. Component: %s", component), new Throwable());
}
@@ -121,6 +125,8 @@ public abstract class DataManager {
component.putClientProperty(CLIENT_PROPERTY_DATA_PROVIDER, provider);
}
/** Most components now implement {@link UiDataProvider} */
@ApiStatus.Obsolete
public static @Nullable DataProvider getDataProvider(@NotNull JComponent component) {
return (DataProvider)component.getClientProperty(CLIENT_PROPERTY_DATA_PROVIDER);
}

View File

@@ -3767,7 +3767,7 @@ c:com.intellij.terminal.JBTerminalSystemSettingsProviderBase
c:com.intellij.terminal.JBTerminalWidget
- com.jediterm.terminal.ui.JediTermWidget
- com.intellij.openapi.Disposable
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiCompatibleDataProvider
- sf:SELECTED_TEXT_DATA_KEY:com.intellij.openapi.actionSystem.DataKey
- sf:TERMINAL_DATA_KEY:com.intellij.openapi.actionSystem.DataKey
- <init>(com.intellij.openapi.project.Project,I,I,com.intellij.terminal.JBTerminalSystemSettingsProviderBase,com.intellij.terminal.TerminalExecutionConsole,com.intellij.openapi.Disposable):V
@@ -3782,7 +3782,6 @@ c:com.intellij.terminal.JBTerminalWidget
- dispose():V
- p:executeCommand(java.lang.String):V
- p:getComponentGraphics(java.awt.Graphics):java.awt.Graphics
- getData(java.lang.String):java.lang.Object
- getDefaultSessionName(com.jediterm.terminal.TtyConnector):java.lang.String
- getFontSize():I
- getFontSize2D():F
@@ -3803,6 +3802,7 @@ c:com.intellij.terminal.JBTerminalWidget
- p:setShellCommand(java.util.List):V
- setTtyConnector(com.jediterm.terminal.TtyConnector):V
- start(com.jediterm.terminal.TtyConnector):V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
- writePlainMessage(java.lang.String):V
com.intellij.terminal.JBTerminalWidgetListener
- canMoveTabLeft():Z

View File

@@ -6,8 +6,8 @@ import com.intellij.execution.ui.layout.actions.CloseViewAction;
import com.intellij.execution.ui.layout.actions.MinimizeViewAction;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.ActionGroup;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.DataSink;
import com.intellij.openapi.actionSystem.UiDataProvider;
import com.intellij.openapi.ui.popup.JBPopup;
import com.intellij.openapi.util.ActionCallback;
import com.intellij.openapi.util.DimensionService;
@@ -23,7 +23,6 @@ import com.intellij.ui.tabs.impl.*;
import com.intellij.util.SmartList;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -213,7 +212,7 @@ public final class GridCellImpl implements GridCell {
return myTabs.getComponent().isAncestorOf(c);
}
private static final class ProviderWrapper extends NonOpaquePanel implements DataProvider {
private static final class ProviderWrapper extends NonOpaquePanel implements UiDataProvider {
Content myContent;
ViewContext myContext;
@@ -225,14 +224,9 @@ public final class GridCellImpl implements GridCell {
}
@Override
public @Nullable Object getData(final @NotNull @NonNls String dataId) {
if (ViewContext.CONTENT_KEY.is(dataId)) {
return new Content[]{myContent};
}
else if (ViewContext.CONTEXT_KEY.is(dataId)) {
return myContext;
}
return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(ViewContext.CONTENT_KEY, new Content[]{myContent});
sink.set(ViewContext.CONTEXT_KEY, myContext);
}
}

View File

@@ -3,10 +3,7 @@ package com.intellij.terminal;
import com.intellij.execution.filters.*;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.ActionGroup;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.DataKey;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.diagnostic.Logger;
@@ -52,7 +49,7 @@ import java.awt.event.MouseEvent;
import java.io.IOException;
import java.util.List;
public class JBTerminalWidget extends JediTermWidget implements Disposable, DataProvider {
public class JBTerminalWidget extends JediTermWidget implements Disposable, UiCompatibleDataProvider {
private static final Logger LOG = Logger.getInstance(JBTerminalWidget.class);
public static final DataKey<JBTerminalWidget> TERMINAL_DATA_KEY = DataKey.create(JBTerminalWidget.class.getName());
@@ -294,14 +291,9 @@ public class JBTerminalWidget extends JediTermWidget implements Disposable, Data
}
@Override
public @Nullable Object getData(@NotNull String dataId) {
if (SELECTED_TEXT_DATA_KEY.is(dataId)) {
return getSelectedText();
}
if (TERMINAL_DATA_KEY.is(dataId)) {
return this;
}
return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(SELECTED_TEXT_DATA_KEY, getSelectedText());
sink.set(TERMINAL_DATA_KEY, this);
}
static @Nullable String getSelectedText(@NotNull TerminalPanel terminalPanel) {

View File

@@ -406,11 +406,9 @@ public class TerminalExecutionConsole implements ConsoleView, ObservableConsoleV
}
@Override
public @Nullable Object getData(@NotNull String dataId) {
if (LangDataKeys.CONSOLE_VIEW.is(dataId)) {
return TerminalExecutionConsole.this;
}
return super.getData(dataId);
public void uiDataSnapshot(@NotNull DataSink sink) {
super.uiDataSnapshot(sink);
sink.set(LangDataKeys.CONSOLE_VIEW, TerminalExecutionConsole.this);
}
}

View File

@@ -304,7 +304,7 @@ com.intellij.openapi.externalSystem.dependency.analyzer.DependencyAnalyzerProjec
- a:getModule():com.intellij.openapi.module.Module
- a:getTitle():java.lang.String
com.intellij.openapi.externalSystem.dependency.analyzer.DependencyAnalyzerView
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiCompatibleDataProvider
- sf:ACTION_PLACE:java.lang.String
- sf:Companion:com.intellij.openapi.externalSystem.dependency.analyzer.DependencyAnalyzerView$Companion
- a:setSelectedDependency(com.intellij.openapi.module.Module,com.intellij.openapi.externalSystem.dependency.analyzer.DependencyAnalyzerDependency$Data):V
@@ -312,6 +312,7 @@ com.intellij.openapi.externalSystem.dependency.analyzer.DependencyAnalyzerView
- a:setSelectedDependency(com.intellij.openapi.module.Module,java.util.List):V
- a:setSelectedDependency(com.intellij.openapi.module.Module,java.util.List,java.lang.String):V
- a:setSelectedExternalProject(com.intellij.openapi.module.Module):V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
f:com.intellij.openapi.externalSystem.dependency.analyzer.DependencyAnalyzerView$Companion
- sf:ACTION_PLACE:java.lang.String
- f:getDEPENDENCIES():com.intellij.openapi.actionSystem.DataKey

View File

@@ -2,14 +2,15 @@
package com.intellij.openapi.externalSystem.dependency.analyzer
import com.intellij.openapi.actionSystem.DataKey
import com.intellij.openapi.actionSystem.DataProvider
import com.intellij.openapi.actionSystem.DataSink
import com.intellij.openapi.actionSystem.UiCompatibleDataProvider
import com.intellij.openapi.module.Module
import com.intellij.openapi.externalSystem.dependency.analyzer.DependencyAnalyzerDependency as Dependency
/**
* Represents dependency analyzer view model.
*/
interface DependencyAnalyzerView : DataProvider {
interface DependencyAnalyzerView : UiCompatibleDataProvider {
/**
* Sets selected external project in analyzer project combobox.
@@ -42,6 +43,9 @@ interface DependencyAnalyzerView : DataProvider {
*/
fun setSelectedDependency(module: Module, path: List<Dependency.Data>, scope: String)
override fun uiDataSnapshot(sink: DataSink) {
}
companion object {
const val ACTION_PLACE: String = "ExternalSystem.DependencyAnalyzerView.ActionPlace"
val VIEW: DataKey<DependencyAnalyzerView> = DataKey.create("ExternalSystem.DependencyAnalyzerView.View")

View File

@@ -1633,7 +1633,6 @@ c:com.intellij.openapi.externalSystem.view.ExternalProjectsViewAdapter
f:com.intellij.openapi.externalSystem.view.ExternalProjectsViewImpl
- com.intellij.openapi.ui.SimpleToolWindowPanel
- com.intellij.openapi.Disposable
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.externalSystem.view.ExternalProjectsView
- sf:LOG:com.intellij.openapi.diagnostic.Logger
- <init>(com.intellij.openapi.project.Project,com.intellij.openapi.wm.ex.ToolWindowEx,com.intellij.openapi.externalSystem.model.ProjectSystemId):V

View File

@@ -4,6 +4,7 @@ package com.intellij.openapi.externalSystem.dependency.analyzer
import com.intellij.icons.AllIcons
import com.intellij.openapi.Disposable
import com.intellij.openapi.actionSystem.CommonDataKeys
import com.intellij.openapi.actionSystem.DataSink
import com.intellij.openapi.actionSystem.PlatformCoreDataKeys
import com.intellij.openapi.application.invokeLater
import com.intellij.openapi.application.runInEdt
@@ -143,14 +144,11 @@ class DependencyAnalyzerViewImpl(
return dependencyModel.flatMap { it.variances }
}
override fun getData(dataId: String): Any? {
return when (dataId) {
DependencyAnalyzerView.VIEW.name -> this
CommonDataKeys.PROJECT.name -> project
ExternalSystemDataKeys.EXTERNAL_SYSTEM_ID.name -> systemId
PlatformCoreDataKeys.MODULE.name -> externalProject?.module
else -> null
}
override fun uiDataSnapshot(sink: DataSink) {
sink[DependencyAnalyzerView.VIEW] = this
sink[CommonDataKeys.PROJECT] = project
sink[ExternalSystemDataKeys.EXTERNAL_SYSTEM_ID] = systemId
sink[PlatformCoreDataKeys.MODULE] = externalProject?.module
}
private fun updateViewModel() {
@@ -368,11 +366,21 @@ class DependencyAnalyzerViewImpl(
.bindVisible(reloadNotificationProperty)
val dependencyTitle = label(ExternalSystemBundle.message("external.system.dependency.analyzer.resolved.title"))
val dependencyList = DependencyList(dependencyListModel, showDependencyGroupIdProperty, this)
val dependencyList = object : DependencyList(dependencyListModel, showDependencyGroupIdProperty) {
override fun uiDataSnapshot(sink: DataSink) {
super.uiDataSnapshot(sink)
DataSink.uiDataSnapshot(sink, this@DependencyAnalyzerViewImpl)
}
}
.bindEmptyText(dependencyEmptyTextProperty)
.bindDependency(dependencyProperty)
.bindEnabled(!dependencyLoadingProperty)
val dependencyTree = DependencyTree(dependencyTreeModel, showDependencyGroupIdProperty, this)
val dependencyTree = object : DependencyTree(dependencyTreeModel, showDependencyGroupIdProperty) {
override fun uiDataSnapshot(sink: DataSink) {
super.uiDataSnapshot(sink)
DataSink.uiDataSnapshot(sink, this@DependencyAnalyzerViewImpl)
}
}
.bindEmptyText(dependencyEmptyTextProperty)
.bindDependency(dependencyProperty)
.bindEnabled(!dependencyLoadingProperty)
@@ -395,7 +403,12 @@ class DependencyAnalyzerViewImpl(
.bindEnabled(showDependencyTreeProperty and !dependencyLoadingProperty)
val usagesTitle = label(usagesTitleProperty)
val usagesTree = UsagesTree(usagesTreeModel, showDependencyGroupIdProperty, this)
val usagesTree = object : UsagesTree(usagesTreeModel, showDependencyGroupIdProperty) {
override fun uiDataSnapshot(sink: DataSink) {
super.uiDataSnapshot(sink)
DataSink.uiDataSnapshot(sink, this@DependencyAnalyzerViewImpl)
}
}
.apply { emptyText.text = "" }
.bindEnabled(!dependencyLoadingProperty)
val expandUsagesTreeButton = expandTreeAction(usagesTree)

View File

@@ -2,16 +2,16 @@
package com.intellij.openapi.externalSystem.dependency.analyzer.util
import com.intellij.icons.AllIcons
import com.intellij.openapi.actionSystem.DataProvider
import com.intellij.openapi.actionSystem.DataSink
import com.intellij.openapi.actionSystem.UiDataProvider
import com.intellij.openapi.application.invokeLater
import com.intellij.openapi.externalSystem.dependency.analyzer.DependencyAnalyzerDependency as Dependency
import com.intellij.openapi.externalSystem.dependency.analyzer.DependencyAnalyzerView
import com.intellij.openapi.externalSystem.util.ExternalSystemBundle
import com.intellij.openapi.observable.properties.*
import com.intellij.openapi.observable.util.bind
import com.intellij.openapi.observable.util.transform
import com.intellij.openapi.ui.asSequence
import com.intellij.openapi.observable.util.whenTreeChanged
import com.intellij.openapi.ui.asSequence
import com.intellij.openapi.util.NlsSafe
import com.intellij.ui.*
import com.intellij.ui.SimpleTextAttributes.GRAYED_ATTRIBUTES
@@ -25,6 +25,7 @@ import javax.swing.JTree
import javax.swing.ListModel
import javax.swing.tree.DefaultMutableTreeNode
import javax.swing.tree.TreeModel
import com.intellij.openapi.externalSystem.dependency.analyzer.DependencyAnalyzerDependency as Dependency
internal fun Dependency.Data.getDisplayText(showGroupId: Boolean): @NlsSafe String =
@@ -53,8 +54,7 @@ private fun SimpleColoredComponent.customizeCellRenderer(group: DependencyGroup,
internal abstract class AbstractDependencyList(
model: ListModel<DependencyGroup>,
private val dataProvider: DataProvider
) : JBList<DependencyGroup>(model), DataProvider {
) : JBList<DependencyGroup>(model), UiDataProvider {
private val dependencyProperty = AtomicProperty<Dependency?>(null)
private val dependencyGroupProperty = AtomicProperty<DependencyGroup?>(null)
@@ -63,12 +63,9 @@ internal abstract class AbstractDependencyList(
dependencyProperty.bind(property)
}
override fun getData(dataId: String): Any? {
return when (dataId) {
DependencyAnalyzerView.DEPENDENCY.name -> dependencyProperty.get()
DependencyAnalyzerView.DEPENDENCIES.name -> dependencyGroupProperty.get()
else -> dataProvider.getData(dataId)
}
override fun uiDataSnapshot(sink: DataSink) {
sink[DependencyAnalyzerView.DEPENDENCY] = dependencyProperty.get()
sink[DependencyAnalyzerView.DEPENDENCIES] = dependencyGroupProperty.get()?.variances
}
init {
@@ -87,8 +84,7 @@ internal abstract class AbstractDependencyList(
internal abstract class AbstractDependencyTree(
model: TreeModel,
private val dataProvider: DataProvider
) : SimpleTree(model), DataProvider {
) : SimpleTree(model), UiDataProvider {
private val dependencyProperty = AtomicProperty<Dependency?>(null)
private val dependencyGroupProperty = AtomicProperty<DependencyGroup?>(null)
@@ -97,12 +93,9 @@ internal abstract class AbstractDependencyTree(
dependencyProperty.bind(property)
}
override fun getData(dataId: String): Any? {
return when (dataId) {
DependencyAnalyzerView.DEPENDENCY.name -> dependencyProperty.get()
DependencyAnalyzerView.DEPENDENCIES.name -> dependencyGroupProperty.get()
else -> dataProvider.getData(dataId)
}
override fun uiDataSnapshot(sink: DataSink) {
sink[DependencyAnalyzerView.DEPENDENCY] = dependencyProperty.get()
sink[DependencyAnalyzerView.DEPENDENCIES] = dependencyGroupProperty.get()?.variances
}
init {
@@ -118,11 +111,10 @@ internal abstract class AbstractDependencyTree(
}
}
internal class DependencyList(
internal open class DependencyList(
model: ListModel<DependencyGroup>,
showGroupIdProperty: ObservableProperty<Boolean>,
dataProvider: DataProvider
) : AbstractDependencyList(model, dataProvider) {
) : AbstractDependencyList(model) {
init {
ListUiUtil.Selection.installSelectionOnRightClick(this)
PopupHandler.installPopupMenu(this, "ExternalSystem.DependencyAnalyzer.DependencyListGroup", DependencyAnalyzerView.ACTION_PLACE)
@@ -130,22 +122,20 @@ internal class DependencyList(
}
}
internal class DependencyTree(
internal open class DependencyTree(
model: TreeModel,
showGroupIdProperty: ObservableProperty<Boolean>,
dataProvider: DataProvider
) : AbstractDependencyTree(model, dataProvider) {
) : AbstractDependencyTree(model) {
init {
PopupHandler.installPopupMenu(this, "ExternalSystem.DependencyAnalyzer.DependencyTreeGroup", DependencyAnalyzerView.ACTION_PLACE)
setCellRenderer(DependencyTreeRenderer(showGroupIdProperty))
}
}
internal class UsagesTree(
internal open class UsagesTree(
model: TreeModel,
showGroupIdProperty: ObservableProperty<Boolean>,
dataProvider: DataProvider
) : AbstractDependencyTree(model, dataProvider) {
) : AbstractDependencyTree(model) {
init {
PopupHandler.installPopupMenu(this, "ExternalSystem.DependencyAnalyzer.UsagesTreeGroup", DependencyAnalyzerView.ACTION_PLACE)
setCellRenderer(UsagesTreeRenderer(showGroupIdProperty))

View File

@@ -65,7 +65,7 @@ import java.util.*;
/**
* @author Vladislav.Soroka
*/
public final class ExternalProjectsViewImpl extends SimpleToolWindowPanel implements DataProvider, ExternalProjectsView, Disposable {
public final class ExternalProjectsViewImpl extends SimpleToolWindowPanel implements ExternalProjectsView, Disposable {
public static final Logger LOG = Logger.getInstance(ExternalProjectsViewImpl.class);
private final @NotNull Project myProject;

View File

@@ -136,6 +136,8 @@ public class DataManagerImpl extends DataManager {
}
}
/** @deprecated Most components now implement {@link UiDataProvider} */
@Deprecated
public static @Nullable DataProvider getDataProviderEx(@Nullable Object component) {
DataProvider dataProvider = null;
if (component instanceof DataProvider) {

View File

@@ -170,7 +170,7 @@ public class EnvVariablesTable extends ListTableWithButtons<EnvironmentVariable>
}
}
private final class CopyPasteProviderPanel extends JPanel implements DataProvider, CopyProvider, PasteProvider {
private final class CopyPasteProviderPanel extends JPanel implements UiDataProvider, CopyProvider, PasteProvider {
CopyPasteProviderPanel(JComponent component) {
super(new GridLayout(1, 1));
add(component);
@@ -182,11 +182,9 @@ public class EnvVariablesTable extends ListTableWithButtons<EnvironmentVariable>
}
@Override
public @Nullable Object getData(@NotNull String dataId) {
if (PlatformDataKeys.COPY_PROVIDER.is(dataId) || PlatformDataKeys.PASTE_PROVIDER.is(dataId)) {
return this;
}
return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(PlatformDataKeys.COPY_PROVIDER, this);
sink.set(PlatformDataKeys.PASTE_PROVIDER, this);
}
@Override

View File

@@ -1291,11 +1291,11 @@ f:com.intellij.application.options.codeStyle.arrangement.group.ArrangementGroupi
- setRules(java.util.List):V
f:com.intellij.application.options.codeStyle.arrangement.group.ArrangementGroupingRulesPanel
- javax.swing.JPanel
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiDataProvider
- <init>(com.intellij.psi.codeStyle.arrangement.std.ArrangementStandardSettingsManager,com.intellij.application.options.codeStyle.arrangement.color.ArrangementColorsProvider):V
- getData(java.lang.String):java.lang.Object
- getRules():java.util.List
- setRules(java.util.List):V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
f:com.intellij.application.options.codeStyle.arrangement.match.ArrangementEditorComponent
- com.intellij.application.options.codeStyle.arrangement.animation.ArrangementAnimationManager$Callback
- com.intellij.application.options.codeStyle.arrangement.ui.ArrangementEditorAware
@@ -1360,14 +1360,14 @@ f:com.intellij.application.options.codeStyle.arrangement.match.ArrangementMatchi
- setValueAt(java.lang.Object,I,I):V
f:com.intellij.application.options.codeStyle.arrangement.match.ArrangementMatchingRulesPanel
- javax.swing.JPanel
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiDataProvider
- <init>(com.intellij.lang.Language,com.intellij.psi.codeStyle.arrangement.std.ArrangementStandardSettingsManager,com.intellij.application.options.codeStyle.arrangement.color.ArrangementColorsProvider):V
- getData(java.lang.String):java.lang.Object
- getRulesAliases():java.util.Collection
- getSections():java.util.List
- hideEditor():V
- setRulesAliases(java.util.Collection):V
- setSections(java.util.List):V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
c:com.intellij.application.options.codeStyle.arrangement.match.ArrangementMatchingRulesValidator
- p:myRulesModel:com.intellij.application.options.codeStyle.arrangement.match.ArrangementMatchingRulesModel
- <init>(com.intellij.application.options.codeStyle.arrangement.match.ArrangementMatchingRulesModel):V
@@ -1429,11 +1429,11 @@ f:com.intellij.application.options.codeStyle.arrangement.match.tokens.Arrangemen
- getDisplayName():java.lang.String
f:com.intellij.application.options.codeStyle.arrangement.match.tokens.ArrangementRuleAliasesPanel
- javax.swing.JPanel
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiDataProvider
- <init>(com.intellij.psi.codeStyle.arrangement.std.ArrangementStandardSettingsManager,com.intellij.application.options.codeStyle.arrangement.color.ArrangementColorsProvider):V
- getData(java.lang.String):java.lang.Object
- getRuleSequences():java.util.List
- setRuleSequences(java.util.Collection):V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
com.intellij.application.options.codeStyle.arrangement.ui.ArrangementEditorAware
- a:getComponent():javax.swing.JComponent
com.intellij.application.options.codeStyle.arrangement.ui.ArrangementRepresentationAware
@@ -4585,7 +4585,7 @@ com.intellij.codeInsight.documentation.DocumentationActionProvider
c:com.intellij.codeInsight.documentation.DocumentationComponent
- javax.swing.JPanel
- com.intellij.openapi.Disposable
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiCompatibleDataProvider
- com.intellij.ui.WidthBasedLayout
- sf:COLOR_KEY:com.intellij.openapi.editor.colors.ColorKey
- sf:SECTION_COLOR:java.awt.Color
@@ -4595,7 +4595,6 @@ c:com.intellij.codeInsight.documentation.DocumentationComponent
- s:createAndFetch(com.intellij.openapi.project.Project,com.intellij.psi.PsiElement,com.intellij.openapi.Disposable):javax.swing.JComponent
- dispose():V
- getComponent():javax.swing.JComponent
- getData(java.lang.String):java.lang.Object
- getDecoratedText():java.lang.String
- getElement():com.intellij.psi.PsiElement
- getFontSizeAction():com.intellij.openapi.actionSystem.AnAction
@@ -4622,6 +4621,7 @@ c:com.intellij.codeInsight.documentation.DocumentationComponent
- p:showHint():V
- p:showHint(java.awt.Rectangle,java.lang.String):V
- startWait():V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
pf:com.intellij.codeInsight.documentation.DocumentationComponent$BackAction
- com.intellij.openapi.actionSystem.AnAction
- com.intellij.codeInsight.hint.HintManagerImpl$ActionToIgnore
@@ -9991,7 +9991,7 @@ f:com.intellij.codeInspection.ui.InspectionResultsView
- javax.swing.JPanel
- com.intellij.ide.OccurenceNavigator
- com.intellij.openapi.Disposable
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiCompatibleDataProvider
- sf:DATA_KEY:com.intellij.openapi.actionSystem.DataKey
- sf:HELP_ID:java.lang.String
- <init>(com.intellij.codeInspection.ex.GlobalInspectionContextImpl,com.intellij.codeInspection.ex.InspectionRVContentProvider):V
@@ -10001,7 +10001,6 @@ f:com.intellij.codeInspection.ui.InspectionResultsView
- dispatchTreeUpdate():V
- dispose():V
- getCurrentProfile():com.intellij.codeInspection.ex.InspectionProfileImpl
- getData(java.lang.String):java.lang.Object
- getGlobalInspectionContext():com.intellij.codeInspection.ex.GlobalInspectionContextImpl
- getNextOccurenceActionName():java.lang.String
- getPreviousOccurenceActionName():java.lang.String
@@ -10028,6 +10027,7 @@ f:com.intellij.codeInspection.ui.InspectionResultsView
- setUpdating(Z):V
- s:showPopup(com.intellij.openapi.actionSystem.AnActionEvent,com.intellij.openapi.ui.popup.JBPopup):V
- syncRightPanel():V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
- update():V
- updateResults(java.util.Collection):V
f:com.intellij.codeInspection.ui.InspectionResultsViewComparator
@@ -11258,7 +11258,7 @@ c:com.intellij.find.EditorSearchSession
- com.intellij.find.SearchReplaceComponent$Listener
- com.intellij.find.SearchSession
- com.intellij.find.impl.livePreview.SearchResults$SearchResultsListener
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiCompatibleDataProvider
- com.intellij.openapi.editor.event.SelectionListener
- sf:SESSION_KEY:com.intellij.openapi.actionSystem.DataKey
- <init>(com.intellij.openapi.editor.Editor,com.intellij.openapi.project.Project):V
@@ -11274,7 +11274,6 @@ c:com.intellij.find.EditorSearchSession
- p:disposeLivePreview():V
- s:get(com.intellij.openapi.editor.Editor):com.intellij.find.EditorSearchSession
- getComponent():com.intellij.find.SearchReplaceComponent
- getData(java.lang.String):java.lang.Object
- getEditor():com.intellij.openapi.editor.Editor
- s:getEmptyText(com.intellij.find.FindModel,com.intellij.openapi.editor.Editor):java.lang.String
- getFindModel():com.intellij.find.FindModel
@@ -11299,6 +11298,7 @@ c:com.intellij.find.EditorSearchSession
- s:start(com.intellij.openapi.editor.Editor,com.intellij.find.FindModel,com.intellij.openapi.project.Project):com.intellij.find.EditorSearchSession
- s:start(com.intellij.openapi.editor.Editor,com.intellij.openapi.project.Project):com.intellij.find.EditorSearchSession
- toggleSearchReplaceMode():V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
- s:updateEmptyText(com.intellij.find.SearchReplaceComponent,com.intellij.find.FindModel,com.intellij.openapi.editor.Editor):V
- s:updateUIWithFindModel(com.intellij.find.SearchReplaceComponent,com.intellij.find.FindModel,com.intellij.openapi.editor.Editor):V
f:com.intellij.find.FindAllAction
@@ -11334,13 +11334,12 @@ com.intellij.find.FindUtil$ReplaceDelegate
- a:shouldReplace(com.intellij.openapi.util.TextRange,java.lang.String):Z
f:com.intellij.find.SearchReplaceComponent
- com.intellij.openapi.editor.impl.EditorHeaderComponent
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiDataProvider
- sf:RIGHT_PANEL_WEST_OFFSET:I
- addListener(com.intellij.find.SearchReplaceComponent$Listener):V
- addTextToRecent(javax.swing.text.JTextComponent):V
- s:buildFor(com.intellij.openapi.project.Project,javax.swing.JComponent):com.intellij.find.SearchReplaceComponent$Builder
- close():V
- getData(java.lang.String):java.lang.Object
- getProject():com.intellij.openapi.project.Project
- getReplaceTextComponent():javax.swing.text.JTextComponent
- getSearchTextComponent():javax.swing.text.JTextComponent
@@ -11353,6 +11352,7 @@ f:com.intellij.find.SearchReplaceComponent
- setNotFoundBackground():V
- setRegularBackground():V
- setStatusText(java.lang.String):V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
- update(java.lang.String,java.lang.String,Z,Z):V
- updateActions():V
- updateUI():V
@@ -11518,11 +11518,11 @@ f:com.intellij.find.actions.ShowUsagesParameters
- withUsages(I):com.intellij.find.actions.ShowUsagesParameters
f:com.intellij.find.actions.ShowUsagesTable
- com.intellij.ui.table.JBTable
- com.intellij.openapi.actionSystem.DataProvider
- getData(java.lang.String):java.lang.Object
- com.intellij.openapi.actionSystem.UiDataProvider
- getRowHeight():I
- getScrollableTracksViewportWidth():Z
- isFullLineNode(com.intellij.usages.impl.UsageNode):Z
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
f:com.intellij.find.actions.ShowUsagesUtilsKt
- sf:getEditorFor(com.intellij.usages.Usage):com.intellij.openapi.editor.Editor
- sf:navigateAndHint(com.intellij.openapi.project.Project,com.intellij.usages.Usage,java.lang.String,com.intellij.find.actions.ShowUsagesParameters,com.intellij.find.actions.ShowUsagesActionHandler,java.lang.Runnable):V
@@ -14157,7 +14157,7 @@ f:com.intellij.ide.actions.searcheverywhere.SearchEverywhereRemoteSupportService
f:com.intellij.ide.actions.searcheverywhere.SearchEverywhereUI
- com.intellij.ide.actions.BigPopupUI
- com.intellij.ide.util.gotoByName.QuickSearchComponent
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiDataProvider
- sf:MULTIPLE_CONTRIBUTORS_ELEMENTS_LIMIT:I
- sf:SEARCH_EVENTS:com.intellij.util.messages.Topic
- sf:SEARCH_EVERYWHERE_SEARCH_FILED_KEY:java.lang.String
@@ -14171,7 +14171,6 @@ f:com.intellij.ide.actions.searcheverywhere.SearchEverywhereUI
- createList():com.intellij.ui.components.JBList
- dispose():V
- findElementsForPattern(java.lang.String):java.util.concurrent.Future
- getData(java.lang.String):java.lang.Object
- getFoundElementsInfo():java.util.List
- getSelectedTabID():java.lang.String
- getSelectionIdentity():java.lang.Object
@@ -14181,6 +14180,7 @@ f:com.intellij.ide.actions.searcheverywhere.SearchEverywhereUI
- sendStatisticsAndClose():V
- switchToTab(java.lang.String):V
- toggleEverywhereFilter():V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
- unregisterHint():V
com.intellij.ide.actions.searcheverywhere.SearchListener
- s:combine(java.util.Collection):com.intellij.ide.actions.searcheverywhere.SearchListener
@@ -15189,7 +15189,6 @@ a:com.intellij.ide.hierarchy.HierarchyBrowserBase
- com.intellij.openapi.ui.SimpleToolWindowPanel
- com.intellij.ide.hierarchy.HierarchyBrowser
- com.intellij.openapi.Disposable
- com.intellij.openapi.actionSystem.DataProvider
- p:myContent:com.intellij.ui.content.Content
- pf:myProject:com.intellij.openapi.project.Project
- p:<init>(com.intellij.openapi.project.Project):V
@@ -18003,19 +18002,19 @@ a:com.intellij.ide.util.gotoByName.ChooseByNameBase
f:com.intellij.ide.util.gotoByName.ChooseByNameBase$JPanelProvider
- javax.swing.JPanel
- com.intellij.ide.util.gotoByName.QuickSearchComponent
- com.intellij.openapi.actionSystem.DataProvider
- getData(java.lang.String):java.lang.Object
- com.intellij.openapi.actionSystem.UiDataProvider
- getHint():com.intellij.openapi.ui.popup.JBPopup
- hideHint():V
- registerHint(com.intellij.openapi.ui.popup.JBPopup):V
- requestFocus():V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
- unregisterHint():V
pf:com.intellij.ide.util.gotoByName.ChooseByNameBase$MyTextField
- javax.swing.JTextField
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiDataProvider
- com.intellij.ui.popup.PopupOwner
- getBestPopupPosition():java.awt.Point
- getData(java.lang.String):java.lang.Object
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
f:com.intellij.ide.util.gotoByName.ChooseByNameFactoryImpl
- com.intellij.ide.util.gotoByName.ChooseByNameFactory
- <init>(com.intellij.openapi.project.Project):V
@@ -22105,14 +22104,14 @@ a:com.intellij.packageDependencies.actions.DependenciesHandlerBase
f:com.intellij.packageDependencies.ui.DependenciesPanel
- javax.swing.JPanel
- com.intellij.openapi.Disposable
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiDataProvider
- <init>(com.intellij.openapi.project.Project,com.intellij.packageDependencies.DependenciesBuilder):V
- <init>(com.intellij.openapi.project.Project,java.util.List,java.util.Set):V
- dispose():V
- getData(java.lang.String):java.lang.Object
- getLeftTree():javax.swing.JTree
- getRightTree():javax.swing.JTree
- setContent(com.intellij.ui.content.Content):V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
f:com.intellij.packageDependencies.ui.DependenciesPanel$DependencyPanelSettings
- SCOPE_TYPE:java.lang.String
- UI_COMPACT_EMPTY_MIDDLE_PACKAGES:Z
@@ -22353,16 +22352,16 @@ f:com.intellij.packageDependencies.ui.TreeModel
a:com.intellij.packageDependencies.ui.UsagesPanel
- javax.swing.JPanel
- com.intellij.openapi.Disposable
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiDataProvider
- psf:LOG:com.intellij.openapi.diagnostic.Logger
- pf:myAlarm:com.intellij.util.Alarm
- <init>(com.intellij.openapi.project.Project):V
- dispose():V
- a:getCodeUsagesString():java.lang.String
- getData(java.lang.String):java.lang.Object
- a:getInitialPositionText():java.lang.String
- setToInitialPosition():V
- p:showUsages(com.intellij.psi.PsiElement[],com.intellij.usageView.UsageInfo[]):V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
f:com.intellij.patterns.compiler.PatternClassBean
- alias:java.lang.String
- className:java.lang.String
@@ -26113,7 +26112,7 @@ a:com.intellij.refactoring.ui.AbstractMemberSelectionPanel
- a:getTable():com.intellij.refactoring.ui.AbstractMemberSelectionTable
a:com.intellij.refactoring.ui.AbstractMemberSelectionTable
- com.intellij.ui.table.JBTable
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiCompatibleDataProvider
- psf:ABSTRACT_COLUMN:I
- psf:CHECKED_COLUMN:I
- psf:DISPLAY_NAME_COLUMN:I
@@ -26132,7 +26131,6 @@ a:com.intellij.refactoring.ui.AbstractMemberSelectionTable
- fireExternalDataChange():V
- p:fireMemberInfoChange(java.util.Collection):V
- pa:getAbstractColumnValue(com.intellij.refactoring.classMembers.MemberInfoBase):java.lang.Object
- getData(java.lang.String):java.lang.Object
- ps:getDisplayNameColumnHeader():java.lang.String
- p:getMemberIcon(com.intellij.refactoring.classMembers.MemberInfoBase,I):javax.swing.Icon
- getMemberInfoModel():com.intellij.refactoring.classMembers.MemberInfoModel
@@ -26146,6 +26144,7 @@ a:com.intellij.refactoring.ui.AbstractMemberSelectionTable
- setMemberInfos(java.util.Collection):V
- p:setVisibilityIcon(com.intellij.refactoring.classMembers.MemberInfoBase,com.intellij.ui.RowIcon):V
- p:setVisibilityIcon(com.intellij.refactoring.classMembers.MemberInfoBase,com.intellij.ui.icons.RowIcon):V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
pf:com.intellij.refactoring.ui.AbstractMemberSelectionTable$MyTableModel
- javax.swing.table.AbstractTableModel
- <init>(com.intellij.refactoring.ui.AbstractMemberSelectionTable):V
@@ -26526,17 +26525,17 @@ c:com.intellij.slicer.SliceNode
a:com.intellij.slicer.SlicePanel
- javax.swing.JPanel
- com.intellij.openapi.Disposable
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiDataProvider
- p:<init>(com.intellij.openapi.project.Project,Z,com.intellij.slicer.SliceNode,Z,com.intellij.openapi.wm.ToolWindow):V
- p:close():V
- dispose():V
- getData(java.lang.String):java.lang.Object
- a:isAutoScroll():Z
- a:isPreview():Z
- isToShowAutoScrollButton():Z
- isToShowPreviewButton():Z
- a:setAutoScroll(Z):V
- a:setPreview(Z):V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
f:com.intellij.slicer.SliceRootNode
- com.intellij.slicer.SliceNode
- <init>(com.intellij.openapi.project.Project,com.intellij.slicer.DuplicateMap,com.intellij.slicer.SliceUsage):V
@@ -27404,15 +27403,15 @@ com.intellij.unscramble.AnalyzeStacktraceUtil$ConsoleFactory
f:com.intellij.unscramble.AnalyzeStacktraceUtil$StacktraceEditorPanel
- javax.swing.JPanel
- com.intellij.openapi.Disposable
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiDataProvider
- <init>(com.intellij.openapi.project.Project,com.intellij.openapi.editor.Editor):V
- dispose():V
- getData(java.lang.String):java.lang.Object
- getEditor():com.intellij.openapi.editor.Editor
- getEditorComponent():javax.swing.JComponent
- getText():java.lang.String
- pasteTextFromClipboard():V
- setText(java.lang.String):V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
f:com.intellij.usageView.impl.SelectInEditorHandler
- <init>():V
- s:installKeyListener(javax.swing.JComponent):V

View File

@@ -4,12 +4,12 @@ package com.intellij.application.options.codeStyle.arrangement.group;
import com.intellij.application.options.codeStyle.arrangement.ArrangementConstants;
import com.intellij.application.options.codeStyle.arrangement.color.ArrangementColorsProvider;
import com.intellij.application.options.codeStyle.arrangement.util.TitleWithToolbar;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.DataSink;
import com.intellij.openapi.actionSystem.UiDataProvider;
import com.intellij.openapi.application.ApplicationBundle;
import com.intellij.psi.codeStyle.arrangement.group.ArrangementGroupingRule;
import com.intellij.psi.codeStyle.arrangement.std.ArrangementStandardSettingsManager;
import com.intellij.util.ui.GridBag;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -17,7 +17,7 @@ import javax.swing.*;
import java.awt.*;
import java.util.List;
public final class ArrangementGroupingRulesPanel extends JPanel implements DataProvider {
public final class ArrangementGroupingRulesPanel extends JPanel implements UiDataProvider {
@NotNull private final ArrangementGroupingRulesControl myControl;
@@ -48,12 +48,8 @@ public final class ArrangementGroupingRulesPanel extends JPanel implements DataP
return myControl.getRules();
}
@Nullable
@Override
public Object getData(@NotNull @NonNls String dataId) {
if (ArrangementGroupingRulesControl.KEY.is(dataId)) {
return myControl;
}
return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(ArrangementGroupingRulesControl.KEY, myControl);
}
}

View File

@@ -6,7 +6,8 @@ import com.intellij.application.options.codeStyle.arrangement.color.ArrangementC
import com.intellij.application.options.codeStyle.arrangement.util.TitleWithToolbar;
import com.intellij.ide.ui.customization.CustomizationUtil;
import com.intellij.lang.Language;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.DataSink;
import com.intellij.openapi.actionSystem.UiDataProvider;
import com.intellij.openapi.application.ApplicationBundle;
import com.intellij.psi.codeStyle.arrangement.match.ArrangementSectionRule;
import com.intellij.psi.codeStyle.arrangement.std.ArrangementStandardSettingsManager;
@@ -16,7 +17,6 @@ import com.intellij.ui.components.JBScrollPane;
import com.intellij.util.ui.GridBag;
import com.intellij.util.ui.JBUI;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -25,7 +25,7 @@ import java.awt.*;
import java.util.Collection;
import java.util.List;
public final class ArrangementMatchingRulesPanel extends JPanel implements DataProvider {
public final class ArrangementMatchingRulesPanel extends JPanel implements UiDataProvider {
@NotNull private final ArrangementSectionRulesControl myControl;
@@ -103,12 +103,8 @@ public final class ArrangementMatchingRulesPanel extends JPanel implements DataP
myControl.hideEditor();
}
@Nullable
@Override
public Object getData(@NotNull @NonNls String dataId) {
if (ArrangementSectionRulesControl.KEY.is(dataId)) {
return myControl;
}
return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(ArrangementSectionRulesControl.KEY, myControl);
}
}

View File

@@ -6,13 +6,13 @@ import com.intellij.application.options.codeStyle.arrangement.color.ArrangementC
import com.intellij.application.options.codeStyle.arrangement.match.ArrangementMatchingRulesControl;
import com.intellij.application.options.codeStyle.arrangement.util.TitleWithToolbar;
import com.intellij.ide.ui.customization.CustomizationUtil;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.DataSink;
import com.intellij.openapi.actionSystem.UiDataProvider;
import com.intellij.openapi.application.ApplicationBundle;
import com.intellij.psi.codeStyle.arrangement.match.StdArrangementMatchRule;
import com.intellij.psi.codeStyle.arrangement.std.ArrangementStandardSettingsManager;
import com.intellij.ui.components.JBScrollPane;
import com.intellij.util.ui.GridBag;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -24,7 +24,7 @@ import java.util.List;
/**
* @author Svetlana.Zemlyanskaya
*/
public final class ArrangementRuleAliasesPanel extends JPanel implements DataProvider {
public final class ArrangementRuleAliasesPanel extends JPanel implements UiDataProvider {
@NotNull private final ArrangementRuleAliasControl myControl;
public ArrangementRuleAliasesPanel(@NotNull ArrangementStandardSettingsManager settingsManager,
@@ -77,12 +77,8 @@ public final class ArrangementRuleAliasesPanel extends JPanel implements DataPro
myControl.setRuleSequences(rules);
}
@Nullable
@Override
public Object getData(@NotNull @NonNls String dataId) {
if (ArrangementRuleAliasControl.KEY.is(dataId)) {
return myControl;
}
return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(ArrangementRuleAliasControl.KEY, myControl);
}
}

View File

@@ -62,7 +62,6 @@ import com.intellij.util.ui.JBDimension;
import com.intellij.util.ui.UIUtil;
import com.intellij.util.ui.accessibility.ScreenReader;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -80,7 +79,7 @@ import java.util.List;
* @deprecated Unused in v2 implementation. Unsupported: use at own risk.
*/
@Deprecated(forRemoval = true)
public class DocumentationComponent extends JPanel implements Disposable, DataProvider, WidthBasedLayout {
public class DocumentationComponent extends JPanel implements Disposable, UiCompatibleDataProvider, WidthBasedLayout {
private static final Logger LOG = Logger.getInstance(DocumentationComponent.class);
static final DataProvider HELP_DATA_PROVIDER =
dataId -> PlatformCoreDataKeys.HELP_ID.is(dataId)
@@ -356,15 +355,12 @@ public class DocumentationComponent extends JPanel implements Disposable, DataPr
}
@Override
public Object getData(@NotNull @NonNls String dataId) {
if (DocumentationManager.SELECTED_QUICK_DOC_TEXT.is(dataId)) {
// Javadocs often contain &nbsp; symbols (non-breakable white space). We don't want to copy them as is and replace
// with raw white spaces. See IDEA-86633 for more details.
String selectedText = myEditorPane.getSelectedText();
return selectedText == null ? null : selectedText.replace((char)160, ' ');
}
return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
// Javadocs often contain &nbsp; symbols (non-breakable white space). We don't want to copy them as is and replace
// with raw white spaces. See IDEA-86633 for more details.
String selectedText = myEditorPane.getSelectedText();
sink.set(DocumentationManager.SELECTED_QUICK_DOC_TEXT,
selectedText == null ? null : selectedText.replace((char)160, ' '));
}
@NotNull

View File

@@ -5,10 +5,7 @@ import com.intellij.codeInsight.template.LiveTemplateContextService;
import com.intellij.ide.CopyProvider;
import com.intellij.ide.DeleteProvider;
import com.intellij.ide.PasteProvider;
import com.intellij.openapi.actionSystem.ActionUpdateThread;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.ide.CopyPasteManager;
import com.intellij.openapi.util.JDOMUtil;
import com.intellij.openapi.util.TextRange;
@@ -18,7 +15,6 @@ import com.intellij.ui.CheckedTreeNode;
import com.intellij.ui.SpeedSearchComparator;
import com.intellij.ui.TreeSpeedSearch;
import org.jdom.Element;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -29,7 +25,7 @@ import java.awt.datatransfer.StringSelection;
import java.util.Collections;
import java.util.Set;
class LiveTemplateTree extends CheckboxTree implements DataProvider, CopyProvider, PasteProvider, DeleteProvider {
class LiveTemplateTree extends CheckboxTree implements UiDataProvider, CopyProvider, PasteProvider, DeleteProvider {
private final TemplateListPanel myConfigurable;
LiveTemplateTree(final CheckboxTreeCellRenderer renderer, final CheckedTreeNode root, TemplateListPanel configurable) {
@@ -65,15 +61,11 @@ class LiveTemplateTree extends CheckboxTree implements DataProvider, CopyProvide
}).setComparator(new SubstringSpeedSearchComparator());
}
@Nullable
@Override
public Object getData(@NotNull @NonNls String dataId) {
if (PlatformDataKeys.COPY_PROVIDER.is(dataId) ||
PlatformDataKeys.PASTE_PROVIDER.is(dataId) ||
PlatformDataKeys.DELETE_ELEMENT_PROVIDER.is(dataId)) {
return this;
}
return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(PlatformDataKeys.COPY_PROVIDER, this);
sink.set(PlatformDataKeys.PASTE_PROVIDER, this);
sink.set(PlatformDataKeys.DELETE_ELEMENT_PROVIDER, this);
}
@Override

View File

@@ -75,7 +75,7 @@ import java.util.*;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
public final class InspectionResultsView extends JPanel implements Disposable, DataProvider, OccurenceNavigator {
public final class InspectionResultsView extends JPanel implements Disposable, UiCompatibleDataProvider, OccurenceNavigator {
private static final Logger LOG = Logger.getInstance(InspectionResultsView.class);
public static final DataKey<InspectionResultsView> DATA_KEY = DataKey.create("inspectionView");
@@ -714,88 +714,63 @@ public final class InspectionResultsView extends JPanel implements Disposable, D
}
@Override
public Object getData(@NotNull String dataId) {
if (PlatformCoreDataKeys.HELP_ID.is(dataId)) {
return HELP_ID;
}
if (DATA_KEY.is(dataId)) {
return this;
}
if (ExclusionHandler.EXCLUSION_HANDLER.is(dataId)) {
return myExclusionHandler;
}
if (PlatformCoreDataKeys.SELECTED_ITEM.is(dataId)) {
TreePath[] paths = myTree.getSelectionPaths();
if (paths == null || paths.length == 0) return null;
return paths[0].getLastPathComponent();
}
if (PlatformCoreDataKeys.SELECTED_ITEMS.is(dataId)) {
TreePath[] paths = myTree.getSelectionPaths();
if (paths == null || paths.length == 0) return null;
return ContainerUtil.map2Array(paths, p -> p.getLastPathComponent());
}
if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
TreePath[] paths = myTree.getSelectionPaths();
if (paths == null || paths.length == 0) return null;
return (DataProvider)slowId -> getSlowData(slowId, paths);
}
return null;
}
public void uiDataSnapshot(@NotNull DataSink sink) {
TreePath[] paths = myTree.getSelectionPaths();
sink.set(PlatformCoreDataKeys.HELP_ID, HELP_ID);
sink.set(DATA_KEY, this);
sink.set(ExclusionHandler.EXCLUSION_HANDLER, myExclusionHandler);
private @Nullable Object getSlowData(@NotNull String dataId, TreePath @NotNull [] paths) {
if (paths.length > 1) {
if (PlatformCoreDataKeys.PSI_ELEMENT_ARRAY.is(dataId)) {
RefEntity[] refElements = myTree.getElementsFromSelection(paths);
List<PsiElement> psiElements = new ArrayList<>();
for (RefEntity refElement : refElements) {
PsiElement psiElement = refElement instanceof RefElement ? ((RefElement)refElement).getPsiElement() : null;
if (psiElement != null && psiElement.isValid()) {
psiElements.add(psiElement);
}
if (paths == null || paths.length == 0) return;
sink.set(PlatformCoreDataKeys.SELECTED_ITEM,
paths[0].getLastPathComponent());
sink.set(PlatformCoreDataKeys.SELECTED_ITEMS,
ContainerUtil.map2Array(paths, p -> p.getLastPathComponent()));
sink.lazy(PlatformCoreDataKeys.PSI_ELEMENT_ARRAY, () -> {
RefEntity[] refElements = myTree.getElementsFromSelection(paths);
List<PsiElement> psiElements = new ArrayList<>();
for (RefEntity refElement : refElements) {
PsiElement psiElement = refElement instanceof RefElement ? ((RefElement)refElement).getPsiElement() : null;
if (psiElement != null && psiElement.isValid()) {
psiElements.add(psiElement);
}
return PsiUtilCore.toPsiElementArray(psiElements);
}
return null;
}
return PsiUtilCore.toPsiElementArray(psiElements);
});
TreePath path = paths[0];
InspectionTreeNode selectedNode = (InspectionTreeNode)path.getLastPathComponent();
if (!CommonDataKeys.NAVIGATABLE.is(dataId) && !CommonDataKeys.PSI_ELEMENT.is(dataId)) {
return null;
}
if (selectedNode instanceof RefElementNode refElementNode) {
RefEntity refElement = refElementNode.getElement();
if (refElement == null || !refElement.isValid()) return null;
final RefEntity item = refElement.getRefManager().getRefinedElement(refElement);
if (!item.isValid()) return null;
PsiElement psiElement = item instanceof RefElement ? ((RefElement)item).getPsiElement() : null;
if (psiElement == null) return null;
if (CommonDataKeys.NAVIGATABLE.is(dataId)) {
return getSelectedNavigatable(null, psiElement);
}
else if (CommonDataKeys.PSI_ELEMENT.is(dataId)) {
return psiElement.isValid() ? psiElement : null;
}
sink.lazy(CommonDataKeys.NAVIGATABLE, () -> {
PsiElement psi = getPsiElement(refElementNode);
return getSelectedNavigatable(null, psi);
});
sink.lazy(CommonDataKeys.PSI_ELEMENT, () -> {
PsiElement psi = getPsiElement(refElementNode);
return psi != null && psi.isValid() ? psi : null;
});
}
else if (selectedNode instanceof ProblemDescriptionNode) {
if (CommonDataKeys.NAVIGATABLE.is(dataId)) {
Navigatable navigatable = getSelectedNavigatable(((ProblemDescriptionNode)selectedNode).getDescriptor());
else if (selectedNode instanceof ProblemDescriptionNode problemNode) {
sink.lazy(CommonDataKeys.NAVIGATABLE, () -> {
Navigatable navigatable = getSelectedNavigatable(problemNode.getDescriptor());
return navigatable == null
? InspectionResultsViewUtil.getNavigatableForInvalidNode((ProblemDescriptionNode)selectedNode)
? InspectionResultsViewUtil.getNavigatableForInvalidNode(problemNode)
: navigatable;
}
if (CommonDataKeys.PSI_ELEMENT.is(dataId)) {
});
sink.lazy(CommonDataKeys.PSI_ELEMENT, () -> {
RefEntity item = ((ProblemDescriptionNode)selectedNode).getElement();
return item instanceof RefElement ? ((RefElement)item).getPsiElement() : null;
}
});
}
return null;
}
private static @Nullable PsiElement getPsiElement(@NotNull RefElementNode refElementNode) {
RefEntity refElement = refElementNode.getElement();
if (refElement == null || !refElement.isValid()) return null;
RefEntity item = refElement.getRefManager().getRefinedElement(refElement);
return item instanceof RefElement o && item.isValid() ? o.getPsiElement() : null;
}
public @NlsContexts.TabTitle String getViewTitle() {
@@ -819,14 +794,15 @@ public final class InspectionResultsView extends JPanel implements Disposable, D
@Nullable
static Navigatable getSelectedNavigatable(final CommonProblemDescriptor descriptor) {
return getSelectedNavigatable(descriptor,
descriptor instanceof ProblemDescriptor ? ((ProblemDescriptor)descriptor).getPsiElement() : null);
return getSelectedNavigatable(
descriptor, descriptor instanceof ProblemDescriptor o ? o.getPsiElement() : null);
}
@Nullable
private static Navigatable getSelectedNavigatable(CommonProblemDescriptor descriptor, PsiElement psiElement) {
if (descriptor instanceof ProblemDescriptorBase) {
Navigatable navigatable = ((ProblemDescriptorBase)descriptor).getNavigatable();
private static Navigatable getSelectedNavigatable(@Nullable CommonProblemDescriptor descriptor,
@Nullable PsiElement psiElement) {
if (descriptor instanceof ProblemDescriptorBase problem) {
Navigatable navigatable = problem.getNavigatable();
if (navigatable != null) {
return navigatable;
}
@@ -835,20 +811,20 @@ public final class InspectionResultsView extends JPanel implements Disposable, D
PsiFile containingFile = psiElement.getContainingFile();
VirtualFile virtualFile = containingFile == null ? null : containingFile.getVirtualFile();
if (virtualFile != null) {
int startOffset = psiElement.getTextOffset();
if (descriptor instanceof ProblemDescriptorBase) {
final TextRange textRange = ((ProblemDescriptorBase)descriptor).getTextRangeForNavigation();
if (textRange != null) {
if (virtualFile instanceof VirtualFileWindow) {
virtualFile = ((VirtualFileWindow)virtualFile).getDelegate();
}
startOffset = textRange.getStartOffset();
}
}
return PsiNavigationSupport.getInstance().createNavigatable(psiElement.getProject(), virtualFile, startOffset);
if (virtualFile == null) {
return null;
}
return null;
int startOffset = psiElement.getTextOffset();
if (descriptor instanceof ProblemDescriptorBase problem) {
TextRange textRange = problem.getTextRangeForNavigation();
if (textRange != null) {
if (virtualFile instanceof VirtualFileWindow window) {
virtualFile = window.getDelegate();
}
startOffset = textRange.getStartOffset();
}
}
return PsiNavigationSupport.getInstance().createNavigatable(psiElement.getProject(), virtualFile, startOffset);
}
@NotNull

View File

@@ -8,7 +8,9 @@ import com.intellij.find.impl.HelpID;
import com.intellij.find.impl.livePreview.LivePreviewController;
import com.intellij.find.impl.livePreview.SearchResults;
import com.intellij.icons.AllIcons;
import com.intellij.ide.DataManager;
import com.intellij.ide.lightEdit.LightEditCompatible;
import com.intellij.ide.ui.IdeUiService;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.actionSystem.ex.CustomComponentAction;
@@ -41,7 +43,6 @@ import com.intellij.util.SmartList;
import com.intellij.util.ui.ComponentWithEmptyText;
import com.intellij.util.ui.update.Activatable;
import com.intellij.util.ui.update.UiNotifyConnector;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -57,7 +58,7 @@ import java.util.regex.PatternSyntaxException;
* @author max, andrey.zaytsev
*/
public class EditorSearchSession implements SearchSession,
DataProvider,
UiCompatibleDataProvider,
SelectionListener,
SearchResults.SearchResultsListener,
SearchReplaceComponent.Listener {
@@ -271,7 +272,9 @@ public class EditorSearchSession implements SearchSession,
public static EditorSearchSession get(@Nullable Editor editor) {
JComponent headerComponent = editor != null ? editor.getHeaderComponent() : null;
SearchReplaceComponent searchReplaceComponent = ObjectUtils.tryCast(headerComponent, SearchReplaceComponent.class);
return searchReplaceComponent != null ? SESSION_KEY.getData(searchReplaceComponent) : null;
DataContext dataContext = searchReplaceComponent == null ? null :
IdeUiService.getInstance().createUiDataContext(searchReplaceComponent);
return dataContext == null ? null : SESSION_KEY.getData(dataContext);
}
@NotNull
@@ -314,21 +317,11 @@ public class EditorSearchSession implements SearchSession,
@Override
@Nullable
public Object getData(@NotNull @NonNls final String dataId) {
if (SearchSession.KEY.is(dataId)) {
return this;
}
if (SESSION_KEY.is(dataId)) {
return this;
}
if (CommonDataKeys.EDITOR_EVEN_IF_INACTIVE.is(dataId)) {
return myEditor;
}
if (PlatformCoreDataKeys.HELP_ID.is(dataId)) {
return myFindModel.isReplaceState() ? HelpID.REPLACE_IN_EDITOR : HelpID.FIND_IN_EDITOR;
}
return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(SearchSession.KEY, this);
sink.set(SESSION_KEY, this);
sink.set(CommonDataKeys.EDITOR_EVEN_IF_INACTIVE, myEditor);
sink.set(PlatformCoreDataKeys.HELP_ID, myFindModel.isReplaceState() ? HelpID.REPLACE_IN_EDITOR : HelpID.FIND_IN_EDITOR);
}
@Override

View File

@@ -34,7 +34,6 @@ import com.intellij.util.ui.JBUI;
import com.intellij.util.ui.NamedColorUtil;
import com.intellij.util.ui.SwingUndoUtil;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -53,7 +52,7 @@ import static java.awt.FlowLayout.CENTER;
import static java.awt.event.InputEvent.CTRL_DOWN_MASK;
import static java.awt.event.InputEvent.META_DOWN_MASK;
public final class SearchReplaceComponent extends EditorHeaderComponent implements DataProvider {
public final class SearchReplaceComponent extends EditorHeaderComponent implements UiDataProvider {
public static final int RIGHT_PANEL_WEST_OFFSET = 13;
private static final float MAX_LEFT_PANEL_PROP = 0.9F;
private static final float DEFAULT_PROP = 0.33F;
@@ -392,13 +391,10 @@ public final class SearchReplaceComponent extends EditorHeaderComponent implemen
myStatusColor = NamedColorUtil.getErrorForeground();
}
@Nullable
@Override
public Object getData(@NotNull @NonNls String dataId) {
if (PlatformDataKeys.SPEED_SEARCH_TEXT.is(dataId)) {
return mySearchTextComponent.getText();
}
return myDataProviderDelegate != null ? myDataProviderDelegate.getData(dataId) : null;
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(PlatformDataKeys.SPEED_SEARCH_TEXT, mySearchTextComponent.getText());
DataSink.uiDataSnapshot(sink, myDataProviderDelegate);
}
public Project getProject() {

View File

@@ -3,9 +3,9 @@ package com.intellij.find.actions;
import com.intellij.ide.util.gotoByName.ModelDiff;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.DataSink;
import com.intellij.openapi.actionSystem.LangDataKeys;
import com.intellij.openapi.actionSystem.PlatformCoreDataKeys;
import com.intellij.openapi.actionSystem.UiDataProvider;
import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.popup.util.PopupUtil;
@@ -28,7 +28,6 @@ import com.intellij.util.ui.ColumnInfo;
import com.intellij.util.ui.JBUI;
import com.intellij.util.ui.ListTableModel;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -42,9 +41,8 @@ import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Supplier;
import java.util.stream.Collectors;
public final class ShowUsagesTable extends JBTable implements DataProvider {
public final class ShowUsagesTable extends JBTable implements UiDataProvider {
final Usage MORE_USAGES_SEPARATOR = new UsageAdapter();
final Usage USAGES_OUTSIDE_SCOPE_SEPARATOR = new UsageAdapter();
final Usage USAGES_FILTERED_OUT_SEPARATOR = new UsageAdapter();
@@ -68,28 +66,16 @@ public final class ShowUsagesTable extends JBTable implements DataProvider {
}
@Override
public Object getData(@NotNull @NonNls String dataId) {
if (LangDataKeys.POSITION_ADJUSTER_POPUP.is(dataId)) {
return PopupUtil.getPopupContainerFor(this);
}
if (UsageView.USAGE_VIEW_KEY.is(dataId)) {
return myUsageView;
}
if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
List<Object> selection = Arrays.stream(getSelectedRows())
.mapToObj(o -> getValueAt(o, 0))
.collect(Collectors.toList());
return (DataProvider)slowId -> getSlowData(slowId, selection);
}
return null;
}
private static @Nullable Object getSlowData(@NotNull String dataId, @NotNull List<Object> selection) {
if (CommonDataKeys.PSI_ELEMENT.is(dataId)) {
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(LangDataKeys.POSITION_ADJUSTER_POPUP, PopupUtil.getPopupContainerFor(this));
sink.set(UsageView.USAGE_VIEW_KEY, myUsageView);
List<Object> selection = Arrays.stream(getSelectedRows())
.mapToObj(o -> getValueAt(o, 0))
.toList();
sink.lazy(CommonDataKeys.PSI_ELEMENT, () -> {
Object single = ContainerUtil.getOnlyItem(selection);
return single == null ? null : getPsiElementForHint(single);
}
return null;
});
}
@Override

View File

@@ -118,7 +118,7 @@ import static com.intellij.ui.SimpleTextAttributes.STYLE_PLAIN;
import static com.intellij.util.FontUtil.spaceAndThinSpace;
@ApiStatus.Internal
public final class FindPopupPanel extends JBPanel<FindPopupPanel> implements FindUI, DataProvider {
public final class FindPopupPanel extends JBPanel<FindPopupPanel> implements FindUI, UiDataProvider {
private static final KeyStroke ENTER = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
private static final KeyStroke REPLACE_ALL = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, InputEvent.SHIFT_DOWN_MASK | InputEvent.ALT_DOWN_MASK);
private static final KeyStroke RESET_FILTERS = KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, InputEvent.SHIFT_DOWN_MASK | InputEvent.ALT_DOWN_MASK);
@@ -848,26 +848,15 @@ public final class FindPopupPanel extends JBPanel<FindPopupPanel> implements Fin
}
@Override
public @Nullable Object getData(@NotNull String dataId) {
if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
Map<Integer, Usage> usages = getSelectedUsages();
if (usages == null) return null;
return (DataProvider)slowId -> getSlowData(slowId, usages);
}
return null;
}
private static @Nullable Object getSlowData(@NotNull String dataId, @NotNull Map<Integer, Usage> usages) {
if (PlatformCoreDataKeys.PSI_ELEMENT_ARRAY.is(dataId)) {
return usages.values().stream()
.filter(usage -> usage instanceof UsageInfoAdapter)
.flatMap(usage -> Arrays.stream(((UsageInfoAdapter)usage).getMergedInfos()))
.map(info -> info.getElement())
.filter(Objects::nonNull)
.toArray(PsiElement[]::new);
}
return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
Map<Integer, Usage> usages = getSelectedUsages();
if (usages == null) return;
sink.lazy(PlatformCoreDataKeys.PSI_ELEMENT_ARRAY, () -> usages.values().stream()
.filter(usage -> usage instanceof UsageInfoAdapter)
.flatMap(usage -> Arrays.stream(((UsageInfoAdapter)usage).getMergedInfos()))
.map(info -> info.getElement())
.filter(Objects::nonNull)
.toArray(PsiElement[]::new));
}
@Contract("_,!null,_->!null")

View File

@@ -129,7 +129,7 @@ import static com.intellij.ide.actions.searcheverywhere.statistics.SearchEverywh
* @author Konstantin Bulenkov
* @author Mikhail.Sokolov
*/
public final class SearchEverywhereUI extends BigPopupUI implements DataProvider, QuickSearchComponent {
public final class SearchEverywhereUI extends BigPopupUI implements UiDataProvider, QuickSearchComponent {
public static final Topic<SearchListener> SEARCH_EVENTS = Topic.create("Search events", SearchListener.class);
@@ -483,47 +483,28 @@ public final class SearchEverywhereUI extends BigPopupUI implements DataProvider
}
}
@Nullable
@Override
public Object getData(@NotNull String dataId) {
if (PlatformDataKeys.PREDEFINED_TEXT.is(dataId)) {
return getSearchPattern();
}
if (CommonDataKeys.PROJECT.is(dataId)) {
return myProject;
}
if (SELECTED_ITEM_INFO.is(dataId)) {
return ContainerUtil.getOnlyItem(getSelectedInfos());
}
if (PlatformCoreDataKeys.SELECTED_ITEM.is(dataId)) {
List<SearchEverywhereFoundElementInfo> selection = getSelectedInfos();
SearchEverywhereFoundElementInfo info = ContainerUtil.getOnlyItem(selection);
return info == null ? null : info.getElement();
}
if (PlatformCoreDataKeys.SELECTED_ITEMS.is(dataId)) {
List<SearchEverywhereFoundElementInfo> selection = getSelectedInfos();
if (selection.isEmpty()) return null;
return ContainerUtil.map2Array(selection, Object.class, SearchEverywhereFoundElementInfo::getElement);
}
if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
List<SearchEverywhereFoundElementInfo> selection = getSelectedInfos();
return (DataProvider)slowId -> getSlowData(slowId, selection);
}
return null;
}
public void uiDataSnapshot(@NotNull DataSink sink) {
List<SearchEverywhereFoundElementInfo> selection = getSelectedInfos();
SearchEverywhereFoundElementInfo onlyItem = ContainerUtil.getOnlyItem(selection);
private static @Nullable Object getSlowData(@NotNull String dataId, @NotNull List<? extends SearchEverywhereFoundElementInfo> selection) {
if (PlatformCoreDataKeys.PSI_ELEMENT_ARRAY.is(dataId)) {
sink.set(PlatformDataKeys.PREDEFINED_TEXT, getSearchPattern());
sink.set(CommonDataKeys.PROJECT, myProject);
sink.set(SELECTED_ITEM_INFO, onlyItem);
sink.set(PlatformCoreDataKeys.SELECTED_ITEM, onlyItem == null ? null : onlyItem.getElement());
sink.set(PlatformCoreDataKeys.SELECTED_ITEMS,
ContainerUtil.map2Array(selection, Object.class, SearchEverywhereFoundElementInfo::getElement));
sink.lazy(PlatformCoreDataKeys.PSI_ELEMENT_ARRAY, () -> {
List<PsiElement> list =
ContainerUtil.mapNotNull(selection, o -> (PsiElement)getDataFromElementInfo(CommonDataKeys.PSI_ELEMENT.getName(), o));
return list.isEmpty() ? null : list.toArray(PsiElement.EMPTY_ARRAY);
}
else if (CommonDataKeys.VIRTUAL_FILE_ARRAY.is(dataId)) {
});
sink.lazy(CommonDataKeys.VIRTUAL_FILE_ARRAY, () -> {
List<VirtualFile> list =
ContainerUtil.mapNotNull(selection, o -> (VirtualFile)getDataFromElementInfo(CommonDataKeys.VIRTUAL_FILE.getName(), o));
return list.isEmpty() ? null : list.toArray(VirtualFile.EMPTY_ARRAY);
}
else if (CommonDataKeys.NAVIGATABLE_ARRAY.is(dataId)) {
});
sink.lazy(CommonDataKeys.NAVIGATABLE_ARRAY, () -> {
List<Navigatable> list = ContainerUtil.mapNotNull(selection, o -> {
Navigatable navigatable = (Navigatable)getDataFromElementInfo(CommonDataKeys.NAVIGATABLE.getName(), o);
if (navigatable != null) return navigatable;
@@ -532,9 +513,12 @@ public final class SearchEverywhereUI extends BigPopupUI implements DataProvider
return psi instanceof Navigatable ? (Navigatable)psi : null;
});
return list.isEmpty() ? null : list.toArray(Navigatable.EMPTY_NAVIGATABLE_ARRAY);
});
if (onlyItem != null) {
sink.set(PlatformCoreDataKeys.BGT_DATA_PROVIDER, dataId -> {
return getDataFromElementInfo(dataId, onlyItem);
});
}
SearchEverywhereFoundElementInfo single = ContainerUtil.getOnlyItem(selection);
return single == null ? null : getDataFromElementInfo(dataId, single);
}
private static @Nullable Object getDataFromElementInfo(@NotNull String dataId, SearchEverywhereFoundElementInfo info) {
@@ -545,7 +529,7 @@ public final class SearchEverywhereUI extends BigPopupUI implements DataProvider
return contributor.getDataForItem(info.getElement(), dataId);
}
private @NotNull List<SearchEverywhereFoundElementInfo> getSelectedInfos() {
@NotNull List<SearchEverywhereFoundElementInfo> getSelectedInfos() {
return Arrays.stream(myResultsList.getSelectedIndices())
.mapToObj(myListModel::getRawFoundElementAt)
.filter(o -> o.getElement() != SearchListModel.MORE_ELEMENT

View File

@@ -82,7 +82,8 @@ private class ElementInfoManager(private val seUI: SearchEverywhereUI) {
override fun updatePopup(element: Any?) {
val popup = myPopup
if (popup?.isVisible == true) {
seUI.getData(SearchEverywhereUI.SELECTED_ITEM_INFO.name)?.let { fillContent(popup.component as JEditorPane, it as SearchEverywhereFoundElementInfo) }
val single = seUI.selectedInfos.singleOrNull() ?: return
fillContent(popup.component as JEditorPane, single)
}
}
}

View File

@@ -15,7 +15,8 @@ import com.intellij.openapi.Disposable
import com.intellij.openapi.actionSystem.ActionUpdateThread
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.actionSystem.CommonDataKeys.NAVIGATABLE
import com.intellij.openapi.actionSystem.DataProvider
import com.intellij.openapi.actionSystem.DataSink
import com.intellij.openapi.actionSystem.UiDataProvider
import com.intellij.openapi.project.DumbAwareAction
import com.intellij.openapi.ui.popup.JBPopupFactory
import com.intellij.openapi.ui.popup.util.PopupUtil
@@ -72,7 +73,7 @@ internal class ShowTypeBookmarksAction : DumbAwareAction() {
}
private class MyScrollPane(val tree: Tree) : DataProvider, JBScrollPane(tree) {
private class MyScrollPane(val tree: Tree) : UiDataProvider, JBScrollPane(tree) {
init {
border = JBUI.Borders.empty()
viewportBorder = JBUI.Borders.empty()
@@ -83,9 +84,8 @@ internal class ShowTypeBookmarksAction : DumbAwareAction() {
if (!isPreferredSizeSet) it.width = it.width.coerceAtMost(JBUI.scale(640))
}
override fun getData(dataId: String): Any? = when {
NAVIGATABLE.`is`(dataId) -> TreeUtil.getAbstractTreeNode(tree.selectionPath)
else -> null
override fun uiDataSnapshot(sink: DataSink) {
sink[NAVIGATABLE] = TreeUtil.getAbstractTreeNode(tree.selectionPath)
}
}

View File

@@ -35,7 +35,7 @@ import java.util.Objects;
import java.util.Set;
public abstract class HierarchyBrowserBase extends SimpleToolWindowPanel implements HierarchyBrowser, Disposable, DataProvider {
public abstract class HierarchyBrowserBase extends SimpleToolWindowPanel implements HierarchyBrowser, Disposable {
protected final Project myProject;
protected Content myContent;

View File

@@ -259,7 +259,7 @@ public abstract class ChooseByNameBase implements ChooseByNameViewModel {
myInitialSelection = initialSelection;
}
public final class JPanelProvider extends JPanel implements DataProvider, QuickSearchComponent {
public final class JPanelProvider extends JPanel implements UiDataProvider, QuickSearchComponent {
private JBPopup myHint;
private boolean myFocusRequested;
@@ -267,44 +267,31 @@ public abstract class ChooseByNameBase implements ChooseByNameViewModel {
}
@Override
public Object getData(@NotNull String dataId) {
if (PlatformCoreDataKeys.HELP_ID.is(dataId)) {
return myModel.getHelpId();
}
if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
List<Object> selection = getChosenElements();
return (DataProvider)slowId -> getSlowData(slowId, selection);
}
else if (PlatformDataKeys.DOMINANT_HINT_AREA_RECTANGLE.is(dataId)) {
return getBounds();
}
return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
List<Object> selection = getChosenElements();
sink.set(PlatformCoreDataKeys.HELP_ID, myModel.getHelpId());
sink.set(PlatformDataKeys.DOMINANT_HINT_AREA_RECTANGLE, getBounds());
sink.lazy(CommonDataKeys.PSI_ELEMENT, () -> {
if (myCalcElementsThread != null) return null;
return getElement(ContainerUtil.getOnlyItem(selection));
});
sink.lazy(PlatformCoreDataKeys.PSI_ELEMENT_ARRAY, () -> {
if (myCalcElementsThread != null) return null;
List<PsiElement> result = ContainerUtil.mapNotNull(
selection, o -> getElement(o));
return PsiUtilCore.toPsiElementArray(result);
});
}
private @Nullable Object getSlowData(@NotNull String dataId, @NotNull List<Object> selection) {
if (myCalcElementsThread != null) {
return null;
private static @Nullable PsiElement getElement(Object element) {
if (element instanceof PsiElement o) {
return o;
}
if (CommonDataKeys.PSI_ELEMENT.is(dataId)) {
Object element = ContainerUtil.getOnlyItem(selection);
if (element instanceof PsiElement) {
return element;
}
if (element instanceof DataProvider) {
Object data = ((DataProvider)element).getData(dataId);
return data == null ? null : DataValidators.validOrNull(data, dataId, element);
}
}
else if (PlatformCoreDataKeys.PSI_ELEMENT_ARRAY.is(dataId)) {
List<PsiElement> result = new ArrayList<>(selection.size());
for (Object element : selection) {
if (element instanceof PsiElement) {
result.add((PsiElement)element);
}
}
return PsiUtilCore.toPsiElementArray(result);
if (element instanceof DataProvider o) {
PsiElement data = CommonDataKeys.PSI_ELEMENT.getData(o);
return data == null ? null : (PsiElement)DataValidators.validOrNull(
data, CommonDataKeys.PSI_ELEMENT.getName(), element);
}
return null;
}
@@ -1069,7 +1056,7 @@ public abstract class ChooseByNameBase implements ChooseByNameViewModel {
protected void chosenElementMightChange() {
}
protected final class MyTextField extends JTextField implements PopupOwner, DataProvider {
protected final class MyTextField extends JTextField implements PopupOwner, UiDataProvider {
private final KeyStroke myCompletionKeyStroke;
private final KeyStroke forwardStroke;
private final KeyStroke backStroke;
@@ -1114,16 +1101,12 @@ public abstract class ChooseByNameBase implements ChooseByNameViewModel {
return null;
}
@Nullable
@Override
public Object getData(@NotNull String dataId) {
if (LangDataKeys.POSITION_ADJUSTER_POPUP.is(dataId)) {
return myDropdownPopup != null && myDropdownPopup.isVisible() ? myDropdownPopup : null;
}
else if (LangDataKeys.PARENT_POPUP.is(dataId)) {
return myTextPopup != null && myTextPopup.isVisible() ? myTextPopup : null;
}
return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(LangDataKeys.POSITION_ADJUSTER_POPUP,
myDropdownPopup != null && myDropdownPopup.isVisible() ? myDropdownPopup : null);
sink.set(LangDataKeys.PARENT_POPUP,
myTextPopup != null && myTextPopup.isVisible() ? myTextPopup : null);
}
@Override

View File

@@ -403,7 +403,7 @@ public final class ModulesDependenciesPanel extends JPanel implements Disposable
}
}
private static final class MyTreePanel extends JPanel implements DataProvider {
private static final class MyTreePanel extends JPanel implements UiDataProvider {
private final Tree myTree;
private final Project myProject;
@@ -415,30 +415,15 @@ public final class ModulesDependenciesPanel extends JPanel implements Disposable
}
@Override
public Object getData(@NotNull String dataId) {
if (CommonDataKeys.PROJECT.is(dataId)) {
return myProject;
public void uiDataSnapshot(@NotNull DataSink sink) {
TreePath path = myTree.getLeadSelectionPath();
Object obj = path == null ? null : TreeUtil.getUserObject(path.getLastPathComponent());
sink.set(CommonDataKeys.PROJECT, myProject);
if (obj instanceof MyUserObject o) {
sink.set(LangDataKeys.MODULE_CONTEXT, o.myModule);
sink.set(CommonDataKeys.NAVIGATABLE, o);
}
if (LangDataKeys.MODULE_CONTEXT.is(dataId)) {
TreePath selectionPath = myTree.getLeadSelectionPath();
if (selectionPath != null && selectionPath.getLastPathComponent() instanceof DefaultMutableTreeNode node) {
if (node.getUserObject() instanceof MyUserObject) {
return ((MyUserObject)node.getUserObject()).myModule;
}
}
}
if (PlatformCoreDataKeys.HELP_ID.is(dataId)) {
return HELP_ID;
}
if (CommonDataKeys.NAVIGATABLE.is(dataId)) {
TreePath selectionPath = myTree.getLeadSelectionPath();
if (selectionPath != null && selectionPath.getLastPathComponent() instanceof DefaultMutableTreeNode node) {
if (node.getUserObject() instanceof MyUserObject) {
return node.getUserObject();
}
}
}
return null;
sink.set(PlatformCoreDataKeys.HELP_ID, HELP_ID);
}
}

View File

@@ -35,7 +35,6 @@ import com.intellij.util.ui.GridBag;
import com.intellij.util.ui.JBUI;
import com.intellij.util.ui.tree.TreeUtil;
import com.intellij.xml.util.XmlStringUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -261,21 +260,15 @@ public class ContentEntryTreeEditor {
}
}
private final class MyPanel extends JPanel implements DataProvider {
private final class MyPanel extends JPanel implements UiDataProvider {
private MyPanel(final LayoutManager layout) {
super(layout);
}
@Override
@Nullable
public Object getData(@NotNull @NonNls final String dataId) {
if (FileSystemTree.DATA_KEY.is(dataId)) {
return myFileSystemTree;
}
if (CommonDataKeys.VIRTUAL_FILE_ARRAY.is(dataId)) {
return myFileSystemTree == null ? null : myFileSystemTree.getSelectedFiles();
}
return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(FileSystemTree.DATA_KEY, myFileSystemTree);
sink.set(CommonDataKeys.VIRTUAL_FILE_ARRAY, myFileSystemTree == null ? null : myFileSystemTree.getSelectedFiles());
}
}

View File

@@ -68,7 +68,7 @@ import java.io.IOException;
import java.util.List;
import java.util.*;
public final class DependenciesPanel extends JPanel implements Disposable, DataProvider {
public final class DependenciesPanel extends JPanel implements Disposable, UiDataProvider {
private final Map<PsiFile, Set<PsiFile>> myDependencies;
private Map<VirtualFile, Map<DependencyRule, Set<PsiFile>>> myIllegalDependencies;
private final MyTree myLeftTree = new MyTree();
@@ -491,16 +491,9 @@ public final class DependenciesPanel extends JPanel implements Disposable, DataP
}
@Override
@Nullable
@NonNls
public Object getData(@NotNull @NonNls String dataId) {
if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
return myRightTree.getData(dataId);
}
if (PlatformCoreDataKeys.HELP_ID.is(dataId)) {
return "dependency.viewer.tool.window";
}
return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(PlatformCoreDataKeys.HELP_ID, "dependency.viewer.tool.window");
DataSink.uiDataSnapshot(sink, myRightTree);
}
private static final class MyTreeCellRenderer extends ColoredTreeCellRenderer {
@@ -805,31 +798,23 @@ public final class DependenciesPanel extends JPanel implements Disposable, DataP
}
}
private static final class MyTree extends Tree implements DataProvider {
private static final class MyTree extends Tree implements UiDataProvider {
@Override
public Object getData(@NotNull String dataId) {
public void uiDataSnapshot(@NotNull DataSink sink) {
PackageDependenciesNode node = getSelectedNode();
if (CommonDataKeys.NAVIGATABLE.is(dataId)) {
return node;
}
if (node != null && PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
return (DataProvider)slowDataId -> {
if (CommonDataKeys.PSI_ELEMENT.is(slowDataId)) {
final PsiElement element = node.getPsiElement();
return element != null && element.isValid() ? element : null;
}
return null;
};
}
if (PlatformCoreDataKeys.SELECTED_ITEMS.is(dataId)) {
TreePath[] paths = getSelectionPaths();
return paths != null ? ContainerUtil.map2Array(paths, p -> p.getLastPathComponent()) : null;
}
if (PlatformCoreDataKeys.SELECTED_ITEM.is(dataId)) {
TreePath path = getSelectionPath();
return path != null ? path.getLastPathComponent() : null;
}
return null;
sink.set(CommonDataKeys.NAVIGATABLE, node);
TreePath[] paths = getSelectionPaths();
TreePath path = getSelectionPath();
sink.set(PlatformCoreDataKeys.SELECTED_ITEMS,
paths != null ? ContainerUtil.map2Array(paths, p -> p.getLastPathComponent()) : null);
sink.set(PlatformCoreDataKeys.SELECTED_ITEM,
path != null ? path.getLastPathComponent() : null);
if (node == null) return;
sink.lazy(CommonDataKeys.PSI_ELEMENT, () -> {
PsiElement element = node.getPsiElement();
return element != null && element.isValid() ? element : null;
});
}
@Nullable

View File

@@ -3,8 +3,9 @@ package com.intellij.packageDependencies.ui;
import com.intellij.codeInsight.CodeInsightBundle;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.DataSink;
import com.intellij.openapi.actionSystem.PlatformCoreDataKeys;
import com.intellij.openapi.actionSystem.UiDataProvider;
import com.intellij.openapi.application.AppUIExecutor;
import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.diagnostic.Logger;
@@ -18,14 +19,12 @@ import com.intellij.usages.*;
import com.intellij.usages.impl.UsageViewImpl;
import com.intellij.util.Alarm;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.awt.*;
public abstract class UsagesPanel extends JPanel implements Disposable, DataProvider {
public abstract class UsagesPanel extends JPanel implements Disposable, UiDataProvider {
protected static final Logger LOG = Logger.getInstance(UsagesPanel.class);
private final Project myProject;
@@ -104,12 +103,7 @@ public abstract class UsagesPanel extends JPanel implements Disposable, DataProv
}
@Override
@Nullable
@NonNls
public Object getData(@NotNull @NonNls String dataId) {
if (PlatformCoreDataKeys.HELP_ID.is(dataId)) {
return "ideaInterface.find";
}
return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(PlatformCoreDataKeys.HELP_ID, "ideaInterface.find");
}
}

View File

@@ -4,8 +4,8 @@ package com.intellij.refactoring.ui;
import com.intellij.icons.AllIcons;
import com.intellij.ide.IdeBundle;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.PlatformCoreDataKeys;
import com.intellij.openapi.actionSystem.DataSink;
import com.intellij.openapi.actionSystem.UiCompatibleDataProvider;
import com.intellij.openapi.application.ReadAction;
import com.intellij.openapi.ui.ValidationInfo;
import com.intellij.openapi.ui.cellvalidators.TableCellValidator;
@@ -45,7 +45,9 @@ import java.util.concurrent.TimeUnit;
/**
* @author Dennis.Ushakov
*/
public abstract class AbstractMemberSelectionTable<T extends PsiElement, M extends MemberInfoBase<T>> extends JBTable implements DataProvider {
public abstract class AbstractMemberSelectionTable<T extends PsiElement, M extends MemberInfoBase<T>>
extends JBTable implements UiCompatibleDataProvider {
protected static final int CHECKED_COLUMN = 0;
protected static final int DISPLAY_NAME_COLUMN = 1;
protected static final int ABSTRACT_COLUMN = 2;
@@ -219,22 +221,13 @@ public abstract class AbstractMemberSelectionTable<T extends PsiElement, M exten
}
}
@Nullable
@Override
public Object getData(@NotNull String dataId) {
if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
M item = ContainerUtil.getFirstItem(getSelectedMemberInfos());
if (item == null) return null;
return (DataProvider)slowId -> getSlowData(slowId, item);
}
return null;
}
private @Nullable Object getSlowData(@NotNull String dataId, @NotNull M item) {
if (CommonDataKeys.PSI_ELEMENT.is(dataId)) {
public void uiDataSnapshot(@NotNull DataSink sink) {
M item = ContainerUtil.getFirstItem(getSelectedMemberInfos());
if (item == null) return;
sink.lazy(CommonDataKeys.PSI_ELEMENT, () -> {
return item.getMember();
}
return null;
});
}
public void scrollSelectionInView() {

View File

@@ -192,15 +192,15 @@ public class ConflictsDialog extends DialogWrapper implements ConflictsDialogBas
previewPanel.add(previewTitle, BorderLayout.NORTH);
previewPanel.add(usagePreviewPanel, BorderLayout.CENTER);
class MySplitter extends OnePixelSplitter implements DataProvider {
class MySplitter extends OnePixelSplitter implements UiDataProvider {
MySplitter() {
super(true, "conflicts.dialog.splitter", 0.4f);
}
@Override
public @Nullable Object getData(@NotNull String dataId) {
return UsageView.USAGE_VIEW_SETTINGS_KEY.is(dataId) ? usageView.getUsageViewSettings() : null;
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(UsageView.USAGE_VIEW_SETTINGS_KEY, usageView.getUsageViewSettings());
}
}
Splitter splitter = new MySplitter();

View File

@@ -47,7 +47,7 @@ import java.awt.event.KeyEvent;
import java.util.List;
import java.util.*;
public abstract class SlicePanel extends JPanel implements DataProvider, Disposable {
public abstract class SlicePanel extends JPanel implements UiDataProvider, Disposable {
private final SliceTreeBuilder myBuilder;
private final JTree myTree;
@@ -303,17 +303,12 @@ public abstract class SlicePanel extends JPanel implements DataProvider, Disposa
return result;
}
@Nullable
@Override
public Object getData(@NotNull String dataId) {
if (CommonDataKeys.NAVIGATABLE_ARRAY.is(dataId)) {
List<Navigatable> navigatables = getNavigatables();
return navigatables.isEmpty() ? null : navigatables.toArray(Navigatable.EMPTY_NAVIGATABLE_ARRAY);
}
if (PlatformDataKeys.TREE_EXPANDER.is(dataId)) {
return new DefaultTreeExpander(myTree);
}
return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
List<Navigatable> navigatables = getNavigatables();
sink.set(CommonDataKeys.NAVIGATABLE_ARRAY,
navigatables.isEmpty() ? null : navigatables.toArray(Navigatable.EMPTY_NAVIGATABLE_ARRAY));
sink.set(PlatformDataKeys.TREE_EXPANDER, new DefaultTreeExpander(myTree));
}
@NotNull

View File

@@ -122,7 +122,7 @@ public final class AnalyzeStacktraceUtil {
return editorPanel;
}
public static final class StacktraceEditorPanel extends JPanel implements DataProvider, Disposable {
public static final class StacktraceEditorPanel extends JPanel implements UiDataProvider, Disposable {
private final Project myProject;
private final Editor myEditor;
@@ -134,11 +134,8 @@ public final class AnalyzeStacktraceUtil {
}
@Override
public Object getData(@NotNull String dataId) {
if (CommonDataKeys.EDITOR.is(dataId)) {
return myEditor;
}
return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(CommonDataKeys.EDITOR, myEditor);
}
public Editor getEditor() {

View File

@@ -4603,16 +4603,16 @@ com.intellij.openapi.ui.Painter$Listener
a:com.intellij.openapi.ui.PanelWithActionsAndCloseButton
- javax.swing.JPanel
- com.intellij.openapi.Disposable
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiCompatibleDataProvider
- pf:myContentManager:com.intellij.ui.content.ContentManager
- <init>(com.intellij.ui.content.ContentManager,java.lang.String):V
- <init>(com.intellij.ui.content.ContentManager,java.lang.String,Z):V
- p:addActionsTo(com.intellij.openapi.actionSystem.DefaultActionGroup):V
- pa:createCenterPanel():javax.swing.JComponent
- p:disableClose():V
- getData(java.lang.String):java.lang.Object
- getHelpId():java.lang.String
- p:init():V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
c:com.intellij.openapi.ui.PanelWithText
- javax.swing.JPanel
- <init>():V
@@ -10232,8 +10232,7 @@ c:com.intellij.ui.speedSearch.FilteringTableModel
- setValueAt(java.lang.Object,I,I):V
f:com.intellij.ui.speedSearch.ListWithFilter
- javax.swing.JPanel
- com.intellij.openapi.actionSystem.DataProvider
- getData(java.lang.String):java.lang.Object
- com.intellij.openapi.actionSystem.UiCompatibleDataProvider
- getInputMethodRequests():java.awt.im.InputMethodRequests
- getList():javax.swing.JList
- getScrollPane():javax.swing.JScrollPane
@@ -10242,6 +10241,7 @@ f:com.intellij.ui.speedSearch.ListWithFilter
- requestFocus():V
- resetFilter():Z
- setAutoPackHeight(Z):V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
- s:wrap(javax.swing.JList,javax.swing.JScrollPane,com.intellij.util.Function):javax.swing.JComponent
- s:wrap(javax.swing.JList,javax.swing.JScrollPane,com.intellij.util.Function,Z):javax.swing.JComponent
- s:wrap(javax.swing.JList,javax.swing.JScrollPane,com.intellij.util.Function,Z,Z,Z):javax.swing.JComponent

View File

@@ -16,7 +16,7 @@ import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.awt.*;
public abstract class PanelWithActionsAndCloseButton extends JPanel implements DataProvider, Disposable {
public abstract class PanelWithActionsAndCloseButton extends JPanel implements UiCompatibleDataProvider, Disposable {
protected final ContentManager myContentManager;
private final @NonNls String myHelpId;
private final boolean myVerticalToolbar;
@@ -77,9 +77,8 @@ public abstract class PanelWithActionsAndCloseButton extends JPanel implements D
}
@Override
@SuppressWarnings("HardCodedStringLiteral")
public Object getData(@NotNull String dataId) {
return PlatformCoreDataKeys.HELP_ID.is(dataId) ? myHelpId : null;
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(PlatformCoreDataKeys.HELP_ID, myHelpId);
}
protected abstract JComponent createCenterPanel();

View File

@@ -1,8 +1,9 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.ui.speedSearch;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.DataSink;
import com.intellij.openapi.actionSystem.PlatformDataKeys;
import com.intellij.openapi.actionSystem.UiCompatibleDataProvider;
import com.intellij.openapi.ide.CopyPasteManager;
import com.intellij.openapi.ui.popup.JBPopup;
import com.intellij.openapi.ui.popup.util.PopupUtil;
@@ -13,7 +14,6 @@ import com.intellij.util.Function;
import com.intellij.util.ui.ComponentWithEmptyText;
import com.intellij.util.ui.JBUI;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -24,10 +24,9 @@ import java.awt.datatransfer.DataFlavor;
import java.awt.event.ActionEvent;
import java.awt.event.FocusEvent;
import java.awt.event.InputMethodEvent;
import java.awt.im.InputContext;
import java.awt.im.InputMethodRequests;
public final class ListWithFilter<T> extends JPanel implements DataProvider {
public final class ListWithFilter<T> extends JPanel implements UiCompatibleDataProvider {
private final JList<T> myList;
private final SearchTextField mySearchField = new SearchTextField(false);
private final NameFilteringListModel<T> myModel;
@@ -38,11 +37,8 @@ public final class ListWithFilter<T> extends JPanel implements DataProvider {
private final boolean mySearchAlwaysVisible;
@Override
public Object getData(@NotNull @NonNls String dataId) {
if (PlatformDataKeys.SPEED_SEARCH_TEXT.is(dataId)) {
return mySearchField.getText();
}
return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(PlatformDataKeys.SPEED_SEARCH_TEXT, mySearchField.getText());
}
public static @NotNull <T> JComponent wrap(@NotNull JList<? extends T> list,

View File

@@ -12647,6 +12647,7 @@ a:com.intellij.openapi.editor.ex.EditorGutterComponentEx
- a:getAnnotationsAreaOffset():I
- a:getAnnotationsAreaWidth():I
- a:getCenterPoint(com.intellij.openapi.editor.markup.GutterIconRenderer):java.awt.Point
- a:getEditor():com.intellij.openapi.editor.ex.EditorEx
- a:getFoldingAreaOffset():I
- a:getGutterRenderer(java.awt.Point):com.intellij.codeInsight.daemon.GutterMark
- a:getGutterRenderers(I):java.util.List
@@ -13868,9 +13869,9 @@ c:com.intellij.openapi.fileChooser.ex.FileChooserDialogImpl
- toggleShowTextField():V
pf:com.intellij.openapi.fileChooser.ex.FileChooserDialogImpl$MyPanel
- javax.swing.JPanel
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiDataProvider
- <init>(com.intellij.openapi.fileChooser.ex.FileChooserDialogImpl):V
- getData(java.lang.String):java.lang.Object
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
f:com.intellij.openapi.fileChooser.ex.FileChooserKeys
- sf:DELETE_ACTION_AVAILABLE:com.intellij.openapi.actionSystem.DataKey
- sf:NEW_FILE_TEMPLATE_TEXT:com.intellij.openapi.actionSystem.DataKey
@@ -20400,7 +20401,7 @@ f:com.intellij.openapi.wm.impl.status.FatalErrorWidgetFactory
- isConfigurable():Z
c:com.intellij.openapi.wm.impl.status.IdeStatusBarImpl
- javax.swing.JComponent
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiDataProvider
- com.intellij.openapi.wm.ex.StatusBarEx
- javax.accessibility.Accessible
- sf:Companion:com.intellij.openapi.wm.impl.status.IdeStatusBarImpl$Companion
@@ -20420,7 +20421,6 @@ c:com.intellij.openapi.wm.impl.status.IdeStatusBarImpl
- getComponent():javax.swing.JComponent
- p:getComponentGraphics(java.awt.Graphics):java.awt.Graphics
- getCurrentEditor():kotlin.jvm.functions.Function0
- getData(java.lang.String):java.lang.Object
- getInfo():java.lang.String
- getPreferredSize():java.awt.Dimension
- getProject():com.intellij.openapi.project.Project
@@ -20439,6 +20439,7 @@ c:com.intellij.openapi.wm.impl.status.IdeStatusBarImpl
- setVisible(Z):V
- startRefreshIndication(java.lang.String):V
- stopRefreshIndication():V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
- updateUI():V
- updateWidget(java.lang.String):V
pf:com.intellij.openapi.wm.impl.status.IdeStatusBarImpl$AccessibleIdeStatusBarImpl
@@ -22052,9 +22053,8 @@ f:com.intellij.toolWindow.StripeActionGroup
- update(com.intellij.openapi.actionSystem.AnActionEvent):V
f:com.intellij.toolWindow.StripeButton
- com.intellij.openapi.wm.impl.AnchoredButton
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiDataProvider
- getAnchor():com.intellij.openapi.wm.ToolWindowAnchor
- getData(java.lang.String):java.lang.Object
- f:getId():java.lang.String
- getMnemonic():I
- getMnemonic2():I
@@ -22062,6 +22062,7 @@ f:com.intellij.toolWindow.StripeButton
- f:isFirst():Z
- f:isLast():Z
- setMnemonic(I):java.lang.Void
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
- f:updateIcon(javax.swing.Icon):V
- f:updatePresentation():V
- updateUI():V

View File

@@ -38,6 +38,8 @@ public abstract class EditorGutterComponentEx extends JComponent implements Edit
*/
public static final DataKey<Point> ICON_CENTER_POSITION = DataKey.create("EditorGutter.ICON_CENTER_POSITION");
public abstract @NotNull EditorEx getEditor();
public abstract @Nullable FoldRegion findFoldingAnchorAt(int x, int y);
public abstract @NotNull List<GutterMark> getGutterRenderers(int line);

View File

@@ -100,7 +100,6 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMaps;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import it.unimi.dsi.fastutil.objects.ObjectIterable;
import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.VisibleForTesting;
@@ -156,8 +155,10 @@ import static com.intellij.openapi.ui.ex.lineNumber.LineNumberConvertersKt.getSt
* </ul>
*/
@DirtyUI
final class EditorGutterComponentImpl extends EditorGutterComponentEx implements MouseListener, MouseMotionListener, DataProvider,
Accessible, UiInspectorPreciseContextProvider {
final class EditorGutterComponentImpl extends EditorGutterComponentEx
implements MouseListener, MouseMotionListener, UiCompatibleDataProvider,
Accessible, UiInspectorPreciseContextProvider {
static final String DISTRACTION_FREE_MARGIN = "editor.distraction.free.margin";
private static final Logger LOG = Logger.getInstance(EditorGutterComponentImpl.class);
@@ -251,8 +252,7 @@ final class EditorGutterComponentImpl extends EditorGutterComponentEx implements
Disposer.register(editor.getDisposable(), myAlphaContext.getDisposable());
}
@NotNull
EditorImpl getEditor() {
public @NotNull EditorImpl getEditor() {
return myEditor;
}
@@ -844,24 +844,13 @@ final class EditorGutterComponentImpl extends EditorGutterComponentEx implements
}
@Override
public @Nullable Object getData(@NotNull @NonNls String dataId) {
if (myEditor.isDisposed()) return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
if (myEditor.isDisposed()) return;
if (KEY.is(dataId)) {
return this;
}
if (CommonDataKeys.EDITOR.is(dataId)) {
return myEditor;
}
if (LOGICAL_LINE_AT_CURSOR.is(dataId)) {
if (myLastActionableClick == null) return null;
return myLastActionableClick.myLogicalLineAtCursor;
}
if (ICON_CENTER_POSITION.is(dataId)) {
if (myLastActionableClick == null) return null;
return myLastActionableClick.myIconCenterPosition;
}
return null;
sink.set(KEY, this);
sink.set(CommonDataKeys.EDITOR, myEditor);
sink.set(LOGICAL_LINE_AT_CURSOR, myLastActionableClick == null ? null : myLastActionableClick.myLogicalLineAtCursor);
sink.set(ICON_CENTER_POSITION, myLastActionableClick == null ? null : myLastActionableClick.myIconCenterPosition);
}
boolean isShowGapAfterAnnotations() {

View File

@@ -470,7 +470,7 @@ public class FileChooserDialogImpl extends DialogWrapper implements FileChooserD
}
}
protected final class MyPanel extends JPanel implements DataProvider {
protected final class MyPanel extends JPanel implements UiDataProvider {
final PasteProvider myPasteProvider = new PasteProvider() {
@Override
public @NotNull ActionUpdateThread getActionUpdateThread() {
@@ -515,17 +515,11 @@ public class FileChooserDialogImpl extends DialogWrapper implements FileChooserD
}
@Override
public Object getData(@NotNull String dataId) {
if (FileSystemTree.DATA_KEY.is(dataId)) {
return myFileSystemTree;
}
if (CommonDataKeys.VIRTUAL_FILE_ARRAY.is(dataId)) {
return myFileSystemTree == null ? null : myFileSystemTree.getSelectedFiles();
}
if (PlatformDataKeys.PASTE_PROVIDER.is(dataId)) {
return myPasteProvider;
}
return myChooserDescriptor.getUserData(dataId);
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(FileSystemTree.DATA_KEY, myFileSystemTree);
sink.set(CommonDataKeys.VIRTUAL_FILE_ARRAY, myFileSystemTree == null ? null : myFileSystemTree.getSelectedFiles());
sink.set(PlatformDataKeys.PASTE_PROVIDER, myPasteProvider);
DataSink.uiDataSnapshot(sink, dataId -> myChooserDescriptor.getUserData(dataId));
}
}

View File

@@ -2,7 +2,8 @@
package com.intellij.openapi.fileChooser.impl;
import com.intellij.ide.dnd.FileCopyPasteUtil;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.DataSink;
import com.intellij.openapi.actionSystem.UiDataProvider;
import com.intellij.openapi.fileChooser.*;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
@@ -118,15 +119,16 @@ final class NewFileChooserDialogImpl extends DialogWrapper implements FileChoose
return "select.path.dialog";
}
private final class ChooserDialogPanel extends JPanel implements DataProvider {
private final class ChooserDialogPanel extends JPanel implements UiDataProvider {
private ChooserDialogPanel() {
super(new BorderLayout());
setDropTarget(new DropTarget(this, DnDConstants.ACTION_COPY, new ChooserDropTarget()));
}
@Override
public @Nullable Object getData(@NotNull String dataId) {
return FileChooserPanel.DATA_KEY.is(dataId) ? myPanel : myDescriptor.getUserData(dataId);
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(FileChooserPanel.DATA_KEY, myPanel);
DataSink.uiDataSnapshot(sink, dataId -> myDescriptor.getUserData(dataId));
}
}

View File

@@ -2,7 +2,8 @@
package com.intellij.openapi.options.ex;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.actionSystem.DataSink;
import com.intellij.openapi.actionSystem.UiDataProvider;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.application.ReadAction;
@@ -226,7 +227,7 @@ public class ConfigurableCardPanel extends CardLayoutPanel<Configurable, Configu
* This is a wrapper for a component created by a configurable.
* It allows to use a dedicated UI disposable instead of a dialog disposable.
*/
private static final class Wrapper extends JPanel implements Disposable, DataProvider {
private static final class Wrapper extends JPanel implements Disposable, UiDataProvider {
private final Configurable myConfigurable;
private Wrapper(@NotNull Configurable configurable, @NotNull JComponent component) {
@@ -240,8 +241,8 @@ public class ConfigurableCardPanel extends CardLayoutPanel<Configurable, Configu
}
@Override
public Object getData(@NotNull String dataId) {
return UI_DISPOSABLE.is(dataId) ? this : null;
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(UI_DISPOSABLE, this);
}
@Override

View File

@@ -4,8 +4,6 @@ package com.intellij.openapi.wm.impl;
import com.intellij.ide.ui.UISettings;
import com.intellij.ide.util.PropertiesComponent;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.ex.EditorEx;
@@ -399,9 +397,8 @@ public final class IdeBackgroundUtil {
private static @Nullable Editor obtainEditor(@Nullable JComponent c) {
Component view = c instanceof JViewport ? ((JViewport)c).getView() : c;
//noinspection CastConflictsWithInstanceof
return view instanceof EditorComponentImpl ? ((EditorComponentImpl)view).getEditor() :
view instanceof EditorGutterComponentEx ? CommonDataKeys.EDITOR.getData((DataProvider)view) :
return view instanceof EditorComponentImpl o ? o.getEditor() :
view instanceof EditorGutterComponentEx o ? o.getEditor() :
null;
}

View File

@@ -5,7 +5,6 @@ import com.intellij.CommonBundle
import com.intellij.icons.AllIcons
import com.intellij.ide.IdeBundle
import com.intellij.ide.actions.PinActiveTabAction
import com.intellij.ide.impl.DataManagerImpl
import com.intellij.openapi.Disposable
import com.intellij.openapi.actionSystem.*
import com.intellij.openapi.actionSystem.ex.CustomComponentAction
@@ -329,7 +328,7 @@ internal class SingleContentLayout(
) : NonOpaquePanel(),
TabsListener,
PropertyChangeListener,
DataProvider,
UiDataProvider,
MorePopupAware,
Disposable
{
@@ -509,7 +508,8 @@ internal class SingleContentLayout(
}
}
private inner class MyContentTabLabel(content: SubContent, layout: TabContentLayout) : ContentTabLabel(content, layout), DataProvider {
private inner class MyContentTabLabel(content: SubContent, layout: TabContentLayout)
: ContentTabLabel(content, layout), UiDataProvider {
init {
addMouseListener(popupHandler)
@@ -525,11 +525,9 @@ internal class SingleContentLayout(
}
}
override fun getData(dataId: String): Any? {
if (JBTabsEx.NAVIGATION_ACTIONS_KEY.`is`(dataId)) {
return jbTabs
}
return DataManagerImpl.getDataProviderEx(retrieveInfo(this).component)?.getData(dataId)
override fun uiDataSnapshot(sink: DataSink) {
sink[JBTabsEx.NAVIGATION_ACTIONS_KEY] = jbTabs as? JBTabsEx
DataSink.uiDataSnapshot(sink, retrieveInfo(this).component)
}
override fun getContent(): SubContent {
@@ -537,11 +535,8 @@ internal class SingleContentLayout(
}
}
override fun getData(dataId: String): Any? {
if (MorePopupAware.KEY.`is`(dataId)) {
return this
}
return null
override fun uiDataSnapshot(sink: DataSink) {
sink[MorePopupAware.KEY] = this
}
override fun canShowMorePopup(): Boolean {

View File

@@ -84,7 +84,7 @@ open class IdeStatusBarImpl internal constructor(
private val coroutineScope: CoroutineScope,
private val frameHelper: ProjectFrameHelper,
addToolWindowWidget: Boolean,
) : JComponent(), Accessible, StatusBarEx, DataProvider {
) : JComponent(), Accessible, StatusBarEx, UiDataProvider {
private var infoAndProgressPanel: InfoAndProgressPanel? = null
internal enum class WidgetEffect {
@@ -229,13 +229,10 @@ open class IdeStatusBarImpl internal constructor(
return Dimension(size.width, size.height.coerceAtLeast(minHeight))
}
override fun getData(dataId: String): Any? {
return when {
CommonDataKeys.PROJECT.`is`(dataId) -> project
PlatformDataKeys.STATUS_BAR.`is`(dataId) -> this
HOVERED_WIDGET_ID.`is`(dataId) -> ClientProperty.get(effectComponent, WIDGET_ID)
else -> null
}
override fun uiDataSnapshot(sink: DataSink) {
sink[CommonDataKeys.PROJECT] = project
sink[PlatformDataKeys.STATUS_BAR] = this
sink[HOVERED_WIDGET_ID] = ClientProperty.get(effectComponent, WIDGET_ID)
}
override fun setVisible(aFlag: Boolean) {

View File

@@ -33,7 +33,8 @@ import javax.swing.*
/**
* @author Eugene Belyaev
*/
class StripeButton internal constructor(internal val toolWindow: ToolWindowImpl) : AnchoredButton(), DataProvider {
class StripeButton internal constructor(internal val toolWindow: ToolWindowImpl)
: AnchoredButton(), UiDataProvider {
/**
* This is analog of Swing mnemonic. We cannot use the standard ones
* because it causes typing of "funny" characters into the editor.
@@ -93,12 +94,9 @@ class StripeButton internal constructor(internal val toolWindow: ToolWindowImpl)
val id: String
get() = toolWindow.id
override fun getData(dataId: String): Any? {
return when {
PlatformDataKeys.TOOL_WINDOW.`is`(dataId) -> toolWindow
CommonDataKeys.PROJECT.`is`(dataId) -> toolWindow.toolWindowManager.project
else -> null
}
override fun uiDataSnapshot(sink: DataSink) {
sink[PlatformDataKeys.TOOL_WINDOW] = toolWindow
sink[CommonDataKeys.PROJECT] = toolWindow.toolWindowManager.project
}
override fun getMnemonic(): Int = mnemonic

View File

@@ -267,21 +267,18 @@ public final class TabbedPaneContentUI implements ContentUI, PropertyChangeListe
}
}
private final class MyTabbedPaneHolder extends TabbedPaneHolder implements DataProvider {
private final class MyTabbedPaneHolder extends TabbedPaneHolder implements UiDataProvider {
private MyTabbedPaneHolder(TabbedPaneWrapper wrapper) {
super(wrapper);
}
@Override
public Object getData(@NotNull String dataId) {
if (PlatformDataKeys.CONTENT_MANAGER.is(dataId)) {
return myManager;
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(PlatformDataKeys.CONTENT_MANAGER, myManager);
if (myManager.getContentCount() > 1) {
sink.set(PlatformDataKeys.NONEMPTY_CONTENT_MANAGER, myManager);
}
if (PlatformDataKeys.NONEMPTY_CONTENT_MANAGER.is(dataId) && myManager.getContentCount() > 1) {
return myManager;
}
return null;
}
}
}

View File

@@ -7,8 +7,8 @@ import com.intellij.find.findUsages.FindUsagesManager;
import com.intellij.find.impl.FindManagerImpl;
import com.intellij.ide.actions.exclusion.ExclusionHandler;
import com.intellij.ide.highlighter.ArchiveFileType;
import com.intellij.ide.impl.DataManagerImpl;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.ide.ui.IdeUiService;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.command.impl.UndoManagerImpl;
@@ -271,8 +271,8 @@ public class UsageViewTest extends BasePlatformTestCase {
Node nodeToExclude = (Node)usageNode[0].getParent();
JComponent component = usageView.getComponent();
DataProvider provider = DataManagerImpl.getDataProviderEx(component);
ExclusionHandler exclusionHandler = ExclusionHandler.EXCLUSION_HANDLER.getData(provider);
DataContext dataContext = IdeUiService.getInstance().createUiDataContext(component);
ExclusionHandler exclusionHandler = ExclusionHandler.EXCLUSION_HANDLER.getData(dataContext);
exclusionHandler.excludeNode(nodeToExclude);
UIUtil.dispatchAllInvocationEvents();

View File

@@ -604,7 +604,6 @@ c:com.intellij.execution.testframework.sm.runner.ui.SMTRunnerTestTreeView
- com.intellij.execution.testframework.TestTreeView
- sf:SM_TEST_RUNNER_VIEW:com.intellij.openapi.actionSystem.DataKey
- <init>():V
- getData(java.lang.String):java.lang.Object
- p:getPresentableName(com.intellij.execution.testframework.AbstractTestProxy):java.lang.String
- p:getRenderer(com.intellij.execution.testframework.TestConsoleProperties):javax.swing.tree.TreeCellRenderer
- getResultsViewer():com.intellij.execution.testframework.sm.runner.ui.TestResultsViewer
@@ -612,6 +611,7 @@ c:com.intellij.execution.testframework.sm.runner.ui.SMTRunnerTestTreeView
- s:getTestProxyFor(java.lang.Object):com.intellij.execution.testframework.sm.runner.SMTestProxy
- *:setAccessibleStatus(java.lang.String):V
- setTestResultsViewer(com.intellij.execution.testframework.sm.runner.ui.TestResultsViewer):V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
c:com.intellij.execution.testframework.sm.runner.ui.SMTRunnerUIActionsHandler
- com.intellij.execution.testframework.sm.runner.ui.TestResultsViewer$EventsListener
- <init>(com.intellij.execution.testframework.TestConsoleProperties):V

View File

@@ -21,6 +21,7 @@ import com.intellij.execution.testframework.TestTreeView;
import com.intellij.execution.testframework.sm.runner.SMTRunnerNodeDescriptor;
import com.intellij.execution.testframework.sm.runner.SMTestProxy;
import com.intellij.openapi.actionSystem.DataKey;
import com.intellij.openapi.actionSystem.DataSink;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
@@ -75,11 +76,9 @@ public class SMTRunnerTestTreeView extends TestTreeView {
}
@Override
public Object getData(@NotNull final String dataId) {
if (SM_TEST_RUNNER_VIEW.is(dataId)) {
return this;
}
return super.getData(dataId);
public void uiDataSnapshot(@NotNull DataSink sink) {
super.uiDataSnapshot(sink);
sink.set(SM_TEST_RUNNER_VIEW, this);
}
@Override

View File

@@ -204,12 +204,11 @@ a:com.intellij.execution.testframework.TestStatusListener
a:com.intellij.execution.testframework.TestTreeView
- com.intellij.ui.treeStructure.Tree
- com.intellij.ide.CopyProvider
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiCompatibleDataProvider
- sf:MODEL_DATA_KEY:com.intellij.openapi.actionSystem.DataKey
- <init>():V
- attachToModel(com.intellij.execution.testframework.TestFrameworkRunningModel):V
- getActionUpdateThread():com.intellij.openapi.actionSystem.ActionUpdateThread
- getData(java.lang.String):java.lang.Object
- p:getPresentableName(com.intellij.execution.testframework.AbstractTestProxy):java.lang.String
- pa:getRenderer(com.intellij.execution.testframework.TestConsoleProperties):javax.swing.tree.TreeCellRenderer
- getSelectedTest():com.intellij.execution.testframework.AbstractTestProxy
@@ -219,6 +218,7 @@ a:com.intellij.execution.testframework.TestTreeView
- isCopyEnabled(com.intellij.openapi.actionSystem.DataContext):Z
- isCopyVisible(com.intellij.openapi.actionSystem.DataContext):Z
- performCopy(com.intellij.openapi.actionSystem.DataContext):V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
com.intellij.execution.testframework.TestTreeViewAction
a:com.intellij.execution.testframework.TestTreeViewStructure
- com.intellij.ide.util.treeView.AbstractTreeStructure
@@ -437,7 +437,7 @@ a:com.intellij.execution.testframework.ui.BaseTestsOutputConsoleView
a:com.intellij.execution.testframework.ui.TestResultsPanel
- javax.swing.JPanel
- com.intellij.openapi.Disposable
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiCompatibleDataProvider
- pf:myConsole:javax.swing.JComponent
- pf:myConsoleActions:com.intellij.openapi.actionSystem.AnAction[]
- pf:myProperties:com.intellij.execution.testframework.TestConsoleProperties
@@ -449,12 +449,12 @@ a:com.intellij.execution.testframework.ui.TestResultsPanel
- p:createStatusLine():com.intellij.execution.testframework.ui.TestStatusLine
- pa:createTestTreeView():javax.swing.JComponent
- dispose():V
- getData(java.lang.String):java.lang.Object
- getStatusLine():com.intellij.execution.testframework.ui.TestStatusLine
- p:getTreeView():com.intellij.execution.testframework.TestTreeView
- p:hideToolbar():V
- initUI():V
- p:setLeftComponent(javax.swing.JComponent):V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
c:com.intellij.execution.testframework.ui.TestStatusLine
- com.intellij.ui.components.panels.NonOpaquePanel
- pf:myProgressBar:javax.swing.JProgressBar

View File

@@ -13,6 +13,7 @@ import com.intellij.openapi.ide.CopyPasteManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.pom.Navigatable;
import com.intellij.psi.PsiElement;
import com.intellij.ui.AnimatedIcon;
import com.intellij.ui.PopupHandler;
@@ -35,7 +36,7 @@ import java.util.Objects;
import static com.intellij.ui.render.RenderingHelper.SHRINK_LONG_RENDERER;
public abstract class TestTreeView extends Tree implements DataProvider, CopyProvider {
public abstract class TestTreeView extends Tree implements UiCompatibleDataProvider, CopyProvider {
public static final DataKey<TestFrameworkRunningModel> MODEL_DATA_KEY = DataKey.create("testFrameworkModel.dataId");
private TestFrameworkRunningModel myModel;
@@ -84,79 +85,56 @@ public abstract class TestTreeView extends Tree implements DataProvider, CopyPro
}
@Override
public Object getData(@NotNull final String dataId) {
if (PlatformDataKeys.COPY_PROVIDER.is(dataId)) {
return this;
}
if (AbstractTestProxy.DATA_KEYS.is(dataId)) {
TreePath[] paths = getSelectionPaths();
if (paths != null) {
return Arrays.stream(paths)
.map(path -> getSelectedTest(path))
.filter(Objects::nonNull)
.toArray(AbstractTestProxy[]::new);
}
}
if (MODEL_DATA_KEY.is(dataId)) {
return myModel;
}
public void uiDataSnapshot(@NotNull DataSink sink) {
TreePath[] paths = getSelectionPaths();
TreePath selectionPath = getSelectionPath();
if (selectionPath == null) return null;
sink.set(PlatformDataKeys.COPY_PROVIDER, this);
if (selectionPath == null) return;
sink.set(MODEL_DATA_KEY, myModel);
AbstractTestProxy[] testProxies = Arrays.stream(Objects.requireNonNull(paths))
.map(path -> getSelectedTest(path))
.filter(Objects::nonNull)
.toArray(AbstractTestProxy[]::new);
sink.set(AbstractTestProxy.DATA_KEYS, testProxies);
AbstractTestProxy testProxy = getSelectedTest(selectionPath);
if (testProxy == null) return null;
if (testProxy == null) return;
if (AbstractTestProxy.DATA_KEY.is(dataId) || CommonDataKeys.NAVIGATABLE.is(dataId)) {
return testProxy;
sink.set(AbstractTestProxy.DATA_KEY, testProxy);
if (testProxy instanceof Navigatable o) {
sink.set(CommonDataKeys.NAVIGATABLE, o);
}
RunProfile configuration = myModel.getProperties().getConfiguration();
if (configuration instanceof RunConfiguration o) {
sink.set(RunConfiguration.DATA_KEY, o);
}
if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
TestFrameworkRunningModel model = myModel;
return (DataProvider)slowId -> getSlowData(slowId, testProxy, model);
}
if (RunConfiguration.DATA_KEY.is(dataId)) {
RunProfile configuration = myModel.getProperties().getConfiguration();
if (configuration instanceof RunConfiguration) {
return configuration;
}
}
return null;
}
@Nullable
private Object getSlowData(@NotNull String dataId,
@NotNull AbstractTestProxy testProxy,
@NotNull TestFrameworkRunningModel model) {
Project project = model.getProperties().getProject();
if (CommonDataKeys.PSI_ELEMENT.is(dataId)) {
Project project = myModel.getProperties().getProject();
TestFrameworkRunningModel model = myModel;
sink.lazy(CommonDataKeys.PSI_ELEMENT, () -> {
Location<?> location = testProxy.getLocation(project, model.getProperties().getScope());
PsiElement psiElement = location != null ? location.getPsiElement() : null;
return psiElement == null || !psiElement.isValid() ? null : psiElement;
}
else if (Location.DATA_KEY.is(dataId)) {
});
sink.lazy(Location.DATA_KEY, () -> {
return testProxy.getLocation(project, model.getProperties().getScope());
}
else if (Location.DATA_KEYS.is(dataId)) {
AbstractTestProxy[] proxies = AbstractTestProxy.DATA_KEYS.getData(this);
return proxies == null ? null : Arrays.stream(proxies)
});
sink.lazy(Location.DATA_KEYS, () -> {
return Arrays.stream(testProxies)
.map(p -> p.getLocation(project, model.getProperties().getScope()))
.filter(Objects::nonNull)
.toArray(Location[]::new);
}
else if (PlatformCoreDataKeys.PSI_ELEMENT_ARRAY.is(dataId)) {
AbstractTestProxy[] proxies = AbstractTestProxy.DATA_KEYS.getData(this);
return proxies == null ? null : Arrays.stream(proxies)
});
sink.lazy(PlatformCoreDataKeys.PSI_ELEMENT_ARRAY, () -> {
return Arrays.stream(testProxies)
.map(p -> p.getLocation(project, model.getProperties().getScope()))
.filter(Objects::nonNull).map(l -> l.getPsiElement())
.toArray(PsiElement[]::new);
}
return null;
});
}
@Override
public void performCopy(@NotNull DataContext dataContext) {
final PsiElement element = CommonDataKeys.PSI_ELEMENT.getData(dataContext);
@@ -195,11 +173,15 @@ public abstract class TestTreeView extends Tree implements DataProvider, CopyPro
PopupHandler.installPopupMenu(this, IdeActions.GROUP_TESTTREE_POPUP, ActionPlaces.TESTTREE_VIEW_POPUP);
HintUpdateSupply.installHintUpdateSupply(this, obj -> {
Object userObject = TreeUtil.getUserObject(obj);
Object element = userObject instanceof NodeDescriptor? ((NodeDescriptor<?>)userObject).getElement() : null;
if (element instanceof AbstractTestProxy) {
return (PsiElement)getSlowData(CommonDataKeys.PSI_ELEMENT.getName(), (AbstractTestProxy)element, myModel);
Object element = userObject instanceof NodeDescriptor<?> o ? o.getElement() : null;
if (!(element instanceof AbstractTestProxy testProxy)) {
return null;
}
return null;
TestFrameworkRunningModel model = myModel;
Project project = model.getProperties().getProject();
Location<?> location = testProxy.getLocation(project, model.getProperties().getScope());
PsiElement psiElement = location != null ? location.getPsiElement() : null;
return psiElement == null || !psiElement.isValid() ? null : psiElement;
});
}

View File

@@ -18,7 +18,6 @@ import com.intellij.ui.components.panels.NonOpaquePanel;
import com.intellij.util.ui.JBUI;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -27,7 +26,7 @@ import javax.swing.border.CompoundBorder;
import java.awt.*;
public abstract class TestResultsPanel extends JPanel implements Disposable, DataProvider {
public abstract class TestResultsPanel extends JPanel implements Disposable, UiCompatibleDataProvider {
private JScrollPane myLeftPane;
protected final JComponent myConsole;
protected ToolbarPanel myToolbarPanel;
@@ -147,14 +146,9 @@ public abstract class TestResultsPanel extends JPanel implements Disposable, Dat
return null;
}
@Nullable
@Override
public Object getData(@NotNull @NonNls String dataId) {
final TestTreeView view = getTreeView();
if (view != null) {
return view.getData(dataId);
}
return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
DataSink.uiDataSnapshot(sink, getTreeView());
}
@Override

View File

@@ -65,7 +65,7 @@ c:com.intellij.usages.impl.UsageNode
- p:updateNotify():V
c:com.intellij.usages.impl.UsagePreviewPanel
- com.intellij.usages.impl.UsageContextPanelBase
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiCompatibleDataProvider
- sf:LINE_HEIGHT_PROPERTY:java.lang.String
- <init>(com.intellij.openapi.project.Project,com.intellij.usages.UsageViewPresentation):V
- <init>(com.intellij.openapi.project.Project,com.intellij.usages.UsageViewPresentation,Z):V
@@ -75,7 +75,6 @@ c:com.intellij.usages.impl.UsagePreviewPanel
- sf:createPreviewHtml(java.lang.String):java.lang.String
- dispose():V
- f:getCannotPreviewMessage(java.util.List):java.lang.String
- getData(java.lang.String):java.lang.Object
- f:getLineHeight():I
- sf:getNameElementTextRange(com.intellij.psi.PsiElement):com.intellij.openapi.util.TextRange
- sf:highlight(java.util.List,com.intellij.openapi.editor.Editor,com.intellij.openapi.project.Project,Z,I):V
@@ -83,6 +82,7 @@ c:com.intellij.usages.impl.UsagePreviewPanel
- f:releaseEditor():V
- removePropertyChangeListener(java.beans.PropertyChangeListener):V
- f:setShowTooltipBalloon(Z):V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
- p:updateLayoutLater(java.util.List):V
- updateLayoutLater(java.util.List,com.intellij.usages.UsageView):V
com.intellij.usages.impl.UsageViewElementsListener

View File

@@ -10,8 +10,8 @@ import com.intellij.find.findUsages.similarity.MostCommonUsagePatternsComponent.
import com.intellij.ide.IdeTooltipManager
import com.intellij.lang.injection.InjectedLanguageManager
import com.intellij.openapi.actionSystem.CommonDataKeys
import com.intellij.openapi.actionSystem.DataProvider
import com.intellij.openapi.actionSystem.PlatformCoreDataKeys
import com.intellij.openapi.actionSystem.DataSink
import com.intellij.openapi.actionSystem.UiCompatibleDataProvider
import com.intellij.openapi.application.*
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.editor.*
@@ -36,7 +36,6 @@ import com.intellij.openapi.util.*
import com.intellij.openapi.util.registry.Registry
import com.intellij.openapi.util.text.HtmlBuilder
import com.intellij.openapi.util.text.StringUtil
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.platform.util.coroutines.childScope
import com.intellij.pom.Navigatable
import com.intellij.psi.PsiDocumentManager
@@ -70,7 +69,6 @@ import kotlinx.coroutines.withContext
import org.jetbrains.annotations.ApiStatus
import org.jetbrains.annotations.ApiStatus.Internal
import org.jetbrains.annotations.Contract
import org.jetbrains.annotations.NonNls
import java.awt.BorderLayout
import java.awt.Font
import java.awt.Graphics
@@ -88,7 +86,7 @@ import kotlin.Pair
open class UsagePreviewPanel @JvmOverloads constructor(project: Project,
presentation: UsageViewPresentation,
private val myIsEditor: Boolean = false)
: UsageContextPanelBase(presentation), DataProvider {
: UsageContextPanelBase(presentation), UiCompatibleDataProvider {
private var myEditor: Editor? = null
private var myLineHeight = 0
@@ -103,18 +101,15 @@ open class UsagePreviewPanel @JvmOverloads constructor(project: Project,
private val cs = UsageViewCoroutineScopeProvider.getInstance(project).coroutineScope.childScope()
private var myShowTooltipBalloon = Registry.`is`("ide.find.show.tooltip.in.preview")
override fun getData(dataId: @NonNls String): Any? {
if (myEditor == null) return null
if (CommonDataKeys.EDITOR.`is`(dataId)) {
return myEditor
override fun uiDataSnapshot(sink: DataSink) {
val editor = myEditor ?: return
sink[CommonDataKeys.EDITOR] = editor
val position = editor.caretModel.logicalPosition
val project = editor.project ?: return
sink.lazy(CommonDataKeys.NAVIGATABLE_ARRAY) {
val file = FileDocumentManager.getInstance().getFile(editor.document) ?: return@lazy null
arrayOf<Navigatable>(OpenFileDescriptor(project, file, position.line, position.column))
}
if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.`is`(dataId)) {
val file = FileDocumentManager.getInstance().getFile(myEditor!!.document) ?: return null
val position = myEditor!!.caretModel.logicalPosition
val project = myEditor!!.project ?: return null
return DataProvider { slowId: String -> getSlowData(slowId, project, file, position) }
}
return null
}
fun setShowTooltipBalloon(showTooltipBalloon: Boolean) {
@@ -416,15 +411,6 @@ open class UsagePreviewPanel @JvmOverloads constructor(project: Project,
companion object {
const val LINE_HEIGHT_PROPERTY = "UsageViewPanel.lineHeightProperty"
private val LOG = Logger.getInstance(UsagePreviewPanel::class.java)
private fun getSlowData(dataId: String,
project: Project,
file: VirtualFile,
position: LogicalPosition): Any? {
return if (CommonDataKeys.NAVIGATABLE_ARRAY.`is`(dataId)) {
arrayOf<Navigatable>(OpenFileDescriptor(project, file, position.line, position.column))
}
else null
}
private val IN_PREVIEW_USAGE_FLAG = Key.create<Boolean>("IN_PREVIEW_USAGE_FLAG")

View File

@@ -7,7 +7,6 @@ import com.intellij.find.FindManager;
import com.intellij.icons.AllIcons;
import com.intellij.ide.*;
import com.intellij.ide.actions.exclusion.ExclusionHandler;
import com.intellij.ide.impl.DataValidators;
import com.intellij.lang.Language;
import com.intellij.navigation.NavigationItem;
import com.intellij.openapi.Disposable;
@@ -1900,7 +1899,7 @@ public class UsageViewImpl implements UsageViewEx {
return myModel.areTargetsValid();
}
private final class MyPanel extends JPanel implements DataProvider, OccurenceNavigator, Disposable {
private final class MyPanel extends JPanel implements UiDataProvider, OccurenceNavigator, Disposable {
private @Nullable OccurenceNavigatorSupport mySupport;
private final CopyProvider myCopyProvider;
@@ -1987,77 +1986,50 @@ public class UsageViewImpl implements UsageViewEx {
}
@Override
public @Nullable Object getData(@NotNull String dataId) {
if (CommonDataKeys.PROJECT.is(dataId)) {
return myProject;
}
else if (USAGE_VIEW_KEY.is(dataId)) {
return UsageViewImpl.this;
}
else if (PlatformCoreDataKeys.HELP_ID.is(dataId)) {
return HELP_ID;
}
else if (PlatformDataKeys.COPY_PROVIDER.is(dataId)) {
return myCopyProvider;
}
else if (ExclusionHandler.EXCLUSION_HANDLER.is(dataId)) {
return myExclusionHandler;
}
else if (PlatformDataKeys.EXPORTER_TO_TEXT_FILE.is(dataId)) {
return myTextFileExporter;
}
else if (CommonDataKeys.NAVIGATABLE_ARRAY.is(dataId)) {
return ContainerUtil.mapNotNull(selectedNodes(), n-> ObjectUtils.tryCast(TreeUtil.getUserObject(n), Navigatable.class))
.toArray(Navigatable.EMPTY_NAVIGATABLE_ARRAY);
}
else if (USAGE_TARGETS_KEY.is(dataId)) {
var targets = ContainerUtil.mapNotNull(
selectedNodes(),
o -> o instanceof UsageTargetNode ? ((UsageTargetNode)o).getTarget() : null
);
return targets.isEmpty() ? null : targets.toArray(UsageTarget.EMPTY_ARRAY);
}
else {
DataProvider selectedProvider = ObjectUtils.tryCast(TreeUtil.getUserObject(getSelectedNode()), DataProvider.class);
if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
List<TreeNode> selectedNodes = allSelectedNodes();
DataProvider selectedBgtProvider = selectedProvider == null ? null : PlatformCoreDataKeys.BGT_DATA_PROVIDER.getData(selectedProvider);
return CompositeDataProvider.compose(slowId -> getSlowData(slowId, selectedNodes), selectedBgtProvider);
}
Object nodeData = selectedProvider != null ? selectedProvider.getData(dataId) : null;
if (nodeData != null) {
return DataValidators.validOrNull(nodeData, dataId, selectedProvider);
}
}
return null;
}
}
public void uiDataSnapshot(@NotNull DataSink sink) {
List<TreeNode> selection = selectedNodes();
private static @Nullable Object getSlowData(@NotNull String dataId, @NotNull List<@NotNull TreeNode> selectedNodes) {
if (USAGES_KEY.is(dataId)) {
return selectedUsages(selectedNodes)
.toArray(n -> n == 0 ? Usage.EMPTY_ARRAY : new Usage[n]);
sink.set(CommonDataKeys.PROJECT, myProject);
sink.set(USAGE_VIEW_KEY, UsageViewImpl.this);
sink.set(PlatformCoreDataKeys.HELP_ID, HELP_ID);
sink.set(PlatformDataKeys.COPY_PROVIDER, myCopyProvider);
sink.set(ExclusionHandler.EXCLUSION_HANDLER, myExclusionHandler);
sink.set(PlatformDataKeys.EXPORTER_TO_TEXT_FILE, myTextFileExporter);
sink.set(CommonDataKeys.NAVIGATABLE_ARRAY, ContainerUtil.mapNotNull(
selection, n -> ObjectUtils.tryCast(TreeUtil.getUserObject(n), Navigatable.class))
.toArray(Navigatable.EMPTY_NAVIGATABLE_ARRAY));
var targets = ContainerUtil.mapNotNull(
selection, o -> o instanceof UsageTargetNode oo ? oo.getTarget() : null);
sink.set(USAGE_TARGETS_KEY, targets.isEmpty() ? null : targets.toArray(UsageTarget.EMPTY_ARRAY));
List<TreeNode> selectedNodes = allSelectedNodes();
DataSink.uiDataSnapshot(sink, TreeUtil.getUserObject(getSelectedNode()));
sink.lazy(USAGES_KEY, () -> {
return selectedUsages(selectedNodes)
.toArray(n -> n == 0 ? Usage.EMPTY_ARRAY : new Usage[n]);
});
sink.lazy(PlatformCoreDataKeys.PSI_ELEMENT_ARRAY, () -> {
return selectedUsages(selectedNodes)
.filter(usage -> usage instanceof PsiElementUsage)
.map(usage -> ((PsiElementUsage)usage).getElement())
.filter(element -> element != null)
.toArray(PsiElement.ARRAY_FACTORY::create);
});
sink.lazy(CommonDataKeys.VIRTUAL_FILE_ARRAY, () -> {
return JBIterable.from(selectedNodes)
.filterMap(o -> o instanceof UsageNode ? ((UsageNode)o).getUsage() :
o instanceof UsageTargetNode ? ((UsageTargetNode)o).getTarget() : null)
.flatMap(o -> o instanceof UsageInFile oo ? ContainerUtil.createMaybeSingletonList(oo.getFile()) :
o instanceof UsageInFiles oo ? Arrays.asList(oo.getFiles()) :
o instanceof UsageTarget oo
? Arrays.asList(ObjectUtils.notNull(oo.getFiles(), VirtualFile.EMPTY_ARRAY))
: Collections.emptyList())
.filter(VirtualFile::isValid)
.unique()
.toArray(VirtualFile.EMPTY_ARRAY);
});
}
if (PlatformCoreDataKeys.PSI_ELEMENT_ARRAY.is(dataId)) {
return selectedUsages(selectedNodes)
.filter(usage -> usage instanceof PsiElementUsage)
.map(usage -> ((PsiElementUsage)usage).getElement())
.filter(element -> element != null)
.toArray(PsiElement.ARRAY_FACTORY::create);
}
if (CommonDataKeys.VIRTUAL_FILE_ARRAY.is(dataId)) {
return JBIterable.from(selectedNodes)
.filterMap(o -> o instanceof UsageNode ? ((UsageNode)o).getUsage() :
o instanceof UsageTargetNode ? ((UsageTargetNode)o).getTarget() : null)
.flatMap(o -> o instanceof UsageInFile ? ContainerUtil.createMaybeSingletonList(((UsageInFile)o).getFile()) :
o instanceof UsageInFiles ? Arrays.asList(((UsageInFiles)o).getFiles()) :
o instanceof UsageTarget ? Arrays.asList(ObjectUtils.notNull(((UsageTarget)o).getFiles(), VirtualFile.EMPTY_ARRAY)) :
Collections.emptyList())
.filter(VirtualFile::isValid)
.unique()
.toArray(VirtualFile.EMPTY_ARRAY);
}
return null;
}
private static @NotNull Stream<@NotNull Usage> selectedUsages(@NotNull List<@NotNull TreeNode> selectedNodes) {

View File

@@ -2,7 +2,6 @@
package com.intellij.usages.impl;
import com.intellij.find.SearchInBackgroundOption;
import com.intellij.ide.impl.DataManagerImpl;
import com.intellij.injected.editor.VirtualFileWindow;
import com.intellij.lang.Language;
import com.intellij.notebook.editor.BackedVirtualFile;
@@ -217,7 +216,7 @@ public class UsageViewManagerImpl extends UsageViewManager {
@NotNull Supplier<SearchScope> getMaxSearchScopeToWarnOfFallingOutOf(UsageTarget @NotNull [] searchFor) {
UsageTarget target = searchFor.length > 0 ? searchFor[0] : null;
DataProvider dataProvider = DataManagerImpl.getDataProviderEx(target);
DataProvider dataProvider = target instanceof DataProvider o ? o : null;
SearchScope scope = dataProvider != null ? UsageView.USAGE_SCOPE.getData(dataProvider) : null;
if (scope != null) {
return () -> scope;

View File

@@ -1223,15 +1223,15 @@ f:com.intellij.xdebugger.impl.frame.XDebugViewSessionListener
- stackFrameChanged():V
c:com.intellij.xdebugger.impl.frame.XDebuggerFramesList
- com.intellij.xdebugger.impl.frame.DebuggerFramesList
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiCompatibleDataProvider
- <init>(com.intellij.openapi.project.Project):V
- p:createListRenderer():javax.swing.ListCellRenderer
- getData(java.lang.String):java.lang.Object
- p:getFrameNavigatable(com.intellij.xdebugger.frame.XStackFrame,Z):com.intellij.pom.Navigatable
- getSelectedFrame():com.intellij.xdebugger.frame.XStackFrame
- p:getSelectedFrameNavigatable():com.intellij.pom.Navigatable
- selectFrame(I):Z
- selectFrame(com.intellij.xdebugger.frame.XStackFrame):Z
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
- updateUI():V
c:com.intellij.xdebugger.impl.frame.XDebuggerFramesList$CopyStackAction
- com.intellij.openapi.project.DumbAwareAction
@@ -2332,7 +2332,7 @@ c:com.intellij.xdebugger.impl.ui.tree.ValueMarkup
c:com.intellij.xdebugger.impl.ui.tree.XDebuggerTree
- com.intellij.ide.dnd.aware.DnDAwareTree
- com.intellij.openapi.Disposable
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiCompatibleDataProvider
- sf:SELECTED_NODES:com.intellij.openapi.actionSystem.DataKey
- sf:XDEBUGGER_TREE_KEY:com.intellij.openapi.actionSystem.DataKey
- <init>(com.intellij.openapi.project.Project,com.intellij.xdebugger.evaluation.XDebuggerEditorsProvider,com.intellij.xdebugger.XSourcePosition,java.lang.String,com.intellij.xdebugger.impl.frame.XValueMarkers):V
@@ -2341,7 +2341,6 @@ c:com.intellij.xdebugger.impl.ui.tree.XDebuggerTree
- childrenLoaded(com.intellij.xdebugger.impl.ui.tree.nodes.XDebuggerTreeNode,java.util.List,Z):V
- dispose():V
- expandNodesOnLoad(com.intellij.openapi.util.Condition):V
- getData(java.lang.String):java.lang.Object
- getEditorsProvider():com.intellij.xdebugger.evaluation.XDebuggerEditorsProvider
- getProject():com.intellij.openapi.project.Project
- getRoot():com.intellij.xdebugger.impl.ui.tree.nodes.XDebuggerTreeNode
@@ -2362,6 +2361,7 @@ c:com.intellij.xdebugger.impl.ui.tree.XDebuggerTree
- selectNodeOnLoad(com.intellij.openapi.util.Condition,com.intellij.openapi.util.Condition):V
- setRoot(com.intellij.xdebugger.impl.ui.tree.nodes.XDebuggerTreeNode,Z):V
- setSourcePosition(com.intellij.xdebugger.XSourcePosition):V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
- updateEditor():V
a:com.intellij.xdebugger.impl.ui.tree.XDebuggerTreeInplaceEditor
- com.intellij.xdebugger.impl.ui.tree.TreeInplaceEditor
@@ -2859,6 +2859,7 @@ e:com.intellij.xdebugger.memory.tracking.TrackingType
a:com.intellij.xdebugger.memory.ui.ClassesFilteredViewBase
- com.intellij.util.ui.components.BorderLayoutPanel
- com.intellij.openapi.Disposable
- com.intellij.openapi.actionSystem.UiDataProvider
- psf:DEFAULT_BATCH_SIZE:I
- psf:DELAY_BEFORE_INSTANCES_QUERY_COEFFICIENT:D
- psf:MAX_DELAY_MILLIS:D
@@ -2870,19 +2871,19 @@ a:com.intellij.xdebugger.memory.ui.ClassesFilteredViewBase
- p:doActivate():V
- p:doPause():V
- p:getAdditionalSessionListener():com.intellij.xdebugger.XDebugSessionListener
- getData(java.lang.String):java.lang.Object
- getDefaultFocusedComponent():javax.swing.JComponent
- pa:getInstancesWindow(com.intellij.xdebugger.memory.ui.TypeInfo,com.intellij.xdebugger.XDebugSession):com.intellij.xdebugger.memory.ui.InstancesWindowBase
- p:getStrategy(com.intellij.xdebugger.memory.ui.TypeInfo):com.intellij.xdebugger.memory.tracking.TrackerForNewInstancesBase
- getTable():com.intellij.xdebugger.memory.ui.ClassesTable
- p:handleClassSelection(com.intellij.xdebugger.memory.ui.TypeInfo):V
- pa:scheduleUpdateClassesCommand(com.intellij.xdebugger.frame.XSuspendContext):V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
- p:updateClassesAndCounts(Z):V
- p:viewUpdated():V
c:com.intellij.xdebugger.memory.ui.ClassesTable
- com.intellij.ui.table.JBTable
- com.intellij.openapi.Disposable
- com.intellij.openapi.actionSystem.DataProvider
- com.intellij.openapi.actionSystem.UiDataProvider
- sf:REF_COUNT_PROVIDER_KEY:com.intellij.openapi.actionSystem.DataKey
- sf:SELECTED_CLASS_KEY:com.intellij.openapi.actionSystem.DataKey
- <init>(com.intellij.openapi.project.Project,com.intellij.xdebugger.memory.ui.ClassesFilteredViewBase,Z,Z,Z):V
@@ -2891,7 +2892,6 @@ c:com.intellij.xdebugger.memory.ui.ClassesTable
- dispose():V
- getClassByName(java.lang.String):com.intellij.xdebugger.memory.ui.TypeInfo
- p:getColumnDescriptors():com.intellij.xdebugger.memory.utils.AbstractTableColumnDescriptor[]
- getData(java.lang.String):java.lang.Object
- getSelectedClass():com.intellij.xdebugger.memory.ui.TypeInfo
- p:getTableModel():com.intellij.xdebugger.memory.ui.ClassesTable$DiffViewTableModel
- p:getTableSortingKeys():java.util.List
@@ -2899,6 +2899,7 @@ c:com.intellij.xdebugger.memory.ui.ClassesTable
- isInClickableMode():Z
- makeClickable(java.lang.Runnable):V
- setBusy(Z):V
- uiDataSnapshot(com.intellij.openapi.actionSystem.DataSink):V
- updateClassesOnly(java.util.List):V
- updateContent(java.util.Map):V
c:com.intellij.xdebugger.memory.ui.ClassesTable$DiffViewTableModel

View File

@@ -30,7 +30,6 @@ import com.intellij.xdebugger.impl.ui.tree.XDebuggerTree;
import com.intellij.xdebugger.impl.ui.tree.XDebuggerTreePanel;
import com.intellij.xdebugger.impl.ui.tree.nodes.EvaluatingExpressionRootNode;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -384,14 +383,10 @@ public class XDebuggerEvaluationDialog extends DialogWrapper {
}
}
private class EvaluationMainPanel extends BorderLayoutPanel implements DataProvider {
@Nullable
private class EvaluationMainPanel extends BorderLayoutPanel implements UiDataProvider {
@Override
public Object getData(@NotNull @NonNls String dataId) {
if (KEY.is(dataId)) {
return XDebuggerEvaluationDialog.this;
}
return null;
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(KEY, XDebuggerEvaluationDialog.this);
}
@Override

View File

@@ -39,7 +39,6 @@ import com.intellij.xdebugger.XSourcePosition;
import com.intellij.xdebugger.frame.XDropFrameHandler;
import com.intellij.xdebugger.frame.XStackFrame;
import com.intellij.xml.util.XmlStringUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -54,7 +53,7 @@ import java.util.*;
import static com.intellij.xdebugger.impl.XDebuggerUtilImpl.wrapKeepEditorAreaFocusNavigatable;
public class XDebuggerFramesList extends DebuggerFramesList implements DataProvider {
public class XDebuggerFramesList extends DebuggerFramesList implements UiCompatibleDataProvider {
private final Project myProject;
private final FileColorsCache myFileColorsCache;
private static final DataKey<XDebuggerFramesList> FRAMES_LIST = DataKey.create("FRAMES_LIST");
@@ -133,47 +132,32 @@ public class XDebuggerFramesList extends DebuggerFramesList implements DataProvi
}
@Override
public @Nullable Object getData(@NonNls @NotNull String dataId) {
if (FRAMES_LIST.is(dataId)) {
return this;
}
// Because of the overridden locationToIndex(), the default logic of retrieving the context menu point doesn't work.
// Here, were mimic the way PopupFactoryImpl.guessBestPopupLocation(JComponent) calculates it for JLists.
if (PlatformDataKeys.CONTEXT_MENU_POINT.is(dataId)) {
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(FRAMES_LIST, this);
{
// Because of the overridden locationToIndex(), the default logic of retrieving the context menu point doesn't work.
// Here, were mimic the way PopupFactoryImpl.guessBestPopupLocation(JComponent) calculates it for JLists.
int index = getSelectedIndex();
if (index != -1) {
Rectangle cellBounds = getCellBounds(index, index);
if (cellBounds != null) {
Rectangle visibleRect = getVisibleRect();
return new Point(visibleRect.x + visibleRect.width / 4, cellBounds.y + cellBounds.height - 1);
}
}
return null;
}
if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
XStackFrame frame = getSelectedFrame();
if (frame != null) {
return (DataProvider)realDataId -> getSlowData(frame, realDataId);
Rectangle cellBounds = index != -1 ? getCellBounds(index, index) : null;
if (cellBounds != null) {
Rectangle visibleRect = getVisibleRect();
sink.set(PlatformDataKeys.CONTEXT_MENU_POINT,
new Point(visibleRect.x + visibleRect.width / 4, cellBounds.y + cellBounds.height - 1));
}
}
return null;
}
@Nullable
private Object getSlowData(@NotNull XStackFrame frame, @NonNls String dataId) {
if (CommonDataKeys.NAVIGATABLE.is(dataId)) {
XStackFrame frame = getSelectedFrame();
if (frame == null) return;
sink.lazy(CommonDataKeys.NAVIGATABLE, () -> {
return getFrameNavigatable(frame, true);
}
if (CommonDataKeys.VIRTUAL_FILE.is(dataId)) {
});
sink.lazy(CommonDataKeys.VIRTUAL_FILE, () -> {
return getFile(frame);
}
if (CommonDataKeys.PSI_FILE.is(dataId)) {
});
sink.lazy(CommonDataKeys.PSI_FILE, () -> {
VirtualFile file = getFile(frame);
if (file != null && file.isValid()) {
return PsiManager.getInstance(myProject).findFile(file);
}
}
return null;
return file != null && file.isValid() ?
PsiManager.getInstance(myProject).findFile(file) : null;
});
}
@SuppressWarnings("unchecked")

View File

@@ -2,7 +2,10 @@
package com.intellij.xdebugger.impl.ui;
import com.intellij.lang.Language;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.CommonShortcuts;
import com.intellij.openapi.actionSystem.DataSink;
import com.intellij.openapi.actionSystem.LangDataKeys;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.ex.EditorEx;
import com.intellij.openapi.editor.ex.util.EditorUtil;
@@ -53,8 +56,8 @@ public class XDebuggerExpressionEditor extends XDebuggerEditorBase {
super(project, debuggerEditorsProvider, multiline ? EvaluationMode.CODE_FRAGMENT : EvaluationMode.EXPRESSION, historyId, sourcePosition,
psiContext);
myExpression = XExpressionImpl.changeMode(text, getMode());
myEditorTextField =
new EditorTextField(createDocument(myExpression), project, debuggerEditorsProvider.getFileType(), false, !multiline) {
myEditorTextField = new EditorTextField(
createDocument(myExpression), project, debuggerEditorsProvider.getFileType(), false, !multiline) {
@Override
protected @NotNull EditorEx createEditor() {
final EditorEx editor = super.createEditor();
@@ -78,24 +81,13 @@ public class XDebuggerExpressionEditor extends XDebuggerEditorBase {
return editor;
}
@Override
public Object getData(@NotNull String dataId) {
if (LangDataKeys.CONTEXT_LANGUAGES.is(dataId)) {
return new Language[]{myExpression.getLanguage()};
}
else if (PlatformCoreDataKeys.BGT_DATA_PROVIDER.is(dataId)) {
return (DataProvider)slowId -> getSlowData(slowId);
}
return super.getData(dataId);
}
private @Nullable Object getSlowData(@NotNull String dataId) {
if (CommonDataKeys.PSI_FILE.is(dataId)) {
return PsiDocumentManager.getInstance(getProject()).getPsiFile(getDocument());
}
return null;
}
};
@Override
public void uiDataSnapshot(@NotNull DataSink sink) {
super.uiDataSnapshot(sink);
sink.lazy(LangDataKeys.CONTEXT_LANGUAGES, () -> new Language[]{myExpression.getLanguage()});
sink.lazy(CommonDataKeys.PSI_FILE, () -> PsiDocumentManager.getInstance(getProject()).getPsiFile(getDocument()));
}
};
if (editorFont) {
myEditorTextField.setFontInheritedFromLAF(false);
myEditorTextField.setFont(EditorUtil.getEditorFont());

View File

@@ -34,7 +34,6 @@ import com.intellij.xdebugger.impl.ui.XDebugSessionTab;
import com.intellij.xdebugger.impl.ui.tree.nodes.*;
import one.util.streamex.StreamEx;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -49,7 +48,7 @@ import java.awt.event.*;
import java.util.List;
import java.util.function.Function;
public class XDebuggerTree extends DnDAwareTree implements DataProvider, Disposable {
public class XDebuggerTree extends DnDAwareTree implements UiCompatibleDataProvider, Disposable {
private final ComponentListener myMoveListener = new ComponentAdapter() {
@Override
public void componentMoved(ComponentEvent e) {
@@ -350,20 +349,13 @@ public class XDebuggerTree extends DnDAwareTree implements DataProvider, Disposa
}
@Override
public @Nullable Object getData(final @NotNull @NonNls String dataId) {
if (XDEBUGGER_TREE_KEY.is(dataId)) {
return this;
public void uiDataSnapshot(@NotNull DataSink sink) {
XValueNodeImpl[] selection = getSelectedNodes(XValueNodeImpl.class, null);
sink.set(XDEBUGGER_TREE_KEY, this);
sink.set(SELECTED_NODES, List.of(selection));
if (selection.length == 1 && selection[0].getFullValueEvaluator() == null) {
sink.set(PlatformDataKeys.PREDEFINED_TEXT, DebuggerUIUtil.getNodeRawValue(selection[0]));
}
if (SELECTED_NODES.is(dataId)) {
return List.of(getSelectedNodes(XValueNodeImpl.class, null));
}
if (PlatformDataKeys.PREDEFINED_TEXT.is(dataId)) {
XValueNodeImpl[] selectedNodes = getSelectedNodes(XValueNodeImpl.class, null);
if (selectedNodes.length == 1 && selectedNodes[0].getFullValueEvaluator() == null) {
return DebuggerUIUtil.getNodeRawValue(selectedNodes[0]);
}
}
return null;
}
public void rebuildAndRestore(final XDebuggerTreeState treeState) {

View File

@@ -4,10 +4,7 @@ package com.intellij.xdebugger.memory.ui;
import com.intellij.icons.AllIcons;
import com.intellij.notification.NotificationType;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.ActionManager;
import com.intellij.openapi.actionSystem.ActionPlaces;
import com.intellij.openapi.actionSystem.DefaultActionGroup;
import com.intellij.openapi.actionSystem.Presentation;
import com.intellij.openapi.actionSystem.*;
import com.intellij.openapi.actionSystem.impl.ActionButton;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.Project;
@@ -40,7 +37,7 @@ import java.awt.event.KeyEvent;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
public abstract class ClassesFilteredViewBase extends BorderLayoutPanel implements Disposable {
public abstract class ClassesFilteredViewBase extends BorderLayoutPanel implements UiDataProvider, Disposable {
protected static final double DELAY_BEFORE_INSTANCES_QUERY_COEFFICIENT = 0.5;
protected static final double MAX_DELAY_MILLIS = TimeUnit.SECONDS.toMillis(2);
protected static final int DEFAULT_BATCH_SIZE = Integer.MAX_VALUE;
@@ -264,11 +261,10 @@ public abstract class ClassesFilteredViewBase extends BorderLayoutPanel implemen
return myTable;
}
public Object getData(@NotNull String dataId) {
return null;
@Override
public void uiDataSnapshot(@NotNull DataSink sink) {
}
private static class FilterTextField extends SearchTextField {
FilterTextField() {
super(false);

View File

@@ -28,7 +28,6 @@ import com.intellij.xdebugger.memory.tracking.TrackerForNewInstancesBase;
import com.intellij.xdebugger.memory.tracking.TrackingType;
import com.intellij.xdebugger.memory.utils.AbstractTableColumnDescriptor;
import com.intellij.xdebugger.memory.utils.AbstractTableModelWithColumns;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -46,7 +45,7 @@ import java.util.List;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
public class ClassesTable extends JBTable implements DataProvider, Disposable {
public class ClassesTable extends JBTable implements UiDataProvider, Disposable {
public static final DataKey<TypeInfo> SELECTED_CLASS_KEY = DataKey.create("ClassesTable.SelectedClass");
public static final DataKey<ReferenceCountProvider> REF_COUNT_PROVIDER_KEY =
DataKey.create("ClassesTable.ReferenceCountProvider");
@@ -377,18 +376,11 @@ public class ClassesTable extends JBTable implements DataProvider, Disposable {
fireTableDataChanged();
}
@Nullable
@Override
public Object getData(@NotNull @NonNls String dataId) {
if (SELECTED_CLASS_KEY.is(dataId)) {
return getSelectedClass();
}
if (REF_COUNT_PROVIDER_KEY.is(dataId)) {
return myCountProvider;
}
return myParent.getData(dataId);
public void uiDataSnapshot(@NotNull DataSink sink) {
sink.set(SELECTED_CLASS_KEY, getSelectedClass());
sink.set(REF_COUNT_PROVIDER_KEY, myCountProvider);
DataSink.uiDataSnapshot(sink, myParent);
}
public void clean(@NotNull @NlsContexts.StatusText String emptyText) {

View File

@@ -1,6 +1,7 @@
package com.intellij.searchEverywhereMl.typos
import com.intellij.ide.actions.searcheverywhere.*
import com.intellij.ide.ui.IdeUiService
import com.intellij.openapi.actionSystem.PlatformDataKeys
import com.intellij.openapi.progress.ProgressIndicator
import com.intellij.testFramework.LightPlatformTestCase
@@ -18,8 +19,8 @@ class SearchEverywhereTyposUITest : LightPlatformTestCase() {
MockSpellingCorrector())
val elements = PlatformTestUtil.waitForFuture(searchEverywhereUI.findElementsForPattern ("colop"))
assert(elements.size == 2)
val selected = searchEverywhereUI.getData(PlatformDataKeys.SELECTED_ITEM.name)
val seContext = IdeUiService.getInstance().createUiDataContext(searchEverywhereUI)
val selected = seContext.getData(PlatformDataKeys.SELECTED_ITEM)
Assert.assertEquals("Show Color Picker", selected)
}
}