You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@jakarta.apache.org by se...@apache.org on 2011/11/01 14:48:14 UTC

svn commit: r1195995 - in /jakarta/jmeter/trunk: src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java src/core/org/apache/jmeter/resources/messages.properties xdocs/changes.xml

Author: sebb
Date: Tue Nov  1 13:48:14 2011
New Revision: 1195995

URL: http://svn.apache.org/viewvc?rev=1195995&view=rev
Log:
Bug 52116 - Allow to add (paste) entries from the clipboard to an arguments list

Modified:
    jakarta/jmeter/trunk/src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java
    jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
    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=1195995&r1=1195994&r2=1195995&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 Tue Nov  1 13:48:14 2011
@@ -22,15 +22,24 @@ import java.awt.BorderLayout;
 import java.awt.Color;
 import java.awt.Component;
 import java.awt.FlowLayout;
+import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.UnsupportedFlavorException;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Iterator;
 
 import javax.swing.BorderFactory;
 import javax.swing.Box;
 import javax.swing.JButton;
 import javax.swing.JLabel;
+import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JTable;
 import javax.swing.ListSelectionModel;
@@ -67,6 +76,9 @@ public class ArgumentsPanel extends Abst
     /** A button for adding new arguments to the table. */
     private JButton add;
 
+    /** A button for adding new arguments to the table from the clipboard. */
+    private JButton addFromClipboard;
+
     /** A button for removing arguments from the table. */
     private JButton delete;
 
@@ -92,6 +104,9 @@ public class ArgumentsPanel extends Abst
     /** Command for adding a row to the table. */
     private static final String ADD = "add"; // $NON-NLS-1$
 
+    /** Command for adding rows from the clipboard */
+    private static final String ADD_FROM_CLIPBOARD = "addFromClipboard"; // $NON-NLS-1$
+
     /** Command for removing a row from the table. */
     private static final String DELETE = "delete"; // $NON-NLS-1$
 
@@ -309,6 +324,8 @@ public class ArgumentsPanel extends Abst
             deleteArgument();
         } else if (action.equals(ADD)) {
             addArgument();
+        } else if (action.equals(ADD_FROM_CLIPBOARD)) {
+            addFromClipboard();
         } else if (action.equals(UP)) {
             moveUp();
         } else if (action.equals(DOWN)) {
@@ -421,6 +438,54 @@ public class ArgumentsPanel extends Abst
     }
 
     /**
+     * Add values from the clipboard
+     */
+    protected void addFromClipboard() {
+        stopTableEditing();
+        int rowCount = table.getRowCount();
+        Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
+        Transferable trans = clipboard.getContents(null);
+        DataFlavor[] flavourList = trans.getTransferDataFlavors();
+        Collection<DataFlavor> flavours = new ArrayList<DataFlavor>(flavourList.length);
+        if (Collections.addAll(flavours, flavourList) && flavours.contains(DataFlavor.stringFlavor)) {
+            try {
+                String clipboardContent = (String) trans.getTransferData(DataFlavor.stringFlavor);
+                String[] clipboardLines = clipboardContent.split("\n");
+                for (String clipboardLine : clipboardLines) {
+                    String[] clipboardCols = clipboardLine.split("\t");
+                    if (clipboardCols.length > 0) {
+                        Argument argument = makeNewArgument();
+                        argument.setName(clipboardCols[0]);
+                        if (clipboardCols.length > 1) {
+                            argument.setValue(clipboardCols[1]);
+                            if (clipboardCols.length > 2) {
+                                argument.setDescription(clipboardCols[2]);
+                            }
+                        }
+                        tableModel.addRow(argument);
+                    }
+                }
+            } catch (IOException ioe) {
+                JOptionPane.showMessageDialog(this,
+                        "Could not add read arguments from clipboard:\n" + ioe.getLocalizedMessage(), "Error",
+                        JOptionPane.ERROR_MESSAGE);
+            } catch (UnsupportedFlavorException ufe) {
+                JOptionPane.showMessageDialog(this,
+                        "Could not add retrieve " + DataFlavor.stringFlavor.getHumanPresentableName()
+                                + " from clipboard" + ufe.getLocalizedMessage(), "Error", JOptionPane.ERROR_MESSAGE);
+            }
+            if (table.getRowCount() > rowCount) {
+                // Enable DELETE (which may already be enabled, but it won't hurt)
+                delete.setEnabled(true);
+
+                // Highlight (select) the appropriate rows.
+                int rowToSelect = tableModel.getRowCount() - 1;
+                table.setRowSelectionInterval(rowCount, rowToSelect);
+            }
+        }
+    }
+
+    /**
      * Create a new Argument object.
      *
      * @return a new Argument object
@@ -524,6 +589,10 @@ public class ArgumentsPanel extends Abst
         add.setActionCommand(ADD);
         add.setEnabled(true);
 
+        addFromClipboard = new JButton(JMeterUtils.getResString("add_from_clipboard")); // $NON-NLS-1$
+        addFromClipboard.setActionCommand(ADD_FROM_CLIPBOARD);
+        addFromClipboard.setEnabled(true);
+
         delete = new JButton(JMeterUtils.getResString("delete")); // $NON-NLS-1$
         delete.setActionCommand(DELETE);
 
@@ -542,8 +611,10 @@ public class ArgumentsPanel extends Abst
             buttonPanel.setBackground(this.background);
         }
         add.addActionListener(this);
+        addFromClipboard.addActionListener(this);
         delete.addActionListener(this);
         buttonPanel.add(add);
+        buttonPanel.add(addFromClipboard);
         buttonPanel.add(delete);
         if(enableUpDown) {
             up.addActionListener(this);

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=1195995&r1=1195994&r2=1195995&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 Tue Nov  1 13:48:14 2011
@@ -22,6 +22,7 @@
 
 about=About Apache JMeter
 add=Add
+add_from_clipboard=Add from Clipboard
 add_as_child=Add as Child
 add_parameter=Add Variable
 add_pattern=Add Pattern\:

Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=1195995&r1=1195994&r2=1195995&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Tue Nov  1 13:48:14 2011
@@ -200,6 +200,7 @@ these occurs, Sampler is marked as faile
 <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>
 <li>Bug 52099 - Allow to set the transaction isolation in the JDBC Connection Configuration</li>
+<li>Bug 52116 - Allow to add (paste) entries from the clipboard to an arguments list</li>
 </ul>
 
 <h2>Non-functional changes</h2>



---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@jakarta.apache.org
For additional commands, e-mail: notifications-help@jakarta.apache.org