ASF Bugzilla – Attachment 24211 Details for
Bug 36726
Activate "ctrl F" shortcut to search a text in the View Results Tree Listener
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Proposal patch to add search
search-text.patch (text/plain), 13.47 KB, created by
Milamber
on 2009-09-06 03:32:10 UTC
(
hide
)
Description:
Proposal patch to add search
Filename:
MIME Type:
Creator:
Milamber
Created:
2009-09-06 03:32:10 UTC
Size:
13.47 KB
patch
obsolete
>Index: /src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java >=================================================================== >--- /src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java (revision 810272) >+++ /src/components/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java (working copy) >@@ -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,6 +192,8 @@ > private JRadioButton xmlButton; > > private JCheckBox downloadAll; >+ >+ private JLabel renderLabel; > > private JTree jTree; > >@@ -187,6 +199,10 @@ > > 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,6 +441,9 @@ > } else if (command.equals(XML_COMMAND)) { > showRenderXMLResponse(res); > } >+ if (!searchTextExtension.isEnabled()) { >+ searchTextExtension.setEnabled(true); >+ } > } else { > byte[] responseBytes = res.getResponseData(); > if (responseBytes != null) { >@@ -426,6 +448,9 @@ > 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,10 +702,7 @@ > results.setCaretPosition(0); > resultsScrollPane.setViewportView(results); > >- textButton.setEnabled(true); >- htmlButton.setEnabled(true); >- jsonButton.setEnabled(true); >- xmlButton.setEnabled(true); >+ setEnabledButtons(true); > } > > private Component createHtmlOrTextPane() { >@@ -696,8 +707,15 @@ > > 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); >@@ -704,6 +722,7 @@ > 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); >@@ -710,6 +729,7 @@ > 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); >@@ -716,6 +736,7 @@ > 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); >@@ -722,8 +743,14 @@ > 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); >@@ -729,6 +756,7 @@ > 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,9 +868,18 @@ > 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; > } >@@ -845,6 +884,19 @@ > 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, > >Index: /src/core/org/apache/jmeter/resources/messages.properties >=================================================================== >--- /src/core/org/apache/jmeter/resources/messages.properties (revision 810272) >+++ /src/core/org/apache/jmeter/resources/messages.properties (working copy) >@@ -719,6 +719,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 >@@ -872,11 +880,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: >@@ -884,6 +893,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 >Index: /src/core/org/apache/jmeter/resources/messages_fr.properties >=================================================================== >--- /src/core/org/apache/jmeter/resources/messages_fr.properties (revision 810272) >+++ /src/core/org/apache/jmeter/resources/messages_fr.properties (working copy) >@@ -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 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 36726
: 24211 |
24212
|
24213
|
24533