Revision: 6720
http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6720&view=rev
Author: gerdwagner
Date: 2012-11-20 22:05:52 +0000 (Tue, 20 Nov 2012)
Log Message:
-----------
Result table search --> completed
Modified Paths:
--------------
trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultTab.java
trunk/sql12/doc/src/main/resources/changes.txt
trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/tablefind/DataSetFindPanel.java
trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/tablefind/DataSetFindPanelController.java
trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/tablefind/DataSetViewerFindDecorator.java
Modified: trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultTab.java
===================================================================
--- trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultTab.java 2012-11-17 20:58:32 UTC (rev 6719)
+++ trunk/sql12/app/src/main/java/net/sourceforge/squirrel_sql/client/session/mainpanel/ResultTab.java 2012-11-20 22:05:52 UTC (rev 6720)
@@ -567,6 +567,7 @@
@Override
public void toggleShowFindPanel()
{
+ _tabResultTabs.setSelectedIndex(0);
if(false == _resultSetOutput.toggleShowFindPanel())
{
_session.getApplication().getMessageHandler().showWarningMessage(s_stringMgr.getString("ResultTab.tableSearchNotSupported"));
Modified: trunk/sql12/doc/src/main/resources/changes.txt
===================================================================
--- trunk/sql12/doc/src/main/resources/changes.txt 2012-11-17 20:58:32 UTC (rev 6719)
+++ trunk/sql12/doc/src/main/resources/changes.txt 2012-11-20 22:05:52 UTC (rev 6720)
@@ -8,6 +8,8 @@
Enhancements:
+Find function for SQL result tables.
+
Closing or reconnecting Sessions caused SQuirreL to hang when the JDBC driver's connection close method didn't return.
Now closing timeouts after 2 seconds.
Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/tablefind/DataSetFindPanel.java
===================================================================
--- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/tablefind/DataSetFindPanel.java 2012-11-17 20:58:32 UTC (rev 6719)
+++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/tablefind/DataSetFindPanel.java 2012-11-20 22:05:52 UTC (rev 6720)
@@ -13,7 +13,7 @@
JComboBox cboMatchType;
JCheckBox chkCaseSensitive;
- JTextField txtString;
+ JComboBox cboString;
JButton btnDown;
JButton btnUp;
@@ -40,8 +40,9 @@
add(chkCaseSensitive, gbc);
gbc = new GridBagConstraints(2,0,1,1,1,0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5,5,5,5), 0,0);
- txtString = new JTextField();
- add(txtString, gbc);
+ cboString = new JComboBox();
+ cboString.setEditable(true);
+ add(cboString, gbc);
LibraryResources rsrc = new LibraryResources();
Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/tablefind/DataSetFindPanelController.java
===================================================================
--- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/tablefind/DataSetFindPanelController.java 2012-11-17 20:58:32 UTC (rev 6719)
+++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/tablefind/DataSetFindPanelController.java 2012-11-20 22:05:52 UTC (rev 6720)
@@ -6,18 +6,20 @@
import javax.swing.*;
import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
+import java.awt.event.*;
+import java.util.ArrayList;
import java.util.List;
+import java.util.prefs.Preferences;
public class DataSetFindPanelController
{
private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(DataSetFindPanelController.class);
+ private static final String PREF_KEY_DATASETFIND_TABLESEARCH_STRPREF = "SquirrelSQL.DataSetFind.tableSearch.StrPref_";
+ private static final int MAX_HIST_LENGTH = 10;
+
private DataSetFindPanel _dataSetFindPanel;
private TableTraverser _tableTraverser = new TableTraverser();
@@ -115,8 +117,66 @@
}
});
+ for (int i = 0; i < MAX_HIST_LENGTH; i++)
+ {
+ String item = Preferences.userRoot().get(PREF_KEY_DATASETFIND_TABLESEARCH_STRPREF + i, null);
+ if (null != item)
+ {
+ _dataSetFindPanel.cboString.addItem(item);
+ }
+ }
+ _dataSetFindPanel.cboString.getEditor().setItem(null);
+
+ initKeyStrokes();
}
+ private void initKeyStrokes()
+ {
+ Action findNextAction = new AbstractAction("DataSetFind.FindNext")
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ onFind(true);
+ }
+ };
+
+ Action findPrevAction = new AbstractAction("DataSetFind.FindPrev")
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ onFind(false);
+ }
+ };
+
+ Action unhighlightAction = new AbstractAction("DataSetFind.Unhighlight")
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ _dataSetFindPanel.btnUnhighlightResult.doClick();
+ }
+ };
+
+ JComponent comp = (JComponent) _dataSetFindPanel.cboString.getEditor().getEditorComponent();
+ comp.registerKeyboardAction(findNextAction, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0, false), JComponent.WHEN_FOCUSED);
+ comp.registerKeyboardAction(findNextAction, KeyStroke.getKeyStroke(KeyEvent.VK_F3, 0, false), JComponent.WHEN_FOCUSED);
+
+ comp.registerKeyboardAction(findPrevAction, KeyStroke.getKeyStroke(KeyEvent.VK_F3, InputEvent.SHIFT_DOWN_MASK, false), JComponent.WHEN_FOCUSED);
+
+ comp.registerKeyboardAction(unhighlightAction, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false), JComponent.WHEN_FOCUSED);
+ }
+
+ private void onFind(boolean next)
+ {
+ if (next)
+ {
+ _dataSetFindPanel.btnDown.doClick();
+ }
+ else
+ {
+ _dataSetFindPanel.btnUp.doClick();
+ }
+ }
+
private void onShowRowsFoundInTable()
{
Window parent = SwingUtilities.windowForComponent(_dataSetFindPanel);
@@ -202,7 +262,7 @@
}
- String searchString = _dataSetFindPanel.txtString.getText();
+ String searchString = "" + _dataSetFindPanel.cboString.getEditor().getItem();
if(false == StringUtils.equals(searchString, _currentSearchString))
@@ -219,6 +279,10 @@
return;
}
+ addToComboList(_currentSearchString);
+
+
+
boolean matchFound = false;
for(int i=0; i < _tableTraverser.getCellCount(); ++i)
{
@@ -315,13 +379,12 @@
private FindMarkColor onGetBackgroundColor(int viewRow, int viewColumn)
{
- String searchString = _dataSetFindPanel.txtString.getText();
+ String searchString = "" + _dataSetFindPanel.cboString.getEditor().getItem();
if(null == searchString)
{
return null;
}
-
if(_trace.contains(viewRow, viewColumn))
{
if (_trace.isCurrent(viewRow, viewColumn))
@@ -340,4 +403,46 @@
}
+ private void addToComboList(String searchString)
+ {
+ for (int i = 0; i < _dataSetFindPanel.cboString.getItemCount(); i++)
+ {
+ if(searchString.equals(_dataSetFindPanel.cboString.getItemAt(i)))
+ {
+ _dataSetFindPanel.cboString.removeItemAt(i);
+ }
+ }
+ ((DefaultComboBoxModel)_dataSetFindPanel.cboString.getModel()).insertElementAt(searchString, 0);
+
+
+ ArrayList itemsToRemove = new ArrayList();
+ for (int i = 0; i < _dataSetFindPanel.cboString.getItemCount(); i++)
+ {
+ if (MAX_HIST_LENGTH > i)
+ {
+ Preferences.userRoot().put(PREF_KEY_DATASETFIND_TABLESEARCH_STRPREF + i, "" + _dataSetFindPanel.cboString.getItemAt(i));
+ }
+ else
+ {
+ itemsToRemove.add(_dataSetFindPanel.cboString.getItemAt(i));
+ }
+ }
+
+ for (Object item : itemsToRemove)
+ {
+ _dataSetFindPanel.cboString.removeItem(item);
+ }
+
+ _dataSetFindPanel.cboString.setSelectedIndex(0);
+
+ }
+
+ public void focusTextField()
+ {
+ _dataSetFindPanel.cboString.getEditor().getEditorComponent().requestFocus();
+
+ }
+
+
+
}
Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/tablefind/DataSetViewerFindDecorator.java
===================================================================
--- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/tablefind/DataSetViewerFindDecorator.java 2012-11-17 20:58:32 UTC (rev 6719)
+++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/datasetviewer/tablefind/DataSetViewerFindDecorator.java 2012-11-20 22:05:52 UTC (rev 6720)
@@ -92,6 +92,7 @@
if (_findPanelOpen)
{
_split.setDividerLocation(_dataSetFindPanelController.getPanel().getPreferredSize().height);
+ _dataSetFindPanelController.focusTextField();
}
else
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|