Author: pmouawad
Date: Thu Oct 27 17:41:04 2011
New Revision: 1189888

URL: http://svn.apache.org/viewvc?rev=1189888&view=rev
Log:
Bug 52085 - Allow multiple selection in arguments panel

Modified:
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java
    jakarta/jmeter/trunk/xdocs/changes.xml

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java?rev=1189888&r1=1189887&r2=1189888&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java 
(original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java 
Thu Oct 27 17:41:04 2011
@@ -334,10 +334,16 @@ public class ArgumentsPanel extends Abst
     private void moveDown() {
         cancelEditing();
 
-        int rowSelected = table.getSelectedRow();
-        if (rowSelected >=0 && rowSelected < table.getRowCount()-1) {
-            tableModel.moveRow(rowSelected, rowSelected+1, rowSelected+1);
-            table.setRowSelectionInterval(rowSelected+1, rowSelected+1);
+        int[] rowsSelected = table.getSelectedRows();
+        if (rowsSelected.length > 0 && rowsSelected[rowsSelected.length - 1] < 
table.getRowCount() - 1) {
+            table.clearSelection();
+            for (int i = rowsSelected.length - 1; i >= 0; i--) {
+                int rowSelected = rowsSelected[i];
+                tableModel.moveRow(rowSelected, rowSelected + 1, rowSelected + 
1);
+            }
+            for (int rowSelected : rowsSelected) {
+                table.addRowSelectionInterval(rowSelected + 1, rowSelected + 
1);
+            }
         }
     }
 
@@ -347,11 +353,16 @@ public class ArgumentsPanel extends Abst
     private void moveUp() {
         cancelEditing();
 
-        int rowSelected = table.getSelectedRow();
-        if (rowSelected > 0) {
-            tableModel.moveRow(rowSelected, rowSelected+1, rowSelected-1);
-            table.setRowSelectionInterval(rowSelected-1, rowSelected-1);
-        } 
+        int[] rowsSelected = table.getSelectedRows();
+        if (rowsSelected.length > 0 && rowsSelected[0] > 0) {
+            table.clearSelection();
+            for (int rowSelected : rowsSelected) {
+                tableModel.moveRow(rowSelected, rowSelected + 1, rowSelected - 
1);
+            }
+            for (int rowSelected : rowsSelected) {
+                table.addRowSelectionInterval(rowSelected - 1, rowSelected - 
1);
+            }
+        }
     }
 
     /**
@@ -360,32 +371,31 @@ public class ArgumentsPanel extends Abst
     protected void deleteArgument() {
         cancelEditing();
 
-        int rowSelected = table.getSelectedRow();
-        if (rowSelected >= 0) {
-            tableModel.removeRow(rowSelected);
-            tableModel.fireTableDataChanged();
+        int[] rowsSelected = table.getSelectedRows();
+        int anchorSelection = 
table.getSelectionModel().getAnchorSelectionIndex();
+        table.clearSelection();
+        if (rowsSelected.length > 0) {
+            for (int i = rowsSelected.length - 1; i >= 0; i--) {
+                tableModel.removeRow(rowsSelected[i]);
+            }
 
             // Disable DELETE if there are no rows in the table to delete.
             if (tableModel.getRowCount() == 0) {
                 delete.setEnabled(false);
             }
+            // Table still contains one or more rows, so highlight (select)
+            // the appropriate one.
+            else if (tableModel.getRowCount() > 0) {
+                if (anchorSelection >= tableModel.getRowCount()) {
+                    anchorSelection = tableModel.getRowCount() - 1;
+                }
+                table.setRowSelectionInterval(anchorSelection, 
anchorSelection);
+            }
             
             if(enableUpDown && tableModel.getRowCount()>1) {
                 up.setEnabled(true);
                 down.setEnabled(true);
             }
-
-            // Table still contains one or more rows, so highlight (select)
-            // the appropriate one.
-            else {
-                int rowToSelect = rowSelected;
-
-                if (rowSelected >= tableModel.getRowCount()) {
-                    rowToSelect = rowSelected - 1;
-                }
-
-                table.setRowSelectionInterval(rowToSelect, rowToSelect);
-            }
         }
     }
 
@@ -456,7 +466,7 @@ public class ArgumentsPanel extends Abst
                 new Functor("setName"), // $NON-NLS-1$
                 new Functor("setValue") }, // $NON-NLS-1$
                 new Class[] { String.class, String.class });
-       }
+    }
     }
 
     public static boolean testFunctors(){
@@ -483,7 +493,7 @@ public class ArgumentsPanel extends Abst
         initializeTableModel();
         table = new JTable(tableModel);
         table.getTableHeader().setDefaultRenderer(new 
HeaderAsPropertyRenderer());
-        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+        table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
         if (this.background != null) {
             table.setBackground(this.background);
         }

Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=1189888&r1=1189887&r2=1189888&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Thu Oct 27 17:41:04 2011
@@ -188,6 +188,7 @@ Mirror server now uses default port 8081
 <li>Bug 52052 - Using a delimiter to separate result-messages for JMS 
Subscriber</li>
 <li>Bug 52103 - Add automatic scrolling option to table visualizer</li>
 <li>Bug 52097 - Save As should point to same folder that was used to open a 
file if MRU list is used</li>
+<li>Bug 52085 - Allow multiple selection in arguments panel</li>
 </ul>
 
 <h2>Non-functional changes</h2>



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to