[Squirrel-sql-commits] SF.net SVN: squirrel-sql:[6720] trunk/sql12
A Java SQL client for any JDBC compliant database
Brought to you by:
colbell,
gerdwagner
From: <ger...@us...> - 2012-11-20 22:06:00
|
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. |