Author: sebb
Date: Wed Sep  9 23:02:00 2009
New Revision: 813160

URL: http://svn.apache.org/viewvc?rev=813160&view=rev
Log:
Bug 36726 - add search function to Tree View Listener

Added:
    
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SearchTextExtension.java
   (with props)
Modified:
    
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties
    jakarta/jmeter/trunk/xdocs/changes.xml

Added: 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SearchTextExtension.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SearchTextExtension.java?rev=813160&view=auto
==============================================================================
--- 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SearchTextExtension.java
 (added)
+++ 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SearchTextExtension.java
 Wed Sep  9 23:02:00 2009
@@ -0,0 +1,359 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed  under the  License is distributed on an "AS IS" BASIS,
+ * WITHOUT  WARRANTIES OR CONDITIONS  OF ANY KIND, either  express  or
+ * implied.
+ * 
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jmeter.visualizers;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.swing.AbstractAction;
+import javax.swing.ActionMap;
+import javax.swing.BorderFactory;
+import javax.swing.Box;
+import javax.swing.BoxLayout;
+import javax.swing.InputMap;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComponent;
+import javax.swing.JEditorPane;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTextField;
+import javax.swing.KeyStroke;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.DefaultHighlighter;
+import javax.swing.text.Document;
+import javax.swing.text.Highlighter;
+
+import org.apache.jmeter.util.JMeterUtils;
+import org.apache.jorphan.logging.LoggingManager;
+import org.apache.log.Logger;
+
+public class SearchTextExtension implements ActionListener, DocumentListener {
+    
+    private static final Logger log = LoggingManager.getLoggerForClass();
+    
+    public static final String SEARCH_TEXT_COMMAND = "search_text"; // 
$NON-NLS-1$
+    
+    public static final String DIALOG_SEARCH_SHOW_COMMAND = 
"show_search_dialog"; // $NON-NLS-1$
+    
+    public static final String DIALOG_SEARCH_HIDE_COMMAND = 
"close_search_dialog"; // $NON-NLS-1$
+
+    private static final String SEARCH_SHOW_COMMAND = "show_search_text"; // 
$NON-NLS-1$
+
+    // set default command to Text
+    private String command = DIALOG_SEARCH_SHOW_COMMAND;
+    
+    private static int LAST_POSITION_DEFAULT = 0;
+
+    private int lastPosition = LAST_POSITION_DEFAULT;
+    
+    private final static Color HILIT_COLOR = Color.LIGHT_GRAY;
+    
+    private Highlighter selection;
+    
+    private Highlighter.HighlightPainter painter;
+    
+    private JLabel label;
+
+    private JButton findButton;
+
+    private JTextField textToFindField;
+
+    private  JCheckBox caseChkBox;
+
+    private JCheckBox regexpChkBox;
+
+    private String lastTextTofind;
+
+    private boolean newSearch = false;
+    
+    private JEditorPane results;
+    
+    private JPanel searchPanel;
+
+    private boolean enabled = true;
+    
+    private JCheckBox showSearch;
+
+    
+    public void init(JPanel resultsPane) {
+        // when CTRL-T is pressed, (un-)show search dialog box (only in 
results pane)
+        InputMap im = resultsPane
+                .getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+        im.put(KeyStroke.getKeyStroke(KeyEvent.VK_T, 
+                InputEvent.CTRL_MASK), SEARCH_SHOW_COMMAND);
+        ActionMap am = resultsPane.getActionMap();
+        am.put(SEARCH_SHOW_COMMAND, new DisplaySearchAction());
+    }
+    
+    public void setResults(JEditorPane results) {
+        if (this.results != null) {
+            newSearch = true;
+            resetTextToFind();
+        }
+        this.results = results;
+        // prepare highlighter to show text find with search command
+        selection = new DefaultHighlighter();
+        painter = new DefaultHighlighter.DefaultHighlightPainter(HILIT_COLOR);
+        results.setHighlighter(selection);
+    }
+
+    /**
+     * Launch find text engine on response text
+     */
+    public void executeAndShowTextFind() {
+        if (results != null && results.getText().length() > 0
+                && this.textToFindField.getText().length() > 0) {
+            String textToFind = textToFindField.getText();
+
+            // new search?
+            if (lastTextTofind != null && !lastTextTofind.equals(textToFind)) {
+                lastPosition = LAST_POSITION_DEFAULT;
+            }
+
+            log.debug("lastPosition=" + lastPosition);
+            Matcher matcher = null;
+            try {
+                Pattern pattern = createPattern(textToFind);
+                Document contentDoc = results.getDocument();
+                String body = contentDoc.getText(lastPosition,
+                        (contentDoc.getLength() - lastPosition));
+                matcher = pattern.matcher(body);
+
+                if ((matcher != null) && (matcher.find())) {
+                    selection.removeAllHighlights();
+                    selection.addHighlight(lastPosition + matcher.start(),
+                            lastPosition + matcher.end(), painter);
+                    results.setCaretPosition(lastPosition + matcher.end());    
                
+
+                    // save search position
+                    lastPosition = lastPosition + matcher.end();
+                    findButton.setText(JMeterUtils
+                            .getResString("search_text_button_next"));// 
$NON-NLS-1$
+                    lastTextTofind = textToFind;
+                    newSearch = true;
+                } else {
+                    // Display not found message and reset search
+                    JOptionPane.showMessageDialog(null, JMeterUtils
+                            .getResString("search_text_msg_not_found"),// 
$NON-NLS-1$
+                            
JMeterUtils.getResString("search_text_title_not_found"), // $NON-NLS-1$
+                            JOptionPane.INFORMATION_MESSAGE);
+                    lastPosition = LAST_POSITION_DEFAULT;
+                    findButton.setText(JMeterUtils
+                            .getResString("search_text_button_find"));// 
$NON-NLS-1$
+                    results.setCaretPosition(0);
+                }
+            } catch (BadLocationException ble) {
+                log.error("Location exception in text find", ble);// 
$NON-NLS-1$
+            }
+        }
+    }
+
+    /**
+     * Create the text find task pane
+     * 
+     * @return Text find task pane
+     */
+    public JPanel createSearchTextPanel() {
+        Font font = new Font("SansSerif", Font.PLAIN, 10);
+        
+        // Search field
+        searchPanel = new JPanel();
+        searchPanel.setLayout(new BoxLayout(searchPanel, BoxLayout.X_AXIS));
+        searchPanel.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
+        label = new JLabel(JMeterUtils.getResString("search_text_field")); // 
$NON-NLS-1$
+        label.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5));
+        searchPanel.add(label);
+        textToFindField = new JTextField(); // $NON-NLS-1$
+        searchPanel.add(textToFindField);
+        searchPanel.add(Box.createRigidArea(new Dimension(5,0)));
+
+        // add listener to intercept texttofind changes and reset search
+        textToFindField.getDocument().addDocumentListener(this);
+
+        // Buttons
+        findButton = new JButton(JMeterUtils
+                .getResString("search_text_button_find")); // $NON-NLS-1$
+        findButton.setFont(font);
+        findButton.setActionCommand(SEARCH_TEXT_COMMAND);
+        findButton.addActionListener(this);
+        searchPanel.add(findButton);
+
+        // checkboxes
+        caseChkBox = new JCheckBox(JMeterUtils
+                .getResString("search_text_chkbox_case"), false); // 
$NON-NLS-1$
+        caseChkBox.setFont(font);
+        searchPanel.add(caseChkBox);
+        regexpChkBox = new JCheckBox(JMeterUtils
+                .getResString("search_text_chkbox_regexp"), false); // 
$NON-NLS-1$
+        regexpChkBox.setFont(font);
+        searchPanel.add(regexpChkBox);
+
+        // when Enter is pressed, search start
+        InputMap im = textToFindField
+                .getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
+        im.put(KeyStroke.getKeyStroke("ENTER"), SEARCH_TEXT_COMMAND);
+        ActionMap am = textToFindField.getActionMap();
+        am.put(SEARCH_TEXT_COMMAND, new EnterAction());
+        
+        return searchPanel;
+    }
+    
+    public JPanel createSearchTextExtensionPane() {
+        JPanel pane = new JPanel();
+        pane.setLayout(new BoxLayout(pane, BoxLayout.X_AXIS));
+        pane.add(createShowSearchPanel());
+        pane.add(createSearchTextPanel());
+        return pane;
+    }
+    
+    public JPanel createShowSearchPanel() {
+        Font fontBold = new Font("SansSerif", Font.BOLD, 10);
+
+        showSearch = new JCheckBox();
+        showSearch.setFont(fontBold);
+        showSearch.setAction(new DisplaySearchAction());
+        showSearch.setText(JMeterUtils
+                .getResString("view_results_search_pane")); // $NON-NLS-1$
+        
+        JPanel pane = new JPanel();
+        pane.setLayout(new BoxLayout(pane, BoxLayout.X_AXIS));
+        pane.add(showSearch);
+        
+        return pane;
+    }
+
+
+    /**
+     * Display the response as text or as rendered HTML. Change the text on the
+     * button appropriate to the current display.
+     *
+     * @param e
+     *            the ActionEvent being processed
+     */
+    public void actionPerformed(ActionEvent e) {
+        command = e.getActionCommand();
+
+        // Search text in response data
+        if (command != null 
+                && (command.equals(SearchTextExtension.SEARCH_TEXT_COMMAND))) {
+            executeAndShowTextFind();
+        }
+        // hide search dialog box
+        else if (command != null && command.equals(
+                SearchTextExtension.DIALOG_SEARCH_HIDE_COMMAND)) {
+            hideSearchBox();
+        }
+    }
+
+    private class EnterAction extends AbstractAction {
+        private static final long serialVersionUID = 1L;
+        public void actionPerformed(ActionEvent ev) {
+            executeAndShowTextFind();
+        }
+    }
+
+    private class DisplaySearchAction extends AbstractAction {
+        private static final long serialVersionUID = 1L;
+        public void actionPerformed(ActionEvent ev) {
+            if (searchPanel != null) {
+                resetTextToFind();
+                if (searchPanel.isVisible()) {
+                    searchPanel.setVisible(false);
+                    showSearch.setSelected(false);
+                } else {
+                    searchPanel.setVisible(true);
+                    showSearch.setSelected(true);
+                }
+            }
+        }
+    }
+    
+    // DocumentListener method
+    public void changedUpdate(DocumentEvent e) {
+        // do nothing
+    }
+
+    // DocumentListener method
+    public void insertUpdate(DocumentEvent e) {
+        resetTextToFind();
+    }
+
+    // DocumentListener method
+    public void removeUpdate(DocumentEvent e) {
+        resetTextToFind();
+    }
+
+    public void hideSearchBox() {
+        searchPanel.setVisible(false);
+    }
+    
+    public void resetTextToFind() {
+        if (newSearch) {
+            log.debug("reset pass");
+            // Reset search
+            lastPosition = LAST_POSITION_DEFAULT;
+            lastTextTofind = null;
+            findButton.setText(JMeterUtils
+                    .getResString("search_text_button_find"));// $NON-NLS-1$
+            selection.removeAllHighlights();
+            results.setCaretPosition(0);
+            newSearch = false;
+        }
+    }
+    
+    public boolean isEnabled() {
+        return enabled ;
+    }
+    
+    public void setEnabled(boolean b) {
+        this.enabled = b;
+        label.setEnabled(b);
+        textToFindField.setEnabled(b);
+        findButton.setEnabled(b);
+        caseChkBox.setEnabled(b);
+        regexpChkBox.setEnabled(b);
+    }
+    
+    private Pattern createPattern(String textToFind) {
+        // desactivate or not specials regexp char 
+        String textToFindQ = Pattern.quote(textToFind);
+        if (regexpChkBox.isSelected()) {
+            textToFindQ = textToFind;
+        }
+        Pattern pattern = null;
+        if (caseChkBox.isSelected()) {
+            pattern = Pattern.compile(textToFindQ);
+        } else {
+            pattern = Pattern.compile(textToFindQ, Pattern.CASE_INSENSITIVE);
+        }
+        return pattern;
+    }
+}

