diff --git a/plugins/org.jkiss.dbeaver.ui.editors.base/src/org/jkiss/dbeaver/ui/editors/BaseTextEditorCommands.java b/plugins/org.jkiss.dbeaver.ui.editors.base/src/org/jkiss/dbeaver/ui/editors/BaseTextEditorCommands.java new file mode 100644 index 0000000000000000000000000000000000000000..ba82635b8572d7fbe7e73a01fb9f299c6a6e7182 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.ui.editors.base/src/org/jkiss/dbeaver/ui/editors/BaseTextEditorCommands.java @@ -0,0 +1,26 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2019 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui.editors; + +/** + * BaseTextEditorCommands + */ +public class BaseTextEditorCommands { + + public static final String CMD_CONTENT_FORMAT = "org.jkiss.dbeaver.ui.editors.text.content.format"; //$NON-NLS-1$ + +} \ No newline at end of file diff --git a/plugins/org.jkiss.dbeaver.ui.editors.content/plugin.xml b/plugins/org.jkiss.dbeaver.ui.editors.content/plugin.xml index 3ebb9580918bf9062f7ca09c6169208379bb9b01..ff83905d12287e79145eaf499db691326116a47d 100644 --- a/plugins/org.jkiss.dbeaver.ui.editors.content/plugin.xml +++ b/plugins/org.jkiss.dbeaver.ui.editors.content/plugin.xml @@ -3,5 +3,4 @@ - diff --git a/plugins/org.jkiss.dbeaver.ui.editors.data/plugin.xml b/plugins/org.jkiss.dbeaver.ui.editors.data/plugin.xml index fe8a501bd6542b3d628e6e60d01abd04973eae94..c49fc76f621403fa660ea71cc9289acc79b8f2af 100644 --- a/plugins/org.jkiss.dbeaver.ui.editors.data/plugin.xml +++ b/plugins/org.jkiss.dbeaver.ui.editors.data/plugin.xml @@ -625,6 +625,14 @@ + + + + + + + + diff --git a/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/editors/content/ContentEditorContributor.java b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/editors/content/ContentEditorContributor.java index 9c039600692b43df7291a3eccecd6fb54b9eb57b..39555681b44f5df830da974122a7de5c4af656b1 100644 --- a/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/editors/content/ContentEditorContributor.java +++ b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/editors/content/ContentEditorContributor.java @@ -27,15 +27,20 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.*; +import org.eclipse.ui.actions.RetargetAction; import org.eclipse.ui.part.MultiPageEditorActionBarContributor; import org.eclipse.ui.texteditor.BasicTextEditorActionContributor; +import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds; +import org.eclipse.ui.texteditor.RetargetTextEditorAction; import org.jkiss.dbeaver.model.DBIcon; import org.jkiss.dbeaver.runtime.DBWorkbench; +import org.jkiss.dbeaver.ui.ActionUtils; import org.jkiss.dbeaver.ui.DBeaverIcons; import org.jkiss.dbeaver.ui.UIIcon; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.data.IValueController; import org.jkiss.dbeaver.ui.dialogs.DialogUtils; +import org.jkiss.dbeaver.ui.editors.BaseTextEditorCommands; import java.io.File; import java.lang.reflect.InvocationTargetException; @@ -44,8 +49,7 @@ import java.lang.reflect.InvocationTargetException; * Content Editor contributor. * Uses text editor contributor to fill status bar and menu for possible integrated text editors. */ -public class ContentEditorContributor extends MultiPageEditorActionBarContributor -{ +public class ContentEditorContributor extends MultiPageEditorActionBarContributor { private final BasicTextEditorActionContributor textContributor; private ContentEditor activeEditor; //private IEditorPart activePage; @@ -55,40 +59,34 @@ public class ContentEditorContributor extends MultiPageEditorActionBarContributo private final IAction infoAction = new InfoAction(); private Combo encodingCombo; - public ContentEditorContributor() - { + public ContentEditorContributor() { textContributor = new BasicTextEditorActionContributor(); } - ContentEditor getEditor() - { + ContentEditor getEditor() { return activeEditor; } @Override - public void init(IActionBars bars, IWorkbenchPage page) - { + public void init(IActionBars bars, IWorkbenchPage page) { super.init(bars, page); textContributor.init(bars, page); } @Override - public void init(IActionBars bars) - { + public void init(IActionBars bars) { super.init(bars); textContributor.init(bars); } @Override - public void dispose() - { + public void dispose() { textContributor.dispose(); super.dispose(); } @Override - public void setActiveEditor(IEditorPart part) - { + public void setActiveEditor(IEditorPart part) { super.setActiveEditor(part); this.activeEditor = (ContentEditor) part; @@ -108,15 +106,13 @@ public class ContentEditorContributor extends MultiPageEditorActionBarContributo } @Override - public void setActivePage(IEditorPart activeEditor) - { + public void setActivePage(IEditorPart activeEditor) { //this.activePage = activeEditor; this.textContributor.setActiveEditor(activeEditor); } @Override - public void contributeToMenu(IMenuManager manager) - { + public void contributeToMenu(IMenuManager manager) { super.contributeToMenu(manager); textContributor.contributeToMenu(manager); @@ -127,18 +123,21 @@ public class ContentEditorContributor extends MultiPageEditorActionBarContributo menu.add(new Separator()); menu.add(infoAction); menu.add(new Separator()); + + IMenuManager editMenu = manager.findMenuUsingPath(IWorkbenchActionConstants.M_EDIT); + if (editMenu != null) { + editMenu.add(ActionUtils.makeCommandContribution(UIUtils.getActiveWorkbenchWindow(), BaseTextEditorCommands.CMD_CONTENT_FORMAT)); + } } @Override - public void contributeToStatusLine(IStatusLineManager statusLineManager) - { + public void contributeToStatusLine(IStatusLineManager statusLineManager) { super.contributeToStatusLine(statusLineManager); textContributor.contributeToStatusLine(statusLineManager); } @Override - public void contributeToToolBar(IToolBarManager manager) - { + public void contributeToToolBar(IToolBarManager manager) { super.contributeToToolBar(manager); textContributor.contributeToToolBar(manager); // Execution @@ -147,11 +146,9 @@ public class ContentEditorContributor extends MultiPageEditorActionBarContributo manager.add(new Separator()); manager.add(infoAction); manager.add(new Separator()); - manager.add(new ControlContribution("Encoding") - { + manager.add(new ControlContribution("Encoding") { @Override - protected Control createControl(Composite parent) - { + protected Control createControl(Composite parent) { String curCharset = null; if (getEditor() != null) { curCharset = getEditor().getEditorInput().getEncoding(); @@ -188,8 +185,7 @@ public class ContentEditorContributor extends MultiPageEditorActionBarContributo public abstract class SimpleAction extends Action { - SimpleAction(String id, String text, String toolTip, DBIcon icon) - { + SimpleAction(String id, String text, String toolTip, DBIcon icon) { super(text, DBeaverIcons.getImageDescriptor(icon)); setId(id); //setActionDefinitionId(id); @@ -201,30 +197,24 @@ public class ContentEditorContributor extends MultiPageEditorActionBarContributo } - private class FileExportAction extends SimpleAction - { - FileExportAction() - { + private class FileExportAction extends SimpleAction { + FileExportAction() { super(IWorkbenchCommandConstants.FILE_EXPORT, "Export", "Save to File", UIIcon.SAVE_AS); } @Override - public void run() - { + public void run() { getEditor().doSaveAs(); } } - private class FileImportAction extends SimpleAction - { - FileImportAction() - { + private class FileImportAction extends SimpleAction { + FileImportAction() { super(IWorkbenchCommandConstants.FILE_IMPORT, "Import", "Load from File", UIIcon.LOAD); } @Override - public void run() - { + public void run() { final ContentEditor editor = getEditor(); if (editor == null) { return; @@ -238,12 +228,10 @@ public class ContentEditorContributor extends MultiPageEditorActionBarContributo editor.getSite().getWorkbenchWindow().run(true, true, new IRunnableWithProgress() { @Override public void run(IProgressMonitor monitor) - throws InvocationTargetException, InterruptedException - { + throws InvocationTargetException, InterruptedException { try { editor.getEditorInput().loadFromExternalFile(loadFile, monitor); - } - catch (CoreException e) { + } catch (CoreException e) { throw new InvocationTargetException(e); } } @@ -254,29 +242,24 @@ public class ContentEditorContributor extends MultiPageEditorActionBarContributo } editor.setDirty(true); editor.fireContentChanged(); - } - catch (InvocationTargetException e) { + } catch (InvocationTargetException e) { DBWorkbench.getPlatformUI().showError( - "Can't load content", + "Can't load content", "Can't load content from file '" + loadFile.getAbsolutePath() + "'", e.getTargetException()); - } - catch (InterruptedException e) { + } catch (InterruptedException e) { // do nothing } } } - private class InfoAction extends SimpleAction - { - InfoAction() - { + private class InfoAction extends SimpleAction { + InfoAction() { super("org.jkiss.dbeaver.lob.actions.info", "Info", "Show column information", DBIcon.TREE_INFO); } @Override - public void run() - { + public void run() { getEditor().toggleInfoBar(); } } diff --git a/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/editors/content/ContentFormatHandler.java b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/editors/content/ContentFormatHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..8e545175206e418e43aa2bdb021c8c65cf06b751 --- /dev/null +++ b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/editors/content/ContentFormatHandler.java @@ -0,0 +1,48 @@ +/* + * DBeaver - Universal Database Manager + * Copyright (C) 2010-2019 Serge Rider (serge@jkiss.org) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jkiss.dbeaver.ui.editors.content; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.jface.text.ITextViewer; +import org.eclipse.jface.text.TextViewer; +import org.eclipse.jface.text.source.SourceViewer; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.handlers.HandlerUtil; +import org.eclipse.ui.texteditor.AbstractTextEditor; + +public class ContentFormatHandler extends AbstractHandler { + + public ContentFormatHandler() { + } + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + IEditorPart activeEditor = HandlerUtil.getActiveEditor(event); + if (activeEditor instanceof ContentEditor) { + IEditorPart editorPart = ((ContentEditor) activeEditor).getActiveEditor(); + ITextViewer textViewer = editorPart.getAdapter(ITextViewer.class); + if (textViewer instanceof TextViewer) { + ((TextViewer)textViewer).doOperation(SourceViewer.FORMAT); + } + } + return null; + } + + +} diff --git a/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java b/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java index 5627b5eeccaf170b2521e98d817675ba4c4cc36c..5c8be73474153ec714be1632b95cc736bfce764e 100644 --- a/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java +++ b/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorBase.java @@ -55,6 +55,7 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.model.sql.*; import org.jkiss.dbeaver.runtime.DBWorkbench; import org.jkiss.dbeaver.ui.*; +import org.jkiss.dbeaver.ui.editors.BaseTextEditorCommands; import org.jkiss.dbeaver.ui.editors.EditorUtils; import org.jkiss.dbeaver.ui.editors.sql.internal.SQLEditorMessages; import org.jkiss.dbeaver.ui.editors.sql.preferences.*; @@ -514,7 +515,7 @@ public abstract class SQLEditorBase extends BaseTextEditor implements DBPContext SQLEditorContributor.getActionResourcePrefix(SQLEditorContributor.ACTION_CONTENT_FORMAT_PROPOSAL), this, ISourceViewer.FORMAT); - a.setActionDefinitionId(SQLEditorCommands.CMD_CONTENT_FORMAT); + a.setActionDefinitionId(BaseTextEditorCommands.CMD_CONTENT_FORMAT); setAction(SQLEditorContributor.ACTION_CONTENT_FORMAT_PROPOSAL, a); setAction(ITextEditorActionConstants.CONTEXT_PREFERENCES, new Action(SQLEditorMessages.editor_sql_preference) { //$NON-NLS-1$ diff --git a/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorCommands.java b/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorCommands.java index 653a72bf1e0eb80d2c2dcbdfcf8d85f76543d8bd..678e549342297bfb44447bf57bb70125dfd80cae 100644 --- a/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorCommands.java +++ b/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorCommands.java @@ -43,7 +43,7 @@ public interface SQLEditorCommands String CMD_SQL_ASSIST_TEMPLATES = "org.jkiss.dbeaver.ui.editors.sql.assist.templates"; //$NON-NLS-1$ String CMD_SYNC_CONNECTION = "org.jkiss.dbeaver.ui.editors.sql.sync.connection"; String CMD_SQL_RENAME = "org.jkiss.dbeaver.ui.editors.sql.rename"; - String CMD_CONTENT_FORMAT = "org.jkiss.dbeaver.ui.editors.text.content.format"; //$NON-NLS-1$ String CMD_OPEN_FILE = "org.jkiss.dbeaver.ui.editors.sql.open.file"; //$NON-NLS-1$ String CMD_SAVE_FILE = "org.jkiss.dbeaver.ui.editors.sql.save.file"; //$NON-NLS-1$ + } diff --git a/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorContributor.java b/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorContributor.java index 0bc89cb66e8bd769194221e744141c4e7a317833..bc17360a603a8942e702a8d3eb39aa63f2f3a801 100644 --- a/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorContributor.java +++ b/plugins/org.jkiss.dbeaver.ui.editors.sql/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditorContributor.java @@ -29,6 +29,7 @@ import org.eclipse.ui.texteditor.StatusLineContributionItem; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.ui.ActionUtils; import org.jkiss.dbeaver.ui.UIUtils; +import org.jkiss.dbeaver.ui.editors.BaseTextEditorCommands; import org.jkiss.dbeaver.ui.editors.sql.internal.SQLEditorMessages; import java.util.ResourceBundle; @@ -78,7 +79,7 @@ public class SQLEditorContributor extends TextEditorActionContributor contentAssistProposal = new RetargetTextEditorAction(bundle, getActionResourcePrefix(ACTION_CONTENT_ASSIST_PROPOSAL)); contentAssistProposal.setActionDefinitionId(ITextEditorActionDefinitionIds.CONTENT_ASSIST_PROPOSALS); contentFormatProposal = new RetargetTextEditorAction(bundle, getActionResourcePrefix(ACTION_CONTENT_FORMAT_PROPOSAL)); - contentFormatProposal.setActionDefinitionId(SQLEditorCommands.CMD_CONTENT_FORMAT); + contentFormatProposal.setActionDefinitionId(BaseTextEditorCommands.CMD_CONTENT_FORMAT); contentAssistTip = new RetargetTextEditorAction(bundle, getActionResourcePrefix(ACTION_CONTENT_ASSIST_TIP)); contentAssistTip.setActionDefinitionId(ITextEditorActionDefinitionIds.CONTENT_ASSIST_CONTEXT_INFORMATION);