mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[DBE] DBE-24448 DBE-23942 Fix action context for value editor
(cherry picked from commit c5c7ec2466755190f237aee5f73dce12da5c8433) (approved in IJ-CR-184414) GitOrigin-RevId: f2aa31d4630eb21a04d78a22d0f6c036862387dc
This commit is contained in:
committed by
intellij-monorepo-bot
parent
33cd08a100
commit
cc596a270b
@@ -31,6 +31,10 @@
|
||||
description="Factor for cache size for rendered table cells"/>
|
||||
<registryKey key="database.grid.show.chart.tab" defaultValue="true" restartRequired="false"
|
||||
description="Adds 'Show Chart' action to DG tables in editor, inlay and services."/>
|
||||
<uiDataRule implementation="com.intellij.database.run.ui.TableResultPanelUIDataRule"
|
||||
id="TableResultPanelDataRule" order="before BasicUiDataRule"/>
|
||||
<uiDataRule implementation="com.intellij.database.run.ui.InnerEditorsTableResultPanelUIDataRule"
|
||||
id="InnerEditorsTableResultPanelUIDataRule" order="before TableResultPanelDataRule"/>
|
||||
<applicationService serviceInterface="com.intellij.database.extensions.ExtensionsService" serviceImplementation="com.intellij.database.extensions.ExtensionsServiceImpl"/>
|
||||
<database.datagrid.valueEditorTab implementation="com.intellij.database.run.ui.AggregateValueEditorTab"/>
|
||||
<database.datagrid.valueEditorTab implementation="com.intellij.database.run.ui.EditorValueEditorTab"/>
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.intellij.ide.highlighter.HighlighterFactory
|
||||
import com.intellij.ide.util.PropertiesComponent
|
||||
import com.intellij.lang.Language
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys
|
||||
import com.intellij.openapi.actionSystem.PlatformCoreDataKeys
|
||||
import com.intellij.openapi.actionSystem.UiDataProvider
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.application.WriteAction
|
||||
@@ -22,6 +23,7 @@ import com.intellij.openapi.editor.event.DocumentEvent
|
||||
import com.intellij.openapi.editor.event.DocumentListener
|
||||
import com.intellij.openapi.editor.ex.EditorEx
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager
|
||||
import com.intellij.openapi.fileEditor.impl.text.TextEditorProvider
|
||||
import com.intellij.openapi.fileTypes.PlainTextLanguage
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.Key
|
||||
@@ -78,6 +80,7 @@ class EditorCellViewer(private val project: Project,
|
||||
|
||||
private val wrappedComponent = UiDataProvider.wrapComponent(editor.component) { sink ->
|
||||
sink[CommonDataKeys.EDITOR] = editor
|
||||
sink[PlatformCoreDataKeys.FILE_EDITOR] = TextEditorProvider.getInstance().getTextEditor(editor)
|
||||
}
|
||||
|
||||
override val component: JComponent
|
||||
|
||||
@@ -875,9 +875,6 @@ public class TableResultPanel extends UserDataHolderBase
|
||||
protected void uiDataSnapshot(@NotNull DataSink sink) {
|
||||
sink.set(CommonDataKeys.PROJECT, myProject);
|
||||
sink.setNull(CommonDataKeys.EDITOR);
|
||||
sink.set(PlatformDataKeys.COPY_PROVIDER, new GridCopyProvider(this));
|
||||
sink.set(PlatformDataKeys.PASTE_PROVIDER, new GridPasteProvider(this, GridUtil::retrieveDataFromText));
|
||||
sink.set(PlatformDataKeys.DELETE_ELEMENT_PROVIDER, new DeleteRowsAction());
|
||||
sink.set(DatabaseDataKeys.DATA_GRID_KEY, this);
|
||||
sink.set(LangDataKeys.NO_NEW_ACTION, Boolean.TRUE);
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.intellij.database.run.ui
|
||||
|
||||
import com.intellij.database.DatabaseDataKeys
|
||||
import com.intellij.database.datagrid.GridUtil
|
||||
import com.intellij.database.run.actions.DeleteRowsAction
|
||||
import com.intellij.database.run.ui.grid.GridCopyProvider
|
||||
import com.intellij.database.run.ui.grid.GridPasteProvider
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys.EDITOR
|
||||
import com.intellij.openapi.actionSystem.DataSink
|
||||
import com.intellij.openapi.actionSystem.DataSnapshot
|
||||
import com.intellij.openapi.actionSystem.PlatformDataKeys.COPY_PROVIDER
|
||||
import com.intellij.openapi.actionSystem.PlatformDataKeys.CUT_PROVIDER
|
||||
import com.intellij.openapi.actionSystem.PlatformDataKeys.DELETE_ELEMENT_PROVIDER
|
||||
import com.intellij.openapi.actionSystem.PlatformDataKeys.PASTE_PROVIDER
|
||||
import com.intellij.openapi.actionSystem.UiDataRule
|
||||
import com.intellij.openapi.editor.ex.EditorEx
|
||||
|
||||
class TableResultPanelUIDataRule : UiDataRule {
|
||||
override fun uiDataSnapshot(sink: DataSink, snapshot: DataSnapshot) {
|
||||
val grid = snapshot[DatabaseDataKeys.DATA_GRID_KEY] ?: return
|
||||
sink[COPY_PROVIDER] = GridCopyProvider(grid)
|
||||
sink[PASTE_PROVIDER] = GridPasteProvider(grid, GridUtil::retrieveDataFromText)
|
||||
sink[DELETE_ELEMENT_PROVIDER] = DeleteRowsAction()
|
||||
}
|
||||
}
|
||||
|
||||
class InnerEditorsTableResultPanelUIDataRule : UiDataRule {
|
||||
override fun uiDataSnapshot(sink: DataSink, snapshot: DataSnapshot) {
|
||||
val editor = snapshot[EDITOR] as? EditorEx ?: return
|
||||
sink[COPY_PROVIDER] = editor.getCopyProvider()
|
||||
sink[PASTE_PROVIDER] = editor.getPasteProvider()
|
||||
sink[CUT_PROVIDER] = editor.getCutProvider()
|
||||
sink[DELETE_ELEMENT_PROVIDER] = editor.getDeleteProvider()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user