Author: pmouawad
Date: Sat Dec  3 11:00:39 2011
New Revision: 1209885

URL: http://svn.apache.org/viewvc?rev=1209885&view=rev
Log:
Bug 51876 - Functionality to search in Samplers TreeView
Handles ESC and ENTER key
Save last search

Modified:
    jmeter/trunk/src/core/org/apache/jmeter/gui/action/KeyStrokes.java
    jmeter/trunk/src/core/org/apache/jmeter/gui/action/SearchTreeCommand.java
    jmeter/trunk/src/core/org/apache/jmeter/gui/action/SearchTreeDialog.java

Modified: jmeter/trunk/src/core/org/apache/jmeter/gui/action/KeyStrokes.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/KeyStrokes.java?rev=1209885&r1=1209884&r2=1209885&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/gui/action/KeyStrokes.java 
(original)
+++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/KeyStrokes.java Sat Dec  
3 11:00:39 2011
@@ -41,6 +41,8 @@ public final class KeyStrokes {
     public static final KeyStroke DEBUG_ON          = 
KeyStroke.getKeyStroke(KeyEvent.VK_D, CONTROL_MASK | KeyEvent.SHIFT_DOWN_MASK);
     public static final KeyStroke CLEAR_ALL         = 
KeyStroke.getKeyStroke(KeyEvent.VK_E, CONTROL_MASK);
     public static final KeyStroke CLEAR             = 
KeyStroke.getKeyStroke(KeyEvent.VK_E, CONTROL_MASK | KeyEvent.SHIFT_DOWN_MASK);
+    public static final KeyStroke ESC               = 
KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
+    public static final KeyStroke ENTER             = 
KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
     public static final KeyStroke FUNCTIONS         = 
KeyStroke.getKeyStroke(KeyEvent.VK_F, CONTROL_MASK);
     public static final KeyStroke SAVE_GRAPHICS     = 
KeyStroke.getKeyStroke(KeyEvent.VK_G, CONTROL_MASK);
     public static final KeyStroke SAVE_GRAPHICS_ALL = 
KeyStroke.getKeyStroke(KeyEvent.VK_G, CONTROL_MASK | KeyEvent.SHIFT_DOWN_MASK);

Modified: 
jmeter/trunk/src/core/org/apache/jmeter/gui/action/SearchTreeCommand.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/SearchTreeCommand.java?rev=1209885&r1=1209884&r2=1209885&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/gui/action/SearchTreeCommand.java 
(original)
+++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/SearchTreeCommand.java 
Sat Dec  3 11:00:39 2011
@@ -34,12 +34,13 @@ public class SearchTreeCommand extends A
         commands.add(ActionNames.SEARCH_TREE);
     }
 
+    private SearchTreeDialog dialog = new SearchTreeDialog();
     /**
      * @see Command#doAction(ActionEvent)
      */
     @Override
     public void doAction(ActionEvent e) {
-       new SearchTreeDialog().setVisible(true);
+       dialog.setVisible(true);
     }
 
 

Modified: 
jmeter/trunk/src/core/org/apache/jmeter/gui/action/SearchTreeDialog.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/gui/action/SearchTreeDialog.java?rev=1209885&r1=1209884&r2=1209885&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/gui/action/SearchTreeDialog.java 
(original)
+++ jmeter/trunk/src/core/org/apache/jmeter/gui/action/SearchTreeDialog.java 
Sat Dec  3 11:00:39 2011
@@ -32,6 +32,7 @@ import javax.swing.BorderFactory;
 import javax.swing.BoxLayout;
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
+import javax.swing.JComponent;
 import javax.swing.JDialog;
 import javax.swing.JFrame;
 import javax.swing.JPanel;
@@ -68,7 +69,29 @@ public class SearchTreeDialog extends JD
 
        private JButton cancelButton;
 
+       /**
+        * Store last search
+        */
+       private transient String lastSearch = null;
 
+       /**
+        * Hide Window on ESC
+        */
+       private ActionListener enterActionListener = new ActionListener() {
+               public void actionPerformed(ActionEvent actionEvent) {
+                       doSearch(actionEvent);
+               }       
+       };
+       
+       /**
+        * Do search on Enter
+        */
+       private ActionListener escapeActionListener = new ActionListener() {
+               public void actionPerformed(ActionEvent actionEvent) {
+                       setVisible(false);
+               }       
+       };
+       
        public SearchTreeDialog() {
         super((JFrame) null, JMeterUtils.getResString("search_tree_title"), 
true); //$NON-NLS-1$
         init();
@@ -78,6 +101,9 @@ public class SearchTreeDialog extends JD
         this.getContentPane().setLayout(new BorderLayout(10,10));
 
         searchTF = new 
JLabeledTextField(JMeterUtils.getResString("search_text_field"), 20); 
//$NON-NLS-1$
+        if(!StringUtils.isEmpty(lastSearch)) {
+               searchTF.setText(lastSearch);
+        }
         isRegexpCB = new 
JCheckBox(JMeterUtils.getResString("search_text_chkbox_regexp"), false); 
//$NON-NLS-1$
         isCaseSensitiveCB = new 
JCheckBox(JMeterUtils.getResString("search_text_chkbox_case"), false); 
//$NON-NLS-1$
         Font font = new Font("SansSerif", Font.PLAIN, 10); // reduce font
@@ -103,20 +129,35 @@ public class SearchTreeDialog extends JD
         buttonsPanel.add(cancelButton);
         searchPanel.add(buttonsPanel, BorderLayout.SOUTH);
         this.getContentPane().add(searchPanel);
+        searchPanel.registerKeyboardAction(enterActionListener, 
KeyStrokes.ENTER, JComponent.WHEN_IN_FOCUSED_WINDOW);
+        searchPanel.registerKeyboardAction(escapeActionListener, 
KeyStrokes.ESC, JComponent.WHEN_IN_FOCUSED_WINDOW);
+       searchTF.requestFocusInWindow();
+
         this.pack();
         ComponentUtil.centerComponentInWindow(this);
     }
 
-
+    /**
+     * Do search
+     * @param e {@link ActionEvent}
+     */
     public void actionPerformed(ActionEvent e) {
        if(e.getSource()==cancelButton) {
                this.setVisible(false);
                return;
        } 
-       
-       String wordToSearch = searchTF.getText();
+       doSearch(e);
+    }
+
+       /**
+        * @param e {@link ActionEvent}
+        */
+       private void doSearch(ActionEvent e) {
+               String wordToSearch = searchTF.getText();
        if(StringUtils.isEmpty(wordToSearch)) {
             return;
+        } else {
+               this.lastSearch = wordToSearch;
         }
        
        // reset previous result
@@ -152,5 +193,5 @@ public class SearchTreeDialog extends JD
         }
         GuiPackage.getInstance().getMainFrame().repaint();
         this.setVisible(false);
-    }
+       }
 }
\ No newline at end of file


Reply via email to