From b8dc3501cc2874a9c92867dc69b1454a5b3e3777 Mon Sep 17 00:00:00 2001 From: Thomas Gutmann Date: Tue, 21 May 2024 21:00:21 +0200 Subject: [PATCH 1/3] Enhance the SQL-dataset-editor with a search option (#1700) --- .../jdbc/ui/editors/SQLDataSetEditorPage.java | 199 +++++++++++++++++- .../oda/jdbc/ui/editors/SQLSourceViewer.java | 101 +++++++++ .../ui/nls/JdbcPluginResources.properties | 12 ++ 3 files changed, 307 insertions(+), 5 deletions(-) create mode 100644 data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/editors/SQLSourceViewer.java diff --git a/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/editors/SQLDataSetEditorPage.java b/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/editors/SQLDataSetEditorPage.java index f5159b8d83a..7fae88ebc93 100644 --- a/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/editors/SQLDataSetEditorPage.java +++ b/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/editors/SQLDataSetEditorPage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2004, 2013 Actuate Corporation. + * Copyright (c) 2004, 2013 Actuate Corporation, 2024 and others * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at @@ -10,6 +10,7 @@ * * Contributors: * Actuate Corporation - initial API and implementation + * Thomas Gutmann - add query text search *******************************************************************************/ package org.eclipse.birt.report.data.oda.jdbc.ui.editors; @@ -81,12 +82,15 @@ import org.eclipse.swt.events.MouseTrackAdapter; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Color; +import org.eclipse.swt.graphics.Device; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; @@ -109,8 +113,9 @@ public class SQLDataSetEditorPage extends DataSetWizardPage { // composite in editor page private Document doc = null; - private SourceViewer viewer = null; + private SQLSourceViewer viewer = null; private Text searchTxt = null; + private Text findQueryText = null; private ComboViewer filterComboViewer = null; private Combo schemaCombo = null; private Menu treeMenu = null; @@ -123,9 +128,12 @@ public class SQLDataSetEditorPage extends DataSetWizardPage { private Button showSystemTableCheckBox = null; private Button showAliasCheckBox = null; private Button includeSchemaCheckBox = null; + private Button findQueryTextWholeWord = null; + private Button findQueryTextCaseSensitive = null; private Exception prepareException = null; private Group sqlOptionGroup = null; private Group selectTableGroup = null; + private Group findQueryTextGroup = null; private static String DEFAULT_MESSAGE = JdbcPlugin.getResourceString("dataset.new.query");//$NON-NLS-1$ @@ -870,7 +878,6 @@ private String getTextToInsert() { /** * Adds drop support to viewer.Must set viewer before execution. - * */ private void addDropSupportToViewer() { final StyledText text = viewer.getTextWidget(); @@ -944,11 +951,27 @@ private Control createTextualQueryComposite(Composite parent) { CompositeRuler ruler = new CompositeRuler(); LineNumberRulerColumn lineNumbers = new LineNumberRulerColumn(); ruler.addDecorator(0, lineNumbers); - viewer = new SourceViewer(composite, ruler, SWT.H_SCROLL | SWT.V_SCROLL); + viewer = new SQLSourceViewer(composite, ruler, SWT.H_SCROLL | SWT.V_SCROLL); SourceViewerConfiguration svc = new SQLSourceViewerConfiguration(dataSetDesign.getDataSourceDesign(), timeOutLimit * 1000, enableCodeAssist); viewer.configure(svc); + // Find query text at source viewer + findQueryTextGroup = new Group(composite, SWT.FILL); + findQueryTextGroup.setText("Find"); //$NON-NLS-1$ + GridLayout findQueryTextGroupLayout = new GridLayout(); + findQueryTextGroupLayout.verticalSpacing = 10; + findQueryTextGroupLayout.numColumns = 4; + findQueryTextGroup.setLayout(findQueryTextGroupLayout); + GridData fOptionGroupData = new GridData(GridData.FILL_HORIZONTAL); + findQueryTextGroup.setLayoutData(fOptionGroupData); + + setupFindQueryTextBox(findQueryTextGroup); + + setupFindQueryTextButtons(findQueryTextGroup); + + setupFindQueryTextOptions(findQueryTextGroup); + doc = new Document(getQueryText()); FastPartitioner partitioner = new FastPartitioner(new SQLPartitionScanner(), new String[] { SQLPartitionScanner.QUOTE_STRING, SQLPartitionScanner.COMMENT, IDocument.DEFAULT_CONTENT_TYPE }); @@ -976,7 +999,7 @@ public void lineGetSegments(BidiSegmentEvent event) { // Add drop support to the viewer addDropSupportToViewer(); - // add support of additional accelerated key + // Add support of additional accelerated key viewer.getTextWidget().addKeyListener(new KeyListener() { @Override @@ -985,6 +1008,12 @@ public void keyPressed(KeyEvent e) { viewer.doOperation(ITextOperationTarget.UNDO); } else if (isRedoKeyPress(e)) { viewer.doOperation(ITextOperationTarget.REDO); + } else if (isFindQueryText(e)) { + findQueryText.setFocus(); + } else if (isFindQueryTextForward(e)) { + findQueryTextForward(); + } else if (isFindQueryTextBackward(e)) { + findQueryTextBackward(); } } @@ -998,6 +1027,21 @@ private boolean isRedoKeyPress(KeyEvent e) { return ((e.stateMask & SWT.CONTROL) > 0) && ((e.keyCode == 'y') || (e.keyCode == 'Y')); } + private boolean isFindQueryText(KeyEvent e) { + // CTRL + f + return ((e.stateMask & SWT.CONTROL) > 0) && ((e.keyCode == 'f') || (e.keyCode == 'F')); + } + + private boolean isFindQueryTextForward(KeyEvent e) { + // CTRL + o + return ((e.stateMask & SWT.CONTROL) > 0) && ((e.keyCode == 'o') || (e.keyCode == 'O')); + } + + private boolean isFindQueryTextBackward(KeyEvent e) { + // CTRL + b + return ((e.stateMask & SWT.CONTROL) > 0) && ((e.keyCode == 'b') || (e.keyCode == 'B')); + } + @Override public void keyReleased(KeyEvent e) { } @@ -1075,4 +1119,149 @@ private void insertTreeItemText() { insertText(text); } } + + private void setupFindQueryTextBox(Group group) { + this.findQueryText = new Text(group, SWT.BORDER); + this.findQueryText.setToolTipText(JdbcPlugin.getResourceString("tablepage.querytext.find.text.tooltip")); + GridData findQueryTextData = new GridData(GridData.FILL_HORIZONTAL); + findQueryTextData.horizontalSpan = 2; + this.findQueryText.setLayoutData(findQueryTextData); + // add support of additional accelerated key + findQueryText.addKeyListener(new KeyListener() { + + @Override + public void keyPressed(KeyEvent e) { + if (isFindQueryTextForward(e)) { + findQueryTextForward(); + } else if (isFindQueryTextBackward(e)) { + findQueryTextBackward(); + } + } + + private boolean isFindQueryTextForward(KeyEvent e) { + // CTRL + f + return ((e.stateMask & SWT.CONTROL) > 0) && ((e.keyCode == 'o') || (e.keyCode == 'O')); + } + + private boolean isFindQueryTextBackward(KeyEvent e) { + // CTRL + SHIFT + f + return ((e.stateMask & SWT.CONTROL) > 0) && ((e.keyCode == 'b') || (e.keyCode == 'B')); + } + + @Override + public void keyReleased(KeyEvent e) { + } + + }); + + } + + private void setupFindQueryTextOptions(Group group) { + + GridData csLayoutData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + this.findQueryTextCaseSensitive = new Button(group, SWT.CHECK); + this.findQueryTextCaseSensitive + .setText(JdbcPlugin.getResourceString("tablepage.querytext.find.option.case.sensitive")); //$NON-NLS-1$ + this.findQueryTextCaseSensitive + .setToolTipText(JdbcPlugin.getResourceString("tablepage.querytext.find.option.case.sensitive.tooltip")); //$NON-NLS-1$ + this.findQueryTextCaseSensitive.setSelection(false); + this.findQueryTextCaseSensitive.setLayoutData(csLayoutData); + this.findQueryTextCaseSensitive.setEnabled(true); + + GridData wwLayoutData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + this.findQueryTextWholeWord = new Button(group, SWT.CHECK); + this.findQueryTextWholeWord.setText(JdbcPlugin.getResourceString("tablepage.querytext.find.option.whole.word")); //$NON-NLS-1$ + this.findQueryTextWholeWord + .setToolTipText(JdbcPlugin.getResourceString("tablepage.querytext.find.option.whole.word.tooltip")); //$NON-NLS-1$ + this.findQueryTextWholeWord.setSelection(false); + this.findQueryTextWholeWord.setLayoutData(wwLayoutData); + this.findQueryTextWholeWord.setEnabled(true); + } + + private void setupFindQueryTextButtons(Group group) { + + GridData fwButtonFindTextLayoutData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + Button fwButtonFindText = new Button(group, SWT.BUTTON1); + fwButtonFindText.setText("▼ " + JdbcPlugin.getResourceString("tablepage.querytext.find.button.forward")); //$NON-NLS-1$ + fwButtonFindText.setToolTipText(JdbcPlugin.getResourceString("tablepage.querytext.find.button.forward.tooltip")); //$NON-NLS-1$ + fwButtonFindText.setLayoutData(fwButtonFindTextLayoutData); + fwButtonFindText.setEnabled(true); + // Add listener to the find query button "forward" + fwButtonFindText.addSelectionListener(new SelectionAdapter() { + + @Override + public void widgetSelected(SelectionEvent event) { + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + + @Override + public void run() { + findQueryTextForward(); + } + }); + } + }); + + GridData bwButtonFindTextLayoutData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); + Button bwButtonFindText = new Button(group, SWT.BUTTON1); + bwButtonFindText.setText("▲ " + JdbcPlugin.getResourceString("tablepage.querytext.find.button.backward")); //$NON-NLS-1$ + bwButtonFindText.setToolTipText(JdbcPlugin.getResourceString("tablepage.querytext.find.button.backward.tooltip")); //$NON-NLS-1$ + bwButtonFindText.setLayoutData(bwButtonFindTextLayoutData); + bwButtonFindText.setEnabled(true); + // Add listener to the find query button "forward" + bwButtonFindText.addSelectionListener(new SelectionAdapter() { + + @Override + public void widgetSelected(SelectionEvent event) { + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + + @Override + public void run() { + findQueryTextBackward(); + } + }); + } + }); + } + + private void setupLabelFindQueryTextGroup(int findMode) { + Device device = Display.getCurrent(); + Color fontColor = new Color(device, 0, 0, 0); + String groupLabel = JdbcPlugin.getResourceString("tablepage.querytext.find.label"); + + // forward search end + if (findMode == 1) { + fontColor = new Color(device, 255, 0, 0); + groupLabel += ", " + JdbcPlugin.getResourceString("tablepage.querytext.find.forward.unlocated.label"); + // backward search end + } else if (findMode == 2) { + fontColor = new Color(device, 255, 0, 0); + groupLabel += ", " + JdbcPlugin.getResourceString("tablepage.querytext.find.backward.unlocated.label"); + } + findQueryTextGroup.setForeground(fontColor); + findQueryTextGroup.setText(groupLabel); + } + + private void findQueryTextForward() { + if (findQueryText != null) { + boolean found = viewer.findQueryText(findQueryText.getText(), true, + findQueryTextCaseSensitive.getSelection(), findQueryTextWholeWord.getSelection()); + if (found) { + setupLabelFindQueryTextGroup(0); + } else { + setupLabelFindQueryTextGroup(1); + } + } + } + + private void findQueryTextBackward() { + if (findQueryText != null) { + boolean found = viewer.findQueryText(findQueryText.getText(), false, + findQueryTextCaseSensitive.getSelection(), findQueryTextWholeWord.getSelection()); + if (found) { + setupLabelFindQueryTextGroup(0); + } else { + setupLabelFindQueryTextGroup(2); + } + } + } } diff --git a/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/editors/SQLSourceViewer.java b/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/editors/SQLSourceViewer.java new file mode 100644 index 00000000000..fa6e0101af6 --- /dev/null +++ b/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/editors/SQLSourceViewer.java @@ -0,0 +1,101 @@ +/******************************************************************************* + * Copyright (c) 2023 Thomas Gutmann. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * https://www.eclipse.org/legal/epl-2.0/. + * + * SPDX-License-Identifier: EPL-2.0 + * + * + * Contributors: + * Thomas Gutmann - initial API and implementation + *******************************************************************************/ +package org.eclipse.birt.report.data.oda.jdbc.ui.editors; + +import org.eclipse.jface.text.IFindReplaceTarget; +import org.eclipse.jface.text.ITextSelection; +import org.eclipse.jface.text.source.IVerticalRuler; +import org.eclipse.jface.text.source.SourceViewer; +import org.eclipse.swt.widgets.Composite; + +/** + * Extended standard source viewer for query text search + * + * @since 4.16 + * + */ +public class SQLSourceViewer extends SourceViewer { + + /** + * Constructor + * + * @param parent parent element + * @param ruler vertical ruler + * @param styles editor style + */ + public SQLSourceViewer(Composite parent, IVerticalRuler ruler, int styles) { + super(parent, ruler, styles); + } + + /** + * Get the current cursor position from source viewer + * + * @return the current cursor position + */ + public int getCurrentCaretPosition() { + return this.getTextWidget().getCaretOffset(); + } + + /** + * Find query text and mark + * + * @param findQueryText query text to be searched + * @param forwardSearch search is forward search (or backward search) + * @param queryTextCaseSensitive search is case sensitive + * @param queryTextWholeWord the text is searched as a whole word + * @return query text found + */ + public boolean findQueryText(String findQueryText, boolean forwardSearch, boolean queryTextCaseSensitive, + boolean queryTextWholeWord) { + + boolean textFound = false; + int queryTextLength = this.getTextWidget().getText().length(); + int startPosition = getCurrentCaretPosition(); + int searchPositionFound = -1; + + ITextSelection selection = (ITextSelection) this.getSelectionProvider().getSelection(); + if (!forwardSearch && selection.getLength() > 0) + startPosition -= selection.getLength(); + + IFindReplaceTarget frt = this.getFindReplaceTarget(); + if (frt != null && frt.canPerformFind() && findQueryText != null) { + + int textLength = findQueryText.length(); + if (textLength > 0) { + + searchPositionFound = frt.findAndSelect(startPosition, findQueryText, forwardSearch, + queryTextCaseSensitive, + queryTextWholeWord); + + if (searchPositionFound >= 0) { + textFound = true; + + // set the caret + if ((searchPositionFound + textLength) <= queryTextLength) { + this.getTextWidget().setCaretOffset(searchPositionFound + textLength); + } + + // set the selection + int[] selectionRange = { searchPositionFound, textLength }; + this.validateSelectionRange(selectionRange); + if (selectionRange[0] > 0) { + this.setSelectedRange(searchPositionFound, textLength); + } + } + } + } + return textFound; + } + +} diff --git a/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/nls/JdbcPluginResources.properties b/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/nls/JdbcPluginResources.properties index 05f215c7e8d..dfc8f020e24 100644 --- a/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/nls/JdbcPluginResources.properties +++ b/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/nls/JdbcPluginResources.properties @@ -55,6 +55,18 @@ tablepage.text.viewtype=View tablepage.text.procedure=Stored Procedure tablepage.group.title=When adding selected items to SQL tablepage.text.All=-All- +tablepage.querytext.find.label=&Find +tablepage.querytext.find.text.tooltip=Query text to be found +tablepage.querytext.find.forward.unlocated.label=text not found from caret to the end +tablepage.querytext.find.backward.unlocated.label=text not found from caret to the beginning +tablepage.querytext.find.button.forward=F&orward +tablepage.querytext.find.button.forward.tooltip=Forward search to find the query text +tablepage.querytext.find.button.backward=&Backward +tablepage.querytext.find.button.backward.tooltip=Backward search to find the query text +tablepage.querytext.find.option.case.sensitive=Case Sensitive +tablepage.querytext.find.option.case.sensitive.tooltip=Query text will be searched case sensitive +tablepage.querytext.find.option.whole.word=Whole Word +tablepage.querytext.find.option.whole.word.tooltip=Query text will be searched as a whole word testInProcessDialog.cancelButton.label=Cancel Test testInProcessDialog.text=Testing in progress, please wait a few seconds testInProcessDialog.title=Test Connection From dc8fb676269762db02e2b7fed2636b99c5d4eed3 Mon Sep 17 00:00:00 2001 From: Thomas Gutmann Date: Tue, 21 May 2024 21:48:21 +0200 Subject: [PATCH 2/3] Set symbol-sign unicode-encoded and simplify the button events --- .../jdbc/ui/editors/SQLDataSetEditorPage.java | 26 +++++++------------ .../oda/jdbc/ui/editors/SQLSourceViewer.java | 2 +- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/editors/SQLDataSetEditorPage.java b/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/editors/SQLDataSetEditorPage.java index 7fae88ebc93..7123ae615d5 100644 --- a/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/editors/SQLDataSetEditorPage.java +++ b/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/editors/SQLDataSetEditorPage.java @@ -157,6 +157,9 @@ public class SQLDataSetEditorPage extends DataSetWizardPage { private static final int DB_OBJECT_TREE_HEIGHT_MIN = 150; private static final int DB_OBJECT_TREE_WIDTH_MIN = 200; + private static final String FIND_DIRECTION_SYMBOLE_FORWARD = "\u25BC"; + private static final String FIND_DIRECTION_SYMBOLE_BACKWARD = "\u25B2"; + /** * constructor * @@ -1182,7 +1185,8 @@ private void setupFindQueryTextButtons(Group group) { GridData fwButtonFindTextLayoutData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); Button fwButtonFindText = new Button(group, SWT.BUTTON1); - fwButtonFindText.setText("▼ " + JdbcPlugin.getResourceString("tablepage.querytext.find.button.forward")); //$NON-NLS-1$ + fwButtonFindText.setText( + FIND_DIRECTION_SYMBOLE_FORWARD + " " + JdbcPlugin.getResourceString("tablepage.querytext.find.button.forward")); //$NON-NLS-1$ fwButtonFindText.setToolTipText(JdbcPlugin.getResourceString("tablepage.querytext.find.button.forward.tooltip")); //$NON-NLS-1$ fwButtonFindText.setLayoutData(fwButtonFindTextLayoutData); fwButtonFindText.setEnabled(true); @@ -1191,19 +1195,15 @@ private void setupFindQueryTextButtons(Group group) { @Override public void widgetSelected(SelectionEvent event) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - - @Override - public void run() { - findQueryTextForward(); - } - }); + findQueryTextForward(); } }); GridData bwButtonFindTextLayoutData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); Button bwButtonFindText = new Button(group, SWT.BUTTON1); - bwButtonFindText.setText("▲ " + JdbcPlugin.getResourceString("tablepage.querytext.find.button.backward")); //$NON-NLS-1$ + + bwButtonFindText.setText(FIND_DIRECTION_SYMBOLE_BACKWARD + " " //$NON-NLS-1$ + + JdbcPlugin.getResourceString("tablepage.querytext.find.button.backward")); bwButtonFindText.setToolTipText(JdbcPlugin.getResourceString("tablepage.querytext.find.button.backward.tooltip")); //$NON-NLS-1$ bwButtonFindText.setLayoutData(bwButtonFindTextLayoutData); bwButtonFindText.setEnabled(true); @@ -1212,13 +1212,7 @@ public void run() { @Override public void widgetSelected(SelectionEvent event) { - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - - @Override - public void run() { - findQueryTextBackward(); - } - }); + findQueryTextBackward(); } }); } diff --git a/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/editors/SQLSourceViewer.java b/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/editors/SQLSourceViewer.java index fa6e0101af6..75b0a0cdd36 100644 --- a/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/editors/SQLSourceViewer.java +++ b/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/editors/SQLSourceViewer.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2023 Thomas Gutmann. + * Copyright (c) 2024 Thomas Gutmann. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License 2.0 which is available at From 1a075fb9a2e25180142cbfa42f3c4f424824df18 Mon Sep 17 00:00:00 2001 From: Thomas Gutmann Date: Tue, 21 May 2024 22:33:06 +0200 Subject: [PATCH 3/3] Optimize color handling and source code --- .../jdbc/ui/editors/SQLDataSetEditorPage.java | 97 +++++++++---------- 1 file changed, 44 insertions(+), 53 deletions(-) diff --git a/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/editors/SQLDataSetEditorPage.java b/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/editors/SQLDataSetEditorPage.java index 7123ae615d5..4e6c54edc21 100644 --- a/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/editors/SQLDataSetEditorPage.java +++ b/data/org.eclipse.birt.report.data.oda.jdbc.ui/src/org/eclipse/birt/report/data/oda/jdbc/ui/editors/SQLDataSetEditorPage.java @@ -41,6 +41,7 @@ import org.eclipse.datatools.connectivity.oda.design.ui.designsession.DesignSessionUtil; import org.eclipse.datatools.connectivity.oda.design.ui.wizards.DataSetWizardPage; import org.eclipse.jface.dialogs.IMessageProvider; +import org.eclipse.jface.resource.JFaceColors; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.text.Document; import org.eclipse.jface.text.IDocument; @@ -82,15 +83,12 @@ import org.eclipse.swt.events.MouseTrackAdapter; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Device; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; @@ -157,8 +155,8 @@ public class SQLDataSetEditorPage extends DataSetWizardPage { private static final int DB_OBJECT_TREE_HEIGHT_MIN = 150; private static final int DB_OBJECT_TREE_WIDTH_MIN = 200; - private static final String FIND_DIRECTION_SYMBOLE_FORWARD = "\u25BC"; - private static final String FIND_DIRECTION_SYMBOLE_BACKWARD = "\u25B2"; + private static final String FIND_DIRECTION_SYMBOL_FORWARD = "\u25BC"; + private static final String FIND_DIRECTION_SYMBOL_BACKWARD = "\u25B2"; /** * constructor @@ -1022,27 +1020,27 @@ public void keyPressed(KeyEvent e) { private boolean isUndoKeyPress(KeyEvent e) { // CTRL + z - return ((e.stateMask & SWT.CONTROL) > 0) && ((e.keyCode == 'z') || (e.keyCode == 'Z')); + return (e.stateMask == SWT.CONTROL && e.keyCode == 'z'); } private boolean isRedoKeyPress(KeyEvent e) { // CTRL + y - return ((e.stateMask & SWT.CONTROL) > 0) && ((e.keyCode == 'y') || (e.keyCode == 'Y')); + return (e.stateMask == SWT.CONTROL && e.keyCode == 'y'); } private boolean isFindQueryText(KeyEvent e) { // CTRL + f - return ((e.stateMask & SWT.CONTROL) > 0) && ((e.keyCode == 'f') || (e.keyCode == 'F')); + return (e.stateMask == SWT.CONTROL && e.keyCode == 'f'); } private boolean isFindQueryTextForward(KeyEvent e) { // CTRL + o - return ((e.stateMask & SWT.CONTROL) > 0) && ((e.keyCode == 'o') || (e.keyCode == 'O')); + return (e.stateMask == SWT.CONTROL && e.keyCode == 'o'); } private boolean isFindQueryTextBackward(KeyEvent e) { // CTRL + b - return ((e.stateMask & SWT.CONTROL) > 0) && ((e.keyCode == 'b') || (e.keyCode == 'B')); + return (e.stateMask == SWT.CONTROL && e.keyCode == 'b'); } @Override @@ -1124,11 +1122,11 @@ private void insertTreeItemText() { } private void setupFindQueryTextBox(Group group) { - this.findQueryText = new Text(group, SWT.BORDER); - this.findQueryText.setToolTipText(JdbcPlugin.getResourceString("tablepage.querytext.find.text.tooltip")); + findQueryText = new Text(group, SWT.BORDER); + findQueryText.setToolTipText(JdbcPlugin.getResourceString("tablepage.querytext.find.text.tooltip")); GridData findQueryTextData = new GridData(GridData.FILL_HORIZONTAL); findQueryTextData.horizontalSpan = 2; - this.findQueryText.setLayoutData(findQueryTextData); + findQueryText.setLayoutData(findQueryTextData); // add support of additional accelerated key findQueryText.addKeyListener(new KeyListener() { @@ -1142,13 +1140,13 @@ public void keyPressed(KeyEvent e) { } private boolean isFindQueryTextForward(KeyEvent e) { - // CTRL + f - return ((e.stateMask & SWT.CONTROL) > 0) && ((e.keyCode == 'o') || (e.keyCode == 'O')); + // CTRL + o + return (e.stateMask == SWT.CONTROL && e.keyCode == 'o'); } private boolean isFindQueryTextBackward(KeyEvent e) { - // CTRL + SHIFT + f - return ((e.stateMask & SWT.CONTROL) > 0) && ((e.keyCode == 'b') || (e.keyCode == 'B')); + // CTRL + b + return (e.stateMask == SWT.CONTROL && e.keyCode == 'b'); } @Override @@ -1162,23 +1160,23 @@ public void keyReleased(KeyEvent e) { private void setupFindQueryTextOptions(Group group) { GridData csLayoutData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); - this.findQueryTextCaseSensitive = new Button(group, SWT.CHECK); - this.findQueryTextCaseSensitive + findQueryTextCaseSensitive = new Button(group, SWT.CHECK); + findQueryTextCaseSensitive .setText(JdbcPlugin.getResourceString("tablepage.querytext.find.option.case.sensitive")); //$NON-NLS-1$ - this.findQueryTextCaseSensitive + findQueryTextCaseSensitive .setToolTipText(JdbcPlugin.getResourceString("tablepage.querytext.find.option.case.sensitive.tooltip")); //$NON-NLS-1$ - this.findQueryTextCaseSensitive.setSelection(false); - this.findQueryTextCaseSensitive.setLayoutData(csLayoutData); - this.findQueryTextCaseSensitive.setEnabled(true); + findQueryTextCaseSensitive.setSelection(false); + findQueryTextCaseSensitive.setLayoutData(csLayoutData); + findQueryTextCaseSensitive.setEnabled(true); GridData wwLayoutData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); - this.findQueryTextWholeWord = new Button(group, SWT.CHECK); - this.findQueryTextWholeWord.setText(JdbcPlugin.getResourceString("tablepage.querytext.find.option.whole.word")); //$NON-NLS-1$ - this.findQueryTextWholeWord + findQueryTextWholeWord = new Button(group, SWT.CHECK); + findQueryTextWholeWord.setText(JdbcPlugin.getResourceString("tablepage.querytext.find.option.whole.word")); //$NON-NLS-1$ + findQueryTextWholeWord .setToolTipText(JdbcPlugin.getResourceString("tablepage.querytext.find.option.whole.word.tooltip")); //$NON-NLS-1$ - this.findQueryTextWholeWord.setSelection(false); - this.findQueryTextWholeWord.setLayoutData(wwLayoutData); - this.findQueryTextWholeWord.setEnabled(true); + findQueryTextWholeWord.setSelection(false); + findQueryTextWholeWord.setLayoutData(wwLayoutData); + findQueryTextWholeWord.setEnabled(true); } private void setupFindQueryTextButtons(Group group) { @@ -1186,7 +1184,7 @@ private void setupFindQueryTextButtons(Group group) { GridData fwButtonFindTextLayoutData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); Button fwButtonFindText = new Button(group, SWT.BUTTON1); fwButtonFindText.setText( - FIND_DIRECTION_SYMBOLE_FORWARD + " " + JdbcPlugin.getResourceString("tablepage.querytext.find.button.forward")); //$NON-NLS-1$ + FIND_DIRECTION_SYMBOL_FORWARD + " " + JdbcPlugin.getResourceString("tablepage.querytext.find.button.forward")); //$NON-NLS-1$ fwButtonFindText.setToolTipText(JdbcPlugin.getResourceString("tablepage.querytext.find.button.forward.tooltip")); //$NON-NLS-1$ fwButtonFindText.setLayoutData(fwButtonFindTextLayoutData); fwButtonFindText.setEnabled(true); @@ -1202,7 +1200,7 @@ public void widgetSelected(SelectionEvent event) { GridData bwButtonFindTextLayoutData = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING); Button bwButtonFindText = new Button(group, SWT.BUTTON1); - bwButtonFindText.setText(FIND_DIRECTION_SYMBOLE_BACKWARD + " " //$NON-NLS-1$ + bwButtonFindText.setText(FIND_DIRECTION_SYMBOL_BACKWARD + " " //$NON-NLS-1$ + JdbcPlugin.getResourceString("tablepage.querytext.find.button.backward")); bwButtonFindText.setToolTipText(JdbcPlugin.getResourceString("tablepage.querytext.find.button.backward.tooltip")); //$NON-NLS-1$ bwButtonFindText.setLayoutData(bwButtonFindTextLayoutData); @@ -1217,21 +1215,22 @@ public void widgetSelected(SelectionEvent event) { }); } - private void setupLabelFindQueryTextGroup(int findMode) { - Device device = Display.getCurrent(); - Color fontColor = new Color(device, 0, 0, 0); + /** + * Setup the group label of the query text search option + * + * @param findResultMode mode of the search result + */ + private void setupLabelFindQueryTextGroup(int findResultMode) { String groupLabel = JdbcPlugin.getResourceString("tablepage.querytext.find.label"); - // forward search end - if (findMode == 1) { - fontColor = new Color(device, 255, 0, 0); - groupLabel += ", " + JdbcPlugin.getResourceString("tablepage.querytext.find.forward.unlocated.label"); - // backward search end - } else if (findMode == 2) { - fontColor = new Color(device, 255, 0, 0); - groupLabel += ", " + JdbcPlugin.getResourceString("tablepage.querytext.find.backward.unlocated.label"); + if (findResultMode == 1 || findResultMode == 2) { + findQueryTextGroup.setForeground(JFaceColors.getErrorText(findQueryTextGroup.getDisplay())); + groupLabel += ", " + JdbcPlugin.getResourceString( + "tablepage.querytext.find." + (findResultMode == 1 ? "forward" : "backward") + ".unlocated.label"); + } else { + findQueryTextGroup.setForeground(findQueryText.getForeground()); } - findQueryTextGroup.setForeground(fontColor); + findQueryTextGroup.setText(groupLabel); } @@ -1239,11 +1238,7 @@ private void findQueryTextForward() { if (findQueryText != null) { boolean found = viewer.findQueryText(findQueryText.getText(), true, findQueryTextCaseSensitive.getSelection(), findQueryTextWholeWord.getSelection()); - if (found) { - setupLabelFindQueryTextGroup(0); - } else { - setupLabelFindQueryTextGroup(1); - } + setupLabelFindQueryTextGroup(found ? 0 : 1); } } @@ -1251,11 +1246,7 @@ private void findQueryTextBackward() { if (findQueryText != null) { boolean found = viewer.findQueryText(findQueryText.getText(), false, findQueryTextCaseSensitive.getSelection(), findQueryTextWholeWord.getSelection()); - if (found) { - setupLabelFindQueryTextGroup(0); - } else { - setupLabelFindQueryTextGroup(2); - } + setupLabelFindQueryTextGroup(found ? 0 : 2); } } }