diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java index 04f9691ad8cd5b98126ec7f656cddfc299dda9c4..519e5583b6aa06465135c4c843298a145c051c14 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/ResultSetViewer.java @@ -944,8 +944,23 @@ public class ResultSetViewer extends Viewer } // Try to get it from adapter if (activePresentation instanceof IAdaptable) { - return ((IAdaptable) activePresentation).getAdapter(adapter); + T adapted = ((IAdaptable) activePresentation).getAdapter(adapter); + if (adapted != null) { + return adapted; + } + } + // FIXME: Not sure that we should adapt active panel. NOT TESTED YET +/* + if (getVisiblePanel() instanceof IAdaptable) { + CTabItem panelTab = panelFolder.getSelection(); + if (panelTab != null && panelTab.getControl() != null && UIUtils.hasFocus(panelTab.getControl())) { + T adapted = ((IAdaptable) getVisiblePanel()).getAdapter(adapter); + if (adapted != null) { + return adapted; + } + } } +*/ return null; } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/ViewValuePanel.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/ViewValuePanel.java index 310f0ee9046d2c8626699a566f22f5d55935bdad..e65ea4a27d8f533bdee675065f8286ba0b00d8cc 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/ViewValuePanel.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/resultset/panel/ViewValuePanel.java @@ -16,6 +16,7 @@ */ package org.jkiss.dbeaver.ui.controls.resultset.panel; +import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IContributionManager; import org.eclipse.jface.action.Separator; @@ -59,7 +60,7 @@ import org.jkiss.utils.CommonUtils; /** * RSV value view panel */ -public class ViewValuePanel implements IResultSetPanel { +public class ViewValuePanel implements IResultSetPanel, IAdaptable { private static final Log log = Log.getLog(ViewValuePanel.class); @@ -379,4 +380,17 @@ public class ViewValuePanel implements IResultSetPanel { }); } + @Override + public T getAdapter(Class adapter) { + if (valueEditor != null) { + if (adapter.isAssignableFrom(valueEditor.getClass())) { + return adapter.cast(valueEditor); + } + if (valueEditor instanceof IAdaptable) { + return ((IAdaptable) valueEditor).getAdapter(adapter); + } + } + + return null; + } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/editors/ContentPanelEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/editors/ContentPanelEditor.java index 334f6f79cf6e97075d481f6cbffe239d469b24a6..8fb90650b6433fe305416784f8a7b5569dc0faf7 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/editors/ContentPanelEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/editors/ContentPanelEditor.java @@ -16,6 +16,7 @@ */ package org.jkiss.dbeaver.ui.data.editors; +import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.action.IContributionManager; @@ -61,7 +62,7 @@ import java.util.List; /** * ControlPanelEditor */ -public class ContentPanelEditor extends BaseValueEditor { +public class ContentPanelEditor extends BaseValueEditor implements IAdaptable { private static final Log log = Log.getLog(ContentPanelEditor.class); @@ -193,6 +194,19 @@ public class ContentPanelEditor extends BaseValueEditor { return dsId + ":" + valueId; } + @Override + public T getAdapter(Class adapter) { + if (streamEditor != null) { + if (adapter.isAssignableFrom(streamEditor.getClass())) { + return adapter.cast(streamEditor); + } + if (streamEditor instanceof IAdaptable) { + return ((IAdaptable) streamEditor).getAdapter(adapter); + } + } + return null; + } + private class ContentTypeSwitchAction extends Action implements SelectionListener { private Menu menu; diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/AbstractTextPanelEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/AbstractTextPanelEditor.java index 31e080532683848f9ac8073e60412351fb7fe2b6..4f8a109d2b26429d0ae77c664383a353939748a6 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/AbstractTextPanelEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/AbstractTextPanelEditor.java @@ -16,9 +16,11 @@ */ package org.jkiss.dbeaver.ui.data.managers.stream; +import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IContributionManager; import org.eclipse.jface.action.Separator; +import org.eclipse.jface.text.source.ISourceViewer; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.widgets.Control; import org.jkiss.code.NotNull; @@ -26,11 +28,12 @@ import org.jkiss.dbeaver.model.exec.DBCException; import org.jkiss.dbeaver.ui.controls.resultset.panel.ViewValuePanel; import org.jkiss.dbeaver.ui.data.IStreamValueEditor; import org.jkiss.dbeaver.ui.data.IValueController; +import org.jkiss.dbeaver.ui.editors.text.BaseTextEditor; /** * AbstractTextPanelEditor */ -public abstract class AbstractTextPanelEditor implements IStreamValueEditor { +public abstract class AbstractTextPanelEditor implements IStreamValueEditor, IAdaptable { public static final String PREF_TEXT_EDITOR_WORD_WRAP = "content.text.editor.word-wrap"; public static final String PREF_TEXT_EDITOR_AUTO_FORMAT = "content.text.editor.auto-format"; @@ -60,13 +63,15 @@ public abstract class AbstractTextPanelEditor implements IStreamValueEditor T getAdapter(Class adapter) { + BaseTextEditor textEditor = getTextEditor(); + if (textEditor != null) { + if (adapter.isAssignableFrom(textEditor.getClass())) { + return adapter.cast(textEditor); + } + return textEditor.getAdapter(adapter); + } + return null; + } } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/TextPanelEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/TextPanelEditor.java index 3a6823870cb655aed4a258952265ec73ee96bf3c..417fe827564b76f7629c4162f1dac4b95e83d825 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/TextPanelEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/TextPanelEditor.java @@ -16,19 +16,15 @@ */ package org.jkiss.dbeaver.ui.data.managers.stream; -import org.eclipse.jface.action.IContributionManager; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StyledText; import org.jkiss.code.NotNull; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.model.data.DBDContent; -import org.jkiss.dbeaver.model.exec.DBCException; import org.jkiss.dbeaver.model.impl.StringContentStorage; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; -import org.jkiss.dbeaver.ui.data.IStreamValueEditor; import org.jkiss.dbeaver.ui.data.IValueController; -import org.jkiss.dbeaver.ui.data.editors.ContentPanelEditor; import org.jkiss.dbeaver.utils.ContentUtils; /** @@ -42,7 +38,7 @@ public class TextPanelEditor extends AbstractTextPanelEditor { StyledText text = new StyledText(valueController.getEditPlaceholder(), SWT.MULTI | SWT.V_SCROLL); text.setEditable(!valueController.isReadOnly()); text.setFont(JFaceResources.getFont(JFaceResources.TEXT_FONT)); - setEditorSettings(text); + initEditorSettings(text); return text; } diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/XMLPanelEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/XMLPanelEditor.java index ba43ba67b3fbf34cdfbdfe6a1b766639c41dffef..37a5df8dc1789fbf843a5cd77a89a07a2b2df7f7 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/XMLPanelEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/data/managers/stream/XMLPanelEditor.java @@ -30,6 +30,7 @@ import org.jkiss.dbeaver.ui.data.IValueController; import org.jkiss.dbeaver.ui.editors.StringEditorInput; import org.jkiss.dbeaver.ui.editors.SubEditorSite; import org.jkiss.dbeaver.ui.editors.content.ContentEditorInput; +import org.jkiss.dbeaver.ui.editors.text.BaseTextEditor; import org.jkiss.dbeaver.ui.editors.xml.XMLEditor; import org.jkiss.dbeaver.utils.RuntimeUtils; @@ -55,7 +56,7 @@ public class XMLPanelEditor extends AbstractTextPanelEditor { return new StyledText(valueController.getEditPlaceholder(), SWT.NONE); } editor.createPartControl(valueController.getEditPlaceholder()); - setEditorSettings(editor.getEditorControl()); + initEditorSettings(editor.getEditorControl()); return editor.getEditorControl(); } @@ -67,6 +68,7 @@ public class XMLPanelEditor extends AbstractTextPanelEditor { monitor.subTask("Prime XML value"); IEditorInput sqlInput = new ContentEditorInput(valueController, null, null, monitor); editor.init(subSite, sqlInput); + applyEditorStyle(); } catch (Exception e) { throw new DBException("Can't load XML vaue", e); } finally { @@ -90,5 +92,8 @@ public class XMLPanelEditor extends AbstractTextPanelEditor { } } - + @Override + protected BaseTextEditor getTextEditor() { + return editor; + } }