From 5b550504fabe7ea31bfa4bfbcaa09394eb2134c5 Mon Sep 17 00:00:00 2001 From: Ilya Muradyan Date: Wed, 29 Jan 2025 13:11:33 +0200 Subject: [PATCH] DBE-22700: Prepare Grid modules for platformization grid.impl depended on platform.images. Platform module can't depend on a plugin, and it's risky to make platform.images a platform module now. So decision is to separate the part of grid.impl that depended on platform.images to a dedicated module which will NOT be a platform one. Also, intellij.grid API module was converted to V2 that will simplify platformization GitOrigin-RevId: 3dea3dd0b5e05a283ee3c26b5806fa33822b3e8a --- .idea/modules.xml | 1 + grid/api/intellij.grid.iml | 1 + grid/api/resources/intellij.grid.xml | 2 ++ grid/core-impl/intellij.grid.core.impl.iml | 2 +- .../resources/intellij.grid.core.impl.xml | 1 + grid/images/intellij.grid.images.impl.iml | 19 +++++++++++++++++++ .../resources/intellij.grid.images.impl.xml | 13 +++++++++++++ .../grid/images/impl}/ImageCellViewer.kt | 17 ++++++++++++----- grid/impl/intellij.grid.impl.iml | 1 - grid/impl/resources/intellij.grid.impl.xml | 3 +-- grid/impl/src/run/ui/CellViewer.kt | 6 ++++++ grid/impl/src/run/ui/ValueTabInfoProvider.kt | 8 ++++++-- 12 files changed, 63 insertions(+), 11 deletions(-) create mode 100644 grid/api/resources/intellij.grid.xml create mode 100644 grid/images/intellij.grid.images.impl.iml create mode 100644 grid/images/resources/intellij.grid.images.impl.xml rename grid/{impl/src/run/ui => images/src/com/intellij/grid/images/impl}/ImageCellViewer.kt (86%) diff --git a/.idea/modules.xml b/.idea/modules.xml index 743b52d6e643..3723e719bf8d 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -407,6 +407,7 @@ + diff --git a/grid/api/intellij.grid.iml b/grid/api/intellij.grid.iml index 9d35fcd21a10..2483c7eab345 100644 --- a/grid/api/intellij.grid.iml +++ b/grid/api/intellij.grid.iml @@ -3,6 +3,7 @@ + diff --git a/grid/api/resources/intellij.grid.xml b/grid/api/resources/intellij.grid.xml new file mode 100644 index 000000000000..6fb76a66265d --- /dev/null +++ b/grid/api/resources/intellij.grid.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/grid/core-impl/intellij.grid.core.impl.iml b/grid/core-impl/intellij.grid.core.impl.iml index 724f06b1826c..f0a4db936baf 100644 --- a/grid/core-impl/intellij.grid.core.impl.iml +++ b/grid/core-impl/intellij.grid.core.impl.iml @@ -11,7 +11,7 @@ - + diff --git a/grid/core-impl/resources/intellij.grid.core.impl.xml b/grid/core-impl/resources/intellij.grid.core.impl.xml index b638b19ac667..62b9a2c413cc 100644 --- a/grid/core-impl/resources/intellij.grid.core.impl.xml +++ b/grid/core-impl/resources/intellij.grid.core.impl.xml @@ -1,5 +1,6 @@ + diff --git a/grid/images/intellij.grid.images.impl.iml b/grid/images/intellij.grid.images.impl.iml new file mode 100644 index 000000000000..1913e7c5faab --- /dev/null +++ b/grid/images/intellij.grid.images.impl.iml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/grid/images/resources/intellij.grid.images.impl.xml b/grid/images/resources/intellij.grid.images.impl.xml new file mode 100644 index 000000000000..33b5d8279f42 --- /dev/null +++ b/grid/images/resources/intellij.grid.images.impl.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/grid/impl/src/run/ui/ImageCellViewer.kt b/grid/images/src/com/intellij/grid/images/impl/ImageCellViewer.kt similarity index 86% rename from grid/impl/src/run/ui/ImageCellViewer.kt rename to grid/images/src/com/intellij/grid/images/impl/ImageCellViewer.kt index 3ccbd01ebf36..9b02dcd86990 100644 --- a/grid/impl/src/run/ui/ImageCellViewer.kt +++ b/grid/images/src/com/intellij/grid/images/impl/ImageCellViewer.kt @@ -1,10 +1,15 @@ -package com.intellij.database.run.ui +package com.intellij.grid.images.impl import com.intellij.database.datagrid.DataGrid import com.intellij.database.datagrid.GridColumn import com.intellij.database.datagrid.GridRow import com.intellij.database.datagrid.ModelIndex import com.intellij.database.extractors.ImageInfo +import com.intellij.database.run.ui.CellViewer +import com.intellij.database.run.ui.CellViewerFactory +import com.intellij.database.run.ui.DataAccessType +import com.intellij.database.run.ui.Suitability +import com.intellij.database.run.ui.UpdateEvent import com.intellij.openapi.Disposable import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.util.CheckedDisposable @@ -28,8 +33,10 @@ class ImageCellViewer(private val grid: DataGrid) : CellViewer, CheckedDisposabl override fun update(event: UpdateEvent?) { if (event is UpdateEvent.ValueChanged) { - if (event.value is ImageInfo) update(event.value) - else clearContent() + when(val eventValue = event.value) { + is ImageInfo -> update(eventValue) + else -> clearContent() + } return } @@ -82,7 +89,7 @@ class ImageCellViewer(private val grid: DataGrid) : CellViewer, CheckedDisposabl override fun dispose() { } } -object ImageCellViewerFactory : CellViewerFactory { +class ImageCellViewerFactory : CellViewerFactory { override fun getSuitability(grid: DataGrid, row: ModelIndex, column: ModelIndex): Suitability { if (!row.isValid(grid) || !column.isValid(grid)) return Suitability.NONE val value = grid.getDataModel(DataAccessType.DATA_WITH_MUTATIONS).getValueAt(row, column) @@ -90,4 +97,4 @@ object ImageCellViewerFactory : CellViewerFactory { } override fun createViewer(grid: DataGrid): CellViewer = ImageCellViewer(grid) -} \ No newline at end of file +} diff --git a/grid/impl/intellij.grid.impl.iml b/grid/impl/intellij.grid.impl.iml index 00af6bda94e2..c54cbb14cf1c 100644 --- a/grid/impl/intellij.grid.impl.iml +++ b/grid/impl/intellij.grid.impl.iml @@ -21,7 +21,6 @@ - diff --git a/grid/impl/resources/intellij.grid.impl.xml b/grid/impl/resources/intellij.grid.impl.xml index 3cf2bea6d206..c19f0fa7c539 100644 --- a/grid/impl/resources/intellij.grid.impl.xml +++ b/grid/impl/resources/intellij.grid.impl.xml @@ -1,7 +1,5 @@ - - @@ -10,6 +8,7 @@ + diff --git a/grid/impl/src/run/ui/CellViewer.kt b/grid/impl/src/run/ui/CellViewer.kt index 3a3968ea79f1..285afc628437 100644 --- a/grid/impl/src/run/ui/CellViewer.kt +++ b/grid/impl/src/run/ui/CellViewer.kt @@ -5,6 +5,7 @@ import com.intellij.database.datagrid.GridColumn import com.intellij.database.datagrid.GridRow import com.intellij.database.datagrid.ModelIndex import com.intellij.openapi.Disposable +import com.intellij.openapi.extensions.ExtensionPointName import com.intellij.openapi.util.Key import javax.swing.JComponent @@ -27,6 +28,11 @@ interface CellViewer : Disposable { interface CellViewerFactory { fun getSuitability(grid: DataGrid, row: ModelIndex, column: ModelIndex): Suitability fun createViewer(grid: DataGrid): CellViewer + + companion object { + private val EP_NAME = ExtensionPointName("com.intellij.database.datagrid.cellViewerFactory") + fun getExternalFactories(): List = EP_NAME.extensionList + } } sealed interface UpdateEvent { diff --git a/grid/impl/src/run/ui/ValueTabInfoProvider.kt b/grid/impl/src/run/ui/ValueTabInfoProvider.kt index 879e8aab5b0a..1a9722d179da 100644 --- a/grid/impl/src/run/ui/ValueTabInfoProvider.kt +++ b/grid/impl/src/run/ui/ValueTabInfoProvider.kt @@ -19,8 +19,12 @@ class EditorValueEditorTab : ValueEditorTab { class ValueTabInfoProvider(private val grid: DataGrid) : TabInfoProvider(DataGridBundle.message("EditMaximized.ValueEditor.text"), ActionManager.getInstance().getAction("Console.TableResult.EditMaximized.Value.Group") as? ActionGroup) { private var currentViewerFactory: CellViewerFactory - private val viewerFactories = listOf(EditorCellViewerFactory, ReadonlyEditorCellViewerFactory, EmptyCellViewerFactory, - ImageCellViewerFactory) + private val viewerFactories = buildList { + add(EditorCellViewerFactory) + add(ReadonlyEditorCellViewerFactory) + add(EmptyCellViewerFactory) + addAll(CellViewerFactory.getExternalFactories()) + } private var viewer: CellViewer init {