Author: pmouawad
Date: Wed Dec 28 17:12:21 2016
New Revision: 1776305
URL: http://svn.apache.org/viewvc?rev=1776305&view=rev
Log:
Bug 60154 - User Parameters GUI: allow rows to be moved up & down in the list
This closes #242 on github
Contributed by https://github.com/Murdecai777
Also correct wrong comment on lock instance
Bugzilla Id: 60154
Modified:
jmeter/trunk/src/components/org/apache/jmeter/modifiers/UserParameters.java
jmeter/trunk/src/components/org/apache/jmeter/modifiers/gui/UserParametersGui.java
jmeter/trunk/xdocs/changes.xml
Modified:
jmeter/trunk/src/components/org/apache/jmeter/modifiers/UserParameters.java
URL:
http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/modifiers/UserParameters.java?rev=1776305&r1=1776304&r2=1776305&view=diff
==============================================================================
--- jmeter/trunk/src/components/org/apache/jmeter/modifiers/UserParameters.java
(original)
+++ jmeter/trunk/src/components/org/apache/jmeter/modifiers/UserParameters.java
Wed Dec 28 17:12:21 2016
@@ -176,12 +176,10 @@ public class UserParameters extends Abst
}
}
- /*
- * (non-Javadoc) A new instance is created for each thread group, and the
+ /**
+ * A new instance is created for each thread group, and the
* clone() method is then called to create copies for each thread in a
- * thread group. This means that the lock object is common to a thread
- * group; separate thread groups have separate locks. If this is not
- * intended, the lock object could be made static.
+ * thread group. This means that the lock object is common to all instances
*
* @see java.lang.Object#clone()
*/
Modified:
jmeter/trunk/src/components/org/apache/jmeter/modifiers/gui/UserParametersGui.java
URL:
http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/modifiers/gui/UserParametersGui.java?rev=1776305&r1=1776304&r2=1776305&view=diff
==============================================================================
---
jmeter/trunk/src/components/org/apache/jmeter/modifiers/gui/UserParametersGui.java
(original)
+++
jmeter/trunk/src/components/org/apache/jmeter/modifiers/gui/UserParametersGui.java
Wed Dec 28 17:12:21 2016
@@ -74,6 +74,8 @@ public class UserParametersGui extends A
private JButton addUserButton;
private JButton deleteRowButton;
private JButton deleteColumnButton;
+ private JButton moveRowUpButton;
+ private JButton moveRowDownButton;
private JCheckBox perIterationCheck;
@@ -201,7 +203,7 @@ public class UserParametersGui extends A
JLabel tableLabel = new
JLabel(JMeterUtils.getResString("user_parameters_table")); // $NON-NLS-1$
initTableModel();
paramTable = new JTable(tableModel);
- paramTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+
paramTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
paramTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
JMeterUtils.applyHiDPI(paramTable);
@@ -226,14 +228,20 @@ public class UserParametersGui extends A
addUserButton = new JButton(JMeterUtils.getResString("add_user")); //
$NON-NLS-1$
deleteRowButton = new
JButton(JMeterUtils.getResString("delete_parameter")); // $NON-NLS-1$
deleteColumnButton = new
JButton(JMeterUtils.getResString("delete_user")); // $NON-NLS-1$
+ moveRowUpButton = new JButton(JMeterUtils.getResString("up")); //
$NON-NLS-1$
+ moveRowDownButton = new JButton(JMeterUtils.getResString("down")); //
$NON-NLS-1$
buttonPanel.add(addParameterButton);
buttonPanel.add(deleteRowButton);
+ buttonPanel.add(moveRowUpButton);
buttonPanel.add(addUserButton);
buttonPanel.add(deleteColumnButton);
+ buttonPanel.add(moveRowDownButton);
addParameterButton.addActionListener(new AddParamAction());
addUserButton.addActionListener(new AddUserAction());
deleteRowButton.addActionListener(new DeleteRowAction());
deleteColumnButton.addActionListener(new DeleteColumnAction());
+ moveRowUpButton.addActionListener(new MoveRowUpAction());
+ moveRowDownButton.addActionListener(new MoveRowDownAction());
return buttonPanel;
}
@@ -328,27 +336,17 @@ public class UserParametersGui extends A
public void actionPerformed(ActionEvent e) {
GuiUtils.cancelEditing(paramTable);
- int rowSelected = paramTable.getSelectedRow();
- if (rowSelected >= 0) {
- tableModel.removeRow(rowSelected);
+ int[] rowsSelected = paramTable.getSelectedRows();
+ if (rowsSelected.length > 0) {
+ for (int i = rowsSelected.length - 1; i >= 0; i--) {
+ tableModel.removeRow(rowsSelected[i]);
+ }
tableModel.fireTableDataChanged();
// Disable DELETE if there are no rows in the table to delete.
if (tableModel.getRowCount() == 0) {
deleteRowButton.setEnabled(false);
}
-
- // Table still contains one or more rows, so highlight (select)
- // the appropriate one.
- else {
- int rowToSelect = rowSelected;
-
- if (rowSelected >= tableModel.getRowCount()) {
- rowToSelect = rowSelected - 1;
- }
-
- paramTable.setRowSelectionInterval(rowToSelect,
rowToSelect);
- }
}
}
}
@@ -389,4 +387,40 @@ public class UserParametersGui extends A
}
}
}
+
+ private class MoveRowUpAction implements ActionListener {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ int[] rowsSelected = paramTable.getSelectedRows();
+ GuiUtils.stopTableEditing(paramTable);
+
+ if (rowsSelected.length > 0 && rowsSelected[0] > 0) {
+ for (int rowSelected : rowsSelected) {
+ tableModel.moveRow(rowSelected, rowSelected + 1,
rowSelected - 1);
+ }
+
+ for (int rowSelected : rowsSelected) {
+ paramTable.addRowSelectionInterval(rowSelected - 1,
rowSelected - 1);
+ }
+ }
+ }
+ }
+
+ private class MoveRowDownAction implements ActionListener {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ int[] rowsSelected = paramTable.getSelectedRows();
+ GuiUtils.stopTableEditing(paramTable);
+
+ if (rowsSelected.length > 0 && rowsSelected[rowsSelected.length -
1] < paramTable.getRowCount() - 1) {
+ for (int i = rowsSelected.length - 1; i >= 0; i--) {
+ int rowSelected = rowsSelected[i];
+ tableModel.moveRow(rowSelected, rowSelected + 1,
rowSelected + 1);
+ }
+ for (int rowSelected : rowsSelected) {
+ paramTable.addRowSelectionInterval(rowSelected + 1,
rowSelected + 1);
+ }
+ }
+ }
+ }
}
Modified: jmeter/trunk/xdocs/changes.xml
URL:
http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1776305&r1=1776304&r2=1776305&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml [utf-8] (original)
+++ jmeter/trunk/xdocs/changes.xml [utf-8] Wed Dec 28 17:12:21 2016
@@ -121,6 +121,7 @@ Fill in some detail.
<h3>Timers, Assertions, Config, Pre- & Post-Processors</h3>
<ul>
+ <li><bug>60154</bug>User Parameters GUI: allow rows to be moved up &
down in the list. Contributed by Murdecai777
(https://github.com/Murdecai777).</li>
</ul>
<h3>Functions</h3>
@@ -204,6 +205,7 @@ Fill in some detail.
<li>Qi Chen (qi.chensh at ele.me)</li>
<li>(gavin at 16degrees.com.au)</li>
<li>Thomas Schapitz (ts-nospam12 at online.de)</li>
+<li>Murdecai777 (https://github.com/Murdecai777)</li>
</ul>
<p>We also thank bug reporters who helped us improve JMeter. <br/>
For this release we want to give special thanks to the following reporters for
the clear reports and tests made after our fixes:</p>