You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2016/08/11 11:29:40 UTC
svn commit: r1755946 - in /jmeter/trunk:
src/components/org/apache/jmeter/assertions/gui/AssertionGui.java
xdocs/changes.xml
Author: pmouawad
Date: Thu Aug 11 11:29:40 2016
New Revision: 1755946
URL: http://svn.apache.org/viewvc?rev=1755946&view=rev
Log:
Bug 59974 - Response Assertion : Add button "Add from clipboard"
Patch by UbikLoadPack
Bugzilla Id: 59974
Modified:
jmeter/trunk/src/components/org/apache/jmeter/assertions/gui/AssertionGui.java
jmeter/trunk/xdocs/changes.xml
Modified: jmeter/trunk/src/components/org/apache/jmeter/assertions/gui/AssertionGui.java
URL: http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/assertions/gui/AssertionGui.java?rev=1755946&r1=1755945&r2=1755946&view=diff
==============================================================================
--- jmeter/trunk/src/components/org/apache/jmeter/assertions/gui/AssertionGui.java (original)
+++ jmeter/trunk/src/components/org/apache/jmeter/assertions/gui/AssertionGui.java Thu Aug 11 11:29:40 2016
@@ -20,21 +20,26 @@ package org.apache.jmeter.assertions.gui
import java.awt.BorderLayout;
import java.awt.Dimension;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.io.IOException;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
+import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
-import javax.swing.table.TableCellEditor;
+import javax.swing.ListSelectionModel;
import org.apache.jmeter.assertions.ResponseAssertion;
+import org.apache.jmeter.gui.GuiPackage;
import org.apache.jmeter.gui.util.HeaderAsPropertyRenderer;
import org.apache.jmeter.gui.util.PowerTableModel;
import org.apache.jmeter.gui.util.TextAreaCellRenderer;
@@ -365,6 +370,9 @@ public class AssertionGui extends Abstra
tableModel = new PowerTableModel(new String[] { COL_RESOURCE_NAME }, new Class[] { String.class });
stringTable = new JTable(tableModel);
stringTable.getTableHeader().setDefaultRenderer(new HeaderAsPropertyRenderer());
+ stringTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ JMeterUtils.applyHiDPI(stringTable);
+
TextAreaCellRenderer renderer = new TextAreaCellRenderer();
stringTable.setRowHeight(renderer.getPreferredHeight());
@@ -390,6 +398,9 @@ public class AssertionGui extends Abstra
private JPanel createButtonPanel() {
JButton addPattern = new JButton(JMeterUtils.getResString("add")); //$NON-NLS-1$
addPattern.addActionListener(new AddPatternListener());
+
+ JButton addFromClipboardPattern = new JButton(JMeterUtils.getResString("add_from_clipboard")); //$NON-NLS-1$
+ addFromClipboardPattern.addActionListener(new AddFromClipboardListener());
deletePattern = new JButton(JMeterUtils.getResString("delete")); //$NON-NLS-1$
deletePattern.addActionListener(new ClearPatternsListener());
@@ -397,6 +408,7 @@ public class AssertionGui extends Abstra
JPanel buttonPanel = new JPanel();
buttonPanel.add(addPattern);
+ buttonPanel.add(addFromClipboardPattern);
buttonPanel.add(deletePattern);
return buttonPanel;
}
@@ -427,14 +439,62 @@ public class AssertionGui extends Abstra
/**
* An ActionListener for adding a pattern.
- *
*/
private class AddPatternListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
+ GuiUtils.stopTableEditing(stringTable);
tableModel.addNewRow();
+ checkButtonsStatus();
+ tableModel.fireTableDataChanged();
+ }
+ }
+
+ /**
+ * An ActionListener for pasting from clipboard
+ */
+ private class AddFromClipboardListener implements ActionListener {
+ @Override
+ public void actionPerformed(ActionEvent e) {
deletePattern.setEnabled(true);
+ GuiUtils.stopTableEditing(stringTable);
+ int rowCount = stringTable.getRowCount();
+ try {
+ String clipboardContent = GuiUtils.getPastedText();
+ if(clipboardContent == null) {
+ return;
+ }
+ String[] clipboardLines = clipboardContent.split("\n");
+ for (String clipboardLine : clipboardLines) {
+ tableModel.addRow(new Object[] { clipboardLine.trim() });
+ }
+ if (stringTable.getRowCount() > rowCount) {
+ checkButtonsStatus();
+
+ // Highlight (select) and scroll to the appropriate rows.
+ int rowToSelect = tableModel.getRowCount() - 1;
+ stringTable.setRowSelectionInterval(rowCount, rowToSelect);
+ stringTable.scrollRectToVisible(stringTable.getCellRect(rowCount, 0, true));
+ }
+ } catch (IOException ioe) {
+ JOptionPane.showMessageDialog(GuiPackage.getInstance().getMainFrame(),
+ "Could not add data from clipboard:\n" + ioe.getLocalizedMessage(), "Error",
+ JOptionPane.ERROR_MESSAGE);
+ } catch (UnsupportedFlavorException ufe) {
+ JOptionPane.showMessageDialog(GuiPackage.getInstance().getMainFrame(),
+ "Could not add retrieve " + DataFlavor.stringFlavor.getHumanPresentableName()
+ + " from clipboard" + ufe.getLocalizedMessage(), "Error", JOptionPane.ERROR_MESSAGE);
+ }
tableModel.fireTableDataChanged();
}
}
+
+ protected void checkButtonsStatus() {
+ // Disable DELETE if there are no rows in the table to delete.
+ if (tableModel.getRowCount() == 0) {
+ deletePattern.setEnabled(false);
+ } else {
+ deletePattern.setEnabled(true);
+ }
+ }
}
Modified: jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1755946&r1=1755945&r2=1755946&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml [utf-8] (original)
+++ jmeter/trunk/xdocs/changes.xml [utf-8] Thu Aug 11 11:29:40 2016
@@ -107,6 +107,7 @@ Summary
<li><bug>59816</bug><pr>213</pr>Allow multiple selection and delete in HTTP Header Manager.
Based on a patch by Benoit Wiart (b.wiart at ubik-ingenierie.com)</li>
<li><bug>59967</bug>CSS/JQuery Extractor : Allow empty default value. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
+ <li><bug>59974</bug>Response Assertion : Add button "Add from clipboard". Contributed by Ubik Load Pack (support at ubikloadpack.com)</li>
</ul>
<h3>Functions</h3>