Propchange: 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SearchTextExtension.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SearchTextExtension.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java?rev=813160&r1=813159&r2=813160&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
 (original)
+++ 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
 Wed Sep  9 23:02:00 2009
@@ -22,9 +22,12 @@
 import java.awt.Color;
 import java.awt.Component;
 import java.awt.Dimension;
+import java.awt.Font;
 import java.awt.GridLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
 import java.io.ByteArrayInputStream;
 import java.io.StringWriter;
 import java.text.DateFormat;
@@ -33,11 +36,17 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import javax.swing.AbstractAction;
+import javax.swing.ActionMap;
 import javax.swing.BorderFactory;
+import javax.swing.Box;
+import javax.swing.BoxLayout;
 import javax.swing.ButtonGroup;
 import javax.swing.Icon;
 import javax.swing.ImageIcon;
+import javax.swing.InputMap;
 import javax.swing.JCheckBox;
+import javax.swing.JComponent;
 import javax.swing.JEditorPane;
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
@@ -49,6 +58,7 @@
 import javax.swing.JTextArea;
 import javax.swing.JTextPane;
 import javax.swing.JTree;
+import javax.swing.KeyStroke;
 import javax.swing.ToolTipManager;
 import javax.swing.event.TreeSelectionEvent;
 import javax.swing.event.TreeSelectionListener;
