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 <dmitry.barashev@jetbrains.com>

GitOrigin-RevId: 7512512b973b7a648213bbfa6c3c78c951704e68
This commit is contained in:
Dmitry.Barashev
2025-09-11 13:50:10 +00:00
committed by intellij-monorepo-bot
parent e493e37207
commit 024dc5598b
4 changed files with 35 additions and 5 deletions
+3 -2
View File
@@ -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);
+2 -2
View File
@@ -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) {
+10 -1
View File
@@ -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");
@@ -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<GridRow, GridColumn>
}
/**
* This interface returns a data grid component from the editor.
*/
interface DataGridContainer {
val dataGrid: DataGrid
}