Author: milamber
Date: Mon Oct 11 22:12:42 2010
New Revision: 1021534
URL: http://svn.apache.org/viewvc?rev=1021534&view=rev
Log:
View Results Tree - Add a dialog's text box on "Sampler result tab > Parsed" to
display the long values with a double click on cell
Added:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/util/TextBoxDialoger.java
(with props)
Modified:
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SamplerResultTab.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/src/jorphan/org/apache/jorphan/gui/ObjectTableModel.java
jakarta/jmeter/trunk/xdocs/changes.xml
Modified:
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SamplerResultTab.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SamplerResultTab.java?rev=1021534&r1=1021533&r2=1021534&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SamplerResultTab.java
(original)
+++
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SamplerResultTab.java
Mon Oct 11 22:12:42 2010
@@ -49,6 +49,7 @@ import javax.swing.text.StyledDocument;
import org.apache.jmeter.assertions.AssertionResult;
import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer;
+import org.apache.jmeter.gui.util.TextBoxDialoger.TextBoxDoubleClick;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.gui.GuiUtils;
@@ -166,7 +167,7 @@ public abstract class SamplerResultTab i
new Functor("getValue") }, // $NON-NLS-1$
new Functor[] {
null, null }, new Class[] {
- String.class, String.class });
+ String.class, String.class }, false);
resHeadersModel = new ObjectTableModel(COLUMNS_HEADERS,
RowResult.class, // The object used for each row
new Functor[] {
@@ -174,14 +175,14 @@ public abstract class SamplerResultTab i
new Functor("getValue") }, // $NON-NLS-1$
new Functor[] {
null, null }, new Class[] {
- String.class, String.class });
+ String.class, String.class }, false);
resFieldsModel = new ObjectTableModel(COLUMNS_FIELDS, RowResult.class,
// The object used for each row
new Functor[] {
new Functor("getKey"), // $NON-NLS-1$
new Functor("getValue") }, // $NON-NLS-1$
new Functor[] {
null, null }, new Class[] {
- String.class, String.class });
+ String.class, String.class }, false);
}
public void clearData() {
@@ -395,11 +396,15 @@ public abstract class SamplerResultTab i
// Set up the 1st table Result with empty headers
tableResult = new JTable(resultModel);
+
tableResult.setToolTipText(JMeterUtils.getResString("textbox_tooltip_cell"));
// $NON-NLS-1$
+ tableResult.addMouseListener(new TextBoxDoubleClick(tableResult));
setFirstColumnPreferredSize(tableResult);
RendererUtils.applyRenderers(tableResult, RENDERERS_RESULT);
// Set up the 2nd table
tableResHeaders = new JTable(resHeadersModel);
+
tableResHeaders.setToolTipText(JMeterUtils.getResString("textbox_tooltip_cell"));
// $NON-NLS-1$
+ tableResHeaders.addMouseListener(new
TextBoxDoubleClick(tableResHeaders));
setFirstColumnPreferredSize(tableResHeaders);
tableResHeaders.getTableHeader().setDefaultRenderer(
new HeaderAsPropertyRenderer());
@@ -407,6 +412,8 @@ public abstract class SamplerResultTab i
// Set up the 3rd table
tableResFields = new JTable(resFieldsModel);
+
tableResFields.setToolTipText(JMeterUtils.getResString("textbox_tooltip_cell"));
// $NON-NLS-1$
+ tableResFields.addMouseListener(new
TextBoxDoubleClick(tableResFields));
setFirstColumnPreferredSize(tableResFields);
tableResFields.getTableHeader().setDefaultRenderer(
new HeaderAsPropertyRenderer());
Added:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/util/TextBoxDialoger.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/util/TextBoxDialoger.java?rev=1021534&view=auto
==============================================================================
---
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/util/TextBoxDialoger.java
(added)
+++
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/util/TextBoxDialoger.java
Mon Oct 11 22:12:42 2010
@@ -0,0 +1,195 @@
+/*
+ * 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.gui.util;
+
+import java.awt.BorderLayout;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
+import java.awt.Point;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JEditorPane;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.table.TableModel;
+
+import org.apache.jmeter.gui.GuiPackage;
+import org.apache.jmeter.util.JMeterUtils;
+import org.apache.jorphan.gui.GuiUtils;
+
+/**
+ * Dialog text box to display some text in a box
+ *
+ */
+public class TextBoxDialoger implements ActionListener {
+
+ private static final long serialVersionUID = 241L;
+
+ private static final String CANCEL_COMMAND = "cancel_dialog"; //
$NON-NLS-1$
+
+ private static final String SAVE_CLOSE_COMMAND = "save_close_dialog"; //
$NON-NLS-1$
+
+ private static final String CLOSE_COMMAND = "close_dialog"; // $NON-NLS-1$
+
+ private static JDialog dialog;
+
+ private JEditorPane textBox;
+
+ private String originalText;
+
+ private boolean editable = false;
+
+ /**
+ * Dialog text box
+ */
+ public TextBoxDialoger() {
+ // Empty box
+ init(""); //$NON-NLS-1$
+ }
+
+ /**
+ * Dialog text box
+ * @param text - text to display in a box
+ */
+ public TextBoxDialoger(String text) {
+ init(text);
+ }
+
+ /**
+ * Dialog text box
+ * @param text - text to display in a box
+ * @param editable - allow to modify text
+ */
+ public TextBoxDialoger(String text, boolean editable) {
+ init(text);
+ this.editable = editable;
+ }
+
+ private void init(String text) {
+ createDialogBox();
+ setTextBox(text);
+ dialog.setVisible(true);
+ }
+
+ private void createDialogBox() {
+ JFrame mainFrame = GuiPackage.getInstance().getMainFrame();
+ String title = editable ?
JMeterUtils.getResString("textbox_title_edit") //$NON-NLS-1$
+ : JMeterUtils.getResString("textbox_title_view"); //$NON-NLS-1$
+ dialog = new JDialog(mainFrame, title, true); // modal dialog box
+
+ textBox = new JEditorPane();
+ textBox.setEditable(editable);
+
+ JScrollPane textBoxScrollPane = GuiUtils.makeScrollPane(textBox);
+
+ JPanel btnBar = new JPanel();
+ btnBar.setLayout(new FlowLayout(FlowLayout.RIGHT));
+ if (editable) {
+ JButton cancelBtn = new
JButton(JMeterUtils.getResString("textbox_cancel")); //$NON-NLS-1$
+ cancelBtn.setActionCommand(CANCEL_COMMAND);
+ cancelBtn.addActionListener(this);
+ JButton saveBtn = new
JButton(JMeterUtils.getResString("textbox_save_close")); //$NON-NLS-1$
+ saveBtn.setActionCommand(SAVE_CLOSE_COMMAND);
+ saveBtn.addActionListener(this);
+
+ btnBar.add(cancelBtn);
+ btnBar.add(saveBtn);
+ } else {
+ JButton closeBtn = new
JButton(JMeterUtils.getResString("textbox_close")); //$NON-NLS-1$
+ closeBtn.setActionCommand(CLOSE_COMMAND);
+ closeBtn.addActionListener(this);
+
+ btnBar.add(closeBtn);
+ }
+
+ // Prepare dialog box
+ Container panel = dialog.getContentPane();
+ dialog.setMinimumSize(new Dimension(400, 250));
+ panel.add(textBoxScrollPane, BorderLayout.CENTER);
+ panel.add(btnBar, BorderLayout.SOUTH);
+
+ // determine location on screen
+ Point p = mainFrame.getLocationOnScreen();
+ Dimension d1 = mainFrame.getSize();
+ Dimension d2 = dialog.getSize();
+ dialog.setLocation(p.x + (d1.width - d2.width) / 2, p.y + (d1.height -
d2.height) / 2);
+ dialog.pack();
+ }
+
+ private void closeDialog() {
+ dialog.setVisible(false);
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ String command = e.getActionCommand();
+
+ if (CANCEL_COMMAND.equals(command)) {
+ closeDialog();
+ setTextBox(originalText);
+ } else {
+ // must be CLOSE or SAVE_CLOSE COMMANDS
+ closeDialog();
+ }
+
+ }
+
+ public void setTextBox(String text) {
+ originalText = text; // text backup
+ textBox.setText(text);
+ }
+
+ public String getTextBox() {
+ return textBox.getText();
+ }
+
+ /**
+ * Class to display a dialog box and cell's content
+ * when double click on a table's cell
+ *
+ */
+ public static class TextBoxDoubleClick extends MouseAdapter {
+
+ private JTable table = null;
+
+ public TextBoxDoubleClick(JTable table) {
+ super();
+ this.table = table;
+ }
+
+ @Override
+ public void mouseClicked(MouseEvent e) {
+ if (e.getClickCount() == 2) { // double click
+ TableModel tm = table.getModel();
+ Object value = tm.getValueAt(table.getSelectedRow(),
table.getSelectedColumn());
+ new TextBoxDialoger(value.toString(), false); // view only
+ }
+ }
+ }
+
+
+}
Propchange:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/util/TextBoxDialoger.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/gui/util/TextBoxDialoger.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
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=1021534&r1=1021533&r2=1021534&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
Mon Oct 11 22:12:42 2010
@@ -900,6 +900,12 @@ testconfiguration=Test Configuration
testplan.serialized=Run Thread Groups consecutively (i.e. run groups one at a
time)
testplan_comments=Comments\:
testt=Test
+textbox_cancel=Cancel
+textbox_close=Close
+textbox_save_close=Save & Close
+textbox_title_edit=Edit text
+textbox_title_view=View text
+textbox_tooltip_cell=Double click to view/edit
thread_delay_properties=Thread Delay Properties
thread_group_title=Thread Group
thread_properties=Thread Properties
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=1021534&r1=1021533&r2=1021534&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
Mon Oct 11 22:12:42 2010
@@ -808,6 +808,12 @@ test_plan=Plan de test
test_plan_classpath_browse=Ajouter un r\u00E9pertoire ou un fichier 'jar' au
'classpath'
testplan.serialized=Lancer les groupes d'unit\u00E9s en s\u00E9rie
(c'est-\u00E0-dire \: lance un groupe \u00E0 la fois)
testplan_comments=Commentaires \:
+textbox_cancel=Annuler
+textbox_close=Fermer
+textbox_save_close=Enregistrer & Fermer
+textbox_title_edit=Editer texte
+textbox_title_view=Voir texte
+textbox_tooltip_cell=Double clic pour voir/editer
thread_delay_properties=Propri\u00E9t\u00E9s de temporisation de l'unit\u00E9
thread_group_title=Groupe d'unit\u00E9s
thread_properties=Propri\u00E9t\u00E9s du groupe d'unit\u00E9s
Modified:
jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/gui/ObjectTableModel.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/gui/ObjectTableModel.java?rev=1021534&r1=1021533&r2=1021534&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/gui/ObjectTableModel.java
(original)
+++
jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/gui/ObjectTableModel.java
Mon Oct 11 22:12:42 2010
@@ -50,6 +50,8 @@ public class ObjectTableModel extends De
private transient ArrayList<Functor> writeFunctors = new
ArrayList<Functor>();
private transient Class<?> objectClass = null; // if provided
+
+ private transient boolean cellEditable = true;
/**
* The ObjectTableModel is a TableModel whose rows are objects;
@@ -65,6 +67,24 @@ public class ObjectTableModel extends De
this(headers, readFunctors, writeFunctors, editorClasses);
this.objectClass=_objClass;
}
+
+ /**
+ * The ObjectTableModel is a TableModel whose rows are objects;
+ * columns are defined as Functors on the object.
+ *
+ * @param headers - Column names
+ * @param _objClass - Object class that will be used
+ * @param readFunctors - used to get the values
+ * @param writeFunctors - used to set the values
+ * @param editorClasses - class for each column
+ * @param cellEditable - if cell must editable (false to allow double
click on cell)
+ */
+ public ObjectTableModel(String[] headers, Class<?> _objClass, Functor[]
readFunctors,
+ Functor[] writeFunctors, Class<?>[] editorClasses, boolean
cellEditable) {
+ this(headers, readFunctors, writeFunctors, editorClasses);
+ this.objectClass=_objClass;
+ this.cellEditable = cellEditable;
+ }
/**
* The ObjectTableModel is a TableModel whose rows are objects;
@@ -176,7 +196,7 @@ public class ObjectTableModel extends De
/** {...@inheritdoc} */
@Override
public boolean isCellEditable(int arg0, int arg1) {
- return true;
+ return cellEditable;
}
/** {...@inheritdoc} */
Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=1021534&r1=1021533&r2=1021534&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Mon Oct 11 22:12:42 2010
@@ -123,6 +123,7 @@ To override the default local language f
<h3>Listeners</h3>
<ul>
+<li>View Results Tree - Add a dialog's text box on "Sampler result tab >
Parsed" to display the long value with a double click on cell</li>
</ul>
<h3>Timers, Assertions, Config, Pre- & Post-Processors</h3>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]