@@ -182,11 +192,17 @@
     private JRadioButton xmlButton;
 
     private JCheckBox downloadAll;
+    
+    private JLabel renderLabel;
 
     private JTree jTree;
 
     private JTabbedPane rightSide;
 
+    private SearchTextExtension searchTextExtension;
+    
+    private JPanel searchPanel = null;
+
     private static final ImageIcon imageSuccess = JMeterUtils.getImage(
             JMeterUtils.getPropDefault("viewResultsTree.success",  
//$NON-NLS-1$
                     "icon_success_sml.gif")); //$NON-NLS-1$
@@ -408,6 +424,9 @@
                     statsDoc.insertString(statsDoc.getLength(), 
statsBuff.toString(), null);
                     statsBuff = null; // Done
 
+                    // Reset search
+                    searchTextExtension.resetTextToFind();
+                    
                     // get the text response and image icon
                     // to determine which is NOT null
                     if ((SampleResult.TEXT).equals(res.getDataType())) // 
equals(null) is OK
@@ -422,10 +441,16 @@
                         } else if (command.equals(XML_COMMAND)) {
                             showRenderXMLResponse(res);
                         }
+                        if (!searchTextExtension.isEnabled()) {
+                            searchTextExtension.setEnabled(true);
+                        }
                     } else {
                         byte[] responseBytes = res.getResponseData();
                         if (responseBytes != null) {
                             showImage(new ImageIcon(responseBytes)); //TODO 
implement other non-text types
+                            if (searchTextExtension.isEnabled()) {
+                                searchTextExtension.setEnabled(false);
+                            }
                         }
                     }
                 }
