From 024dc5598b99433bbcc834eb73c47361cda38226 Mon Sep 17 00:00:00 2001 From: "Dmitry.Barashev" Date: Thu, 11 Sep 2025 13:50:10 +0000 Subject: [PATCH] Fixes "Compare Data" dropdown in the data grid. Introduced two interfaces instead of corresponding methods of TableEditorBase, replaced the usages and implemented interfaces. Merge-request: IJ-MR-175208 Merged-by: Dmitry Barashev GitOrigin-RevId: 7512512b973b7a648213bbfa6c3c78c951704e68 --- grid/impl/src/datagrid/GridUtil.java | 5 +++-- grid/impl/src/datagrid/GridWidget.java | 4 ++-- grid/impl/src/editor/TableEditorBase.java | 11 +++++++++- grid/impl/src/editor/TableEditorInterfaces.kt | 20 +++++++++++++++++++ 4 files changed, 35 insertions(+), 5 deletions(-) create mode 100644 grid/impl/src/editor/TableEditorInterfaces.kt diff --git a/grid/impl/src/datagrid/GridUtil.java b/grid/impl/src/datagrid/GridUtil.java index 48fd7d5c57c8..7d22c8aaafe2 100644 --- a/grid/impl/src/datagrid/GridUtil.java +++ b/grid/impl/src/datagrid/GridUtil.java @@ -10,6 +10,7 @@ import com.intellij.database.csv.CsvSettingsService; import com.intellij.database.data.types.BaseConversionGraph; import com.intellij.database.data.types.DataTypeConversion; import com.intellij.database.datagrid.HierarchicalColumnsDataGridModel.HierarchicalGridColumn; +import com.intellij.database.editor.DataGridContainer; import com.intellij.database.editor.TableEditorBase; import com.intellij.database.extractors.*; import com.intellij.database.extractors.DatabaseObjectFormatterConfig.DatabaseDisplayObjectFormatterConfig; @@ -437,8 +438,8 @@ public class GridUtil extends GridUtilCore { public static @Nullable DataGrid getDataGrid(DataContext dataContext) { FileEditor editor = PlatformCoreDataKeys.FILE_EDITOR.getData(dataContext); - if (editor instanceof TableEditorBase) { - return ((TableEditorBase)editor).getDataGrid(); + if (editor instanceof DataGridContainer) { + return ((DataGridContainer)editor).getDataGrid(); } DataGrid grid = editor == null ? null : editor.getUserData(GRID_KEY); return grid != null ? grid : DatabaseDataKeys.DATA_GRID_KEY.getData(dataContext); diff --git a/grid/impl/src/datagrid/GridWidget.java b/grid/impl/src/datagrid/GridWidget.java index a849c30c081b..77fe8c9f7d78 100644 --- a/grid/impl/src/datagrid/GridWidget.java +++ b/grid/impl/src/datagrid/GridWidget.java @@ -2,7 +2,7 @@ package com.intellij.database.datagrid; import com.intellij.database.DataGridBundle; import com.intellij.database.datagrid.DataGrid.ActiveGridListener; -import com.intellij.database.editor.TableEditorBase; +import com.intellij.database.editor.DataGridContainer; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.fileEditor.FileEditor; import com.intellij.openapi.fileEditor.FileEditorManagerEvent; @@ -128,7 +128,7 @@ public abstract class GridWidget implements StatusBarWidget, CustomStatusBarWidg private @Nullable DataGrid getDataGrid(@NotNull StatusBar bar) { if (myProject.isDisposed()) return null; FileEditor fileEditor = StatusBarUtil.getCurrentFileEditor(bar); - return fileEditor instanceof TableEditorBase ? ((TableEditorBase)fileEditor).getDataGrid() : null; + return fileEditor instanceof DataGridContainer ? ((DataGridContainer)fileEditor).getDataGrid() : null; } protected void set(@Nullable DataGrid grid, @NotNull StatusBar statusBar) { diff --git a/grid/impl/src/editor/TableEditorBase.java b/grid/impl/src/editor/TableEditorBase.java index d1047a1b003b..5ba9e401de5b 100644 --- a/grid/impl/src/editor/TableEditorBase.java +++ b/grid/impl/src/editor/TableEditorBase.java @@ -2,6 +2,9 @@ package com.intellij.database.editor; import com.intellij.database.DataGridBundle; import com.intellij.database.datagrid.DataGrid; +import com.intellij.database.datagrid.GridColumn; +import com.intellij.database.datagrid.GridDataHookUp; +import com.intellij.database.datagrid.GridRow; import com.intellij.ide.structureView.StructureViewBuilder; import com.intellij.ide.structureView.StructureViewModel; import com.intellij.ide.structureView.TreeBasedStructureViewBuilder; @@ -22,7 +25,7 @@ import java.beans.PropertyChangeSupport; /** * @author gregsh */ -public abstract class TableEditorBase extends UserDataHolderBase implements FileEditor { +public abstract class TableEditorBase extends UserDataHolderBase implements FileEditor, DataGridContainer, DataHookupContainer { private final Project myProject; private final PropertyChangeSupport myPropertyChangeSupport = new PropertyChangeSupport(this); @@ -36,8 +39,14 @@ public abstract class TableEditorBase extends UserDataHolderBase implements File return myProject; } + @Override public abstract @NotNull DataGrid getDataGrid(); + @Override + public @NotNull GridDataHookUp<@NotNull GridRow, @NotNull GridColumn> getDataHookup() { + return getDataGrid().getDataHookup(); + } + @Override public @NotNull String getName() { return DataGridBundle.message("table.file.editor.name"); diff --git a/grid/impl/src/editor/TableEditorInterfaces.kt b/grid/impl/src/editor/TableEditorInterfaces.kt new file mode 100644 index 000000000000..b18e91b618dc --- /dev/null +++ b/grid/impl/src/editor/TableEditorInterfaces.kt @@ -0,0 +1,20 @@ +package com.intellij.database.editor + +import com.intellij.database.datagrid.DataGrid +import com.intellij.database.datagrid.GridColumn +import com.intellij.database.datagrid.GridDataHookUp +import com.intellij.database.datagrid.GridRow + +/** + * This interface returns a grid data management object from the editor. + */ +interface DataHookupContainer { + val dataHookup: GridDataHookUp +} + +/** + * This interface returns a data grid component from the editor. + */ +interface DataGridContainer { + val dataGrid: DataGrid +} \ No newline at end of file