From 72fec15817c7327ec17f6204891ed3c908b85b99 Mon Sep 17 00:00:00 2001 From: "serge@jkiss.org" Date: Sat, 10 Aug 2019 17:53:24 +0200 Subject: [PATCH] #6484 Text editor context menu fix --- .../dbeaver/ui/controls/StyledTextUtils.java | 4 +- .../managers/AbstractTextPanelEditor.java | 39 ++++++++++++++++++- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.ui.editors.base/src/org/jkiss/dbeaver/ui/controls/StyledTextUtils.java b/plugins/org.jkiss.dbeaver.ui.editors.base/src/org/jkiss/dbeaver/ui/controls/StyledTextUtils.java index 81660adc3b..eabe888d5a 100644 --- a/plugins/org.jkiss.dbeaver.ui.editors.base/src/org/jkiss/dbeaver/ui/controls/StyledTextUtils.java +++ b/plugins/org.jkiss.dbeaver.ui.editors.base/src/org/jkiss/dbeaver/ui/controls/StyledTextUtils.java @@ -85,7 +85,7 @@ public class StyledTextUtils { menu.add(new GroupMarker("styled_text_additions")); } - private static class StyledTextAction extends Action { + public static class StyledTextAction extends Action { private final StyledText styledText; private final int action; public StyledTextAction(String actionId, boolean enabled, StyledText styledText, int action) { @@ -102,7 +102,7 @@ public class StyledTextUtils { } } - private static class StyledTextActionEx extends Action { + public static class StyledTextActionEx extends Action { public StyledTextActionEx(String actionId, int style) { super(ActionUtils.findCommandName(actionId), style); this.setActionDefinitionId(actionId); diff --git a/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/data/managers/AbstractTextPanelEditor.java b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/data/managers/AbstractTextPanelEditor.java index a315823302..560d51b628 100644 --- a/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/data/managers/AbstractTextPanelEditor.java +++ b/plugins/org.jkiss.dbeaver.ui.editors.data/src/org/jkiss/dbeaver/ui/data/managers/AbstractTextPanelEditor.java @@ -26,11 +26,16 @@ import org.eclipse.jface.text.IUndoManager; import org.eclipse.jface.text.TextViewer; import org.eclipse.jface.text.source.ISourceViewer; import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.ST; import org.eclipse.swt.custom.StyledText; +import org.eclipse.swt.graphics.Point; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IWorkbenchCommandConstants; import org.eclipse.ui.PartInitException; +import org.eclipse.ui.texteditor.FindReplaceAction; import org.eclipse.ui.texteditor.ITextEditorActionConstants; +import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds; import org.jkiss.code.NotNull; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; @@ -38,12 +43,14 @@ import org.jkiss.dbeaver.model.DBPMessageType; import org.jkiss.dbeaver.model.data.DBDContent; import org.jkiss.dbeaver.model.impl.StringContentStorage; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; +import org.jkiss.dbeaver.ui.ActionUtils; import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.controls.StyledTextUtils; import org.jkiss.dbeaver.ui.data.IStreamValueEditor; 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.TextEditorUtils; import org.jkiss.dbeaver.ui.editors.content.ContentEditorInput; import org.jkiss.dbeaver.ui.editors.data.internal.DataEditorsActivator; import org.jkiss.dbeaver.ui.editors.text.BaseTextEditor; @@ -89,8 +96,19 @@ public abstract class AbstractTextPanelEditor imp protected void contributeTextEditorActions(@NotNull IContributionManager manager, @NotNull final StyledText control) { manager.removeAll(); - StyledTextUtils.fillDefaultStyledTextContextMenu(manager, control); + //StyledTextUtils.fillDefaultStyledTextContextMenu(manager, control); + final Point selectionRange = control.getSelectionRange(); + + manager.add(new StyledTextUtils.StyledTextAction(IWorkbenchCommandConstants.EDIT_COPY, selectionRange.y > 0, control, ST.COPY)); + manager.add(new StyledTextUtils.StyledTextAction(IWorkbenchCommandConstants.EDIT_PASTE, control.getEditable(), control, ST.PASTE)); + manager.add(new StyledTextUtils.StyledTextAction(IWorkbenchCommandConstants.EDIT_CUT, selectionRange.y > 0, control, ST.CUT)); + manager.add(new StyledTextUtils.StyledTextAction(IWorkbenchCommandConstants.EDIT_SELECT_ALL, true, control, ST.SELECT_ALL)); + manager.add(new AutoFormatAction()); + manager.add(new WordWrapAction(control)); + + manager.add(new Separator()); + manager.add(TextEditorUtils.createFindReplaceAction(editor.getSite().getShell(), editor.getViewer().getFindReplaceTarget())); IAction preferencesAction = editor.getAction(ITextEditorActionConstants.CONTEXT_PREFERENCES); if (preferencesAction != null) { @@ -243,6 +261,25 @@ public abstract class AbstractTextPanelEditor imp return viewerSettings; } + private class WordWrapAction extends StyledTextUtils.StyledTextActionEx { + + private final StyledText text; + WordWrapAction(StyledText text) { + super(ITextEditorActionDefinitionIds.WORD_WRAP, Action.AS_CHECK_BOX); + this.text = text; + } + + @Override + public boolean isChecked() { + return text.getWordWrap(); + } + + @Override + public void run() { + text.setWordWrap(!text.getWordWrap()); + } + } + private class AutoFormatAction extends Action { AutoFormatAction() { super("Auto Format", Action.AS_CHECK_BOX); -- GitLab