@@ -457,10 +482,7 @@
     private void showImage(Icon image) {
         imageLabel.setIcon(image);
         resultsScrollPane.setViewportView(imageLabel);
-        textButton.setEnabled(false);
-        htmlButton.setEnabled(false);
-        jsonButton.setEnabled(false);
-        xmlButton.setEnabled(false);
+        setEnabledButtons(false);
     }
 
     private void showTextResponse(String response) {
@@ -469,10 +491,7 @@
         results.setCaretPosition(0);
         resultsScrollPane.setViewportView(results);
 
-        textButton.setEnabled(true);
-        htmlButton.setEnabled(true);
-        jsonButton.setEnabled(true);
-        xmlButton.setEnabled(true);
+        setEnabledButtons(true);
     }
 
     // It might be useful also to make this available in the 'Request' tab, for
@@ -536,10 +555,7 @@
         results.setCaretPosition(0);
         resultsScrollPane.setViewportView(results);
 
-        textButton.setEnabled(true);
-        htmlButton.setEnabled(true);
-        jsonButton.setEnabled(true);
-        xmlButton.setEnabled(true);
+        setEnabledButtons(true);
     }
 
     private void showRenderXMLResponse(SampleResult res) {
@@ -571,10 +587,7 @@
         JPanel domTreePanel = new DOMTreePanel(document);
         view = domTreePanel;
         resultsScrollPane.setViewportView(view);
-        textButton.setEnabled(true);
-        htmlButton.setEnabled(true);
-        jsonButton.setEnabled(true);
-        xmlButton.setEnabled(true);
+        setEnabledButtons(true);
     }
 
     private static String getResponseAsString(SampleResult res) {
@@ -623,7 +636,8 @@
                 results.setText("");
                 return;
             }
-
+            searchTextExtension.resetTextToFind();
+            
             SampleResult res = (SampleResult) node.getUserObject();
             String response = getResponseAsString(res);
 
@@ -688,47 +702,61 @@
         results.setCaretPosition(0);
         resultsScrollPane.setViewportView(results);
 
-        textButton.setEnabled(true);
-        htmlButton.setEnabled(true);
-        jsonButton.setEnabled(true);
-        xmlButton.setEnabled(true);
+        setEnabledButtons(true);
     }
 
     private Component createHtmlOrTextPane() {
         ButtonGroup group = new ButtonGroup();
+        Font font = new Font("SansSerif", Font.PLAIN, 10);
+        Font fontBold = new Font("SansSerif", Font.BOLD, 10);
+
+        renderLabel = new JLabel(JMeterUtils
+                .getResString("view_results_render")); // $NON-NLS-1$
+        renderLabel.setFont(fontBold);
 
         textButton = new 
JRadioButton(JMeterUtils.getResString("view_results_render_text")); // 
$NON-NLS-1$
+        textButton.setFont(font);
         textButton.setActionCommand(TEXT_COMMAND);
         textButton.addActionListener(this);
         textButton.setSelected(textMode);
         group.add(textButton);
 
         htmlButton = new 
JRadioButton(JMeterUtils.getResString("view_results_render_html")); // 
$NON-NLS-1$
+        htmlButton.setFont(font);
         htmlButton.setActionCommand(HTML_COMMAND);
         htmlButton.addActionListener(this);
         htmlButton.setSelected(!textMode);
         group.add(htmlButton);
 
         jsonButton = new 
JRadioButton(JMeterUtils.getResString("view_results_render_json")); // 
$NON-NLS-1$
+        jsonButton.setFont(font);
         jsonButton.setActionCommand(JSON_COMMAND);
         jsonButton.addActionListener(this);
         jsonButton.setSelected(!textMode);
         group.add(jsonButton);
 
         xmlButton = new 
JRadioButton(JMeterUtils.getResString("view_results_render_xml")); // 
$NON-NLS-1$
+        xmlButton.setFont(font);
         xmlButton.setActionCommand(XML_COMMAND);
         xmlButton.addActionListener(this);
         xmlButton.setSelected(!textMode);
         group.add(xmlButton);
 
         downloadAll = new 
JCheckBox(JMeterUtils.getResString("view_results_render_embedded")); // 
$NON-NLS-1$
-
+        downloadAll.setFont(font);
+        
         JPanel pane = new JPanel();
+        pane.setLayout(new BoxLayout(pane, BoxLayout.X_AXIS));
+        pane.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
+        pane.add(searchTextExtension.createShowSearchPanel());
+        pane.add(Box.createRigidArea(new Dimension(30, 0)));
+        pane.add(renderLabel);
         pane.add(textButton);
         pane.add(htmlButton);
         pane.add(xmlButton);
         pane.add(jsonButton);
         pane.add(downloadAll);
+        
         return pane;
     }
 
@@ -751,6 +779,8 @@
 
         JSplitPane mainSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, 
leftSide, rightSide);
         add(mainSplit, BorderLayout.CENTER);
+        
+        searchTextExtension.init(resultsPane);
     }
 
     private void setupTabPaneForSampleResult() {
@@ -838,13 +868,35 @@
         resultsScrollPane = makeScrollPane(results);
         imageLabel = new JLabel();
 
+        // Add search text extension
+        searchTextExtension = new SearchTextExtension();
+        searchPanel = searchTextExtension.createSearchTextPanel();
+        searchTextExtension.setResults(results);
+        searchPanel.setVisible(false);
+        JPanel panelSouth = new JPanel(new BorderLayout());
+        panelSouth.add(createHtmlOrTextPane(), BorderLayout.CENTER);
+        panelSouth.add(searchPanel, BorderLayout.SOUTH);
+        
         JPanel panel = new JPanel(new BorderLayout());
         panel.add(resultsScrollPane, BorderLayout.CENTER);
-        panel.add(createHtmlOrTextPane(), BorderLayout.SOUTH);
+        panel.add(panelSouth, BorderLayout.SOUTH);
 
         return panel;
     }
 
+    private void setEnabledButtons(boolean b) {
+        renderLabel.setEnabled(b); 
+        textButton.setEnabled(b);
+        htmlButton.setEnabled(b);
+        jsonButton.setEnabled(b);
+        xmlButton.setEnabled(b);
+        if (b && command.equals(HTML_COMMAND)) {
+            downloadAll.setEnabled(b);
+        } else {
+            downloadAll.setEnabled(false);
+        }
+    }
+
     private static class ResultsNodeRenderer extends DefaultTreeCellRenderer {
         @Override
         public Component getTreeCellRendererComponent(JTree tree, Object 
value, boolean sel, boolean expanded,

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties?rev=813160&r1=813159&r2=813160&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties 
(original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties 
Wed Sep  9 23:02:00 2009
@@ -721,6 +721,14 @@
 search_base=Search base
 search_filter=Search Filter
 search_test=Search Test
+search_text_button_close=Close
+search_text_button_find=Find
+search_text_button_next=Find next
+search_text_chkbox_case=Case sensitive
+search_text_chkbox_regexp=Regular exp.
+search_text_field=Search: 
+search_text_msg_not_found=Text not found
+search_text_title_not_found=Not found
 searchbase=Search base
 searchfilter=Search Filter
 searchtest=Search test
@@ -874,11 +882,12 @@
 view_results_in_table=View Results in Table
 view_results_latency=Latency: 
 view_results_load_time=Load time: 
+view_results_render=Render: 
 view_results_render_embedded=Download embedded resources
-view_results_render_html=Render HTML
-view_results_render_json=Render JSON
-view_results_render_text=Show Text
-view_results_render_xml=Render XML
+view_results_render_html=HTML
+view_results_render_json=JSON
+view_results_render_text=Text
+view_results_render_xml=XML
 view_results_request_headers=Request Headers:
 view_results_response_code=Response code: 
 view_results_response_headers=Response headers:
@@ -886,6 +895,7 @@
 view_results_response_too_large_message=Response too large to be displayed. 
Size: 
 view_results_sample_count=Sample Count: 
 view_results_sample_start=Sample Start: 
+view_results_search_pane=Search pane
 view_results_size_in_bytes=Size in bytes: 
 view_results_tab_assertion=Assertion result
 view_results_tab_request=Request

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties?rev=813160&r1=813159&r2=813160&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties
 (original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages_fr.properties
 Wed Sep  9 23:02:00 2009
@@ -579,6 +579,14 @@
 search_base=Base de recherche
 search_filter=Filtre de recherche
 search_test=Recherche
+search_text_button_close=Fermer
+search_text_button_find=Rechercher
+search_text_button_next=Suivant
+search_text_chkbox_case=Consid\u00E9rer la casse
+search_text_chkbox_regexp=Exp. reguli\u00E8re
+search_text_field=Rechercher \:
+search_text_msg_not_found=Text non trouv\u00E9
+search_text_title_not_found=Pas trouv\u00E9
 second=seconde
 secure=S\u00E9curis\u00E9 \:
 send_file=Envoyer un fichier avec la requ\u00EAte \:
@@ -719,11 +727,12 @@
 view_results_in_table=Tableau de r\u00E9sultats
 view_results_latency=Latence \: 
 view_results_load_time=Temps de r\u00E9ponse \: 
+view_results_render=Rendu \: 
 view_results_render_embedded=T\u00E9l\u00E9charger les ressources incluses
-view_results_render_html=Afficher en HTML
-view_results_render_json=Afficher en JSON
-view_results_render_text=Afficher en texte brut
-view_results_render_xml=Afficher en XML
+view_results_render_html=HTML
+view_results_render_json=JSON
+view_results_render_text=Texte brut
+view_results_render_xml=XML
 view_results_request_headers=Ent\u00EAtes de requ\u00EAte \:
 view_results_response_code=Code HTTP de r\u00E9ponse \: 
 view_results_response_headers=Ent\u00EAtes de r\u00E9ponse \:
@@ -731,6 +740,7 @@
 view_results_response_too_large_message=R\u00E9ponse d\u00E9passant la taille 
maximale d'affichage. Taille \: 
 view_results_sample_count=Compteur \u00E9chantillon \: 
 view_results_sample_start=Date d\u00E9but \u00E9chantillon \: 
+view_results_search_pane=Volet recherche 
 view_results_size_in_bytes=Taille en octets \: 
 view_results_tab_assertion=R\u00E9sultats d'assertion
 view_results_tab_request=Requ\u00EAte

Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=813160&r1=813159&r2=813160&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Wed Sep  9 23:02:00 2009
@@ -125,6 +125,7 @@
 <li>Bug 47398 - SampleEvents are sent twice over RMI in distributed testing 
and non gui mode</li>
 <li>Added DataStrippingSample sender - supports "Stripped" and "StrippedBatch" 
modes.</li>
 <li>Added Comparison Assertion Visualizer</li>
+<li>Bug 36726 - add search function to Tree View Listener</li>
 </ul>
 
 <h3>Assertions, Config, Pre- &amp; Post-Processors</h3>



---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscr...@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-h...@jakarta.apache.org

Reply via email to