ASF Bugzilla – Attachment 27883 Details for
Bug 52116
Allow to add (paste) entries from the clipboard to an arguments list
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Proposed enhancement as a patch to build Revision 1182604
Enh52116_AddingArgumentsFromClipboard.patch (text/plain), 6.73 KB, created by
Roman Bargezi
on 2011-11-01 13:01:01 UTC
(
hide
)
Description:
Proposed enhancement as a patch to build Revision 1182604
Filename:
MIME Type:
Creator:
Roman Bargezi
Created:
2011-11-01 13:01:01 UTC
Size:
6.73 KB
patch
obsolete
>Index: src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java >=================================================================== >--- src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java (revision 1195882) >+++ src/core/org/apache/jmeter/config/gui/ArgumentsPanel.java (working copy) >@@ -22,15 +22,24 @@ > 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; >@@ -43,7 +52,9 @@ > import org.apache.jmeter.testelement.property.PropertyIterator; > import org.apache.jmeter.util.JMeterUtils; > import org.apache.jorphan.gui.ObjectTableModel; >+import org.apache.jorphan.logging.LoggingManager; > import org.apache.jorphan.reflect.Functor; >+import org.apache.log.Logger; > > /** > * A GUI panel allowing the user to enter name-value argument pairs. These >@@ -55,6 +66,8 @@ > > private static final long serialVersionUID = 240L; > >+ private static final Logger log = LoggingManager.getLoggerForClass(); >+ > /** The title label for this component. */ > private JLabel tableLabel; > >@@ -67,6 +80,9 @@ > /** 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 +108,9 @@ > /** 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 +328,8 @@ > 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,8 +442,58 @@ > } > > /** >+ * 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); >+ log.warn("Failed to add arguments from clipboard.", ioe); >+ } catch (UnsupportedFlavorException ufe) { >+ JOptionPane.showMessageDialog(this, >+ "Could not add retrieve " + DataFlavor.stringFlavor.getHumanPresentableName() >+ + " from clipboard" + ufe.getLocalizedMessage(), "Error", JOptionPane.ERROR_MESSAGE); >+ log.warn("Failed to paste arguments from clipboard.", ufe); >+ } >+ 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 > */ > protected Argument makeNewArgument() { >@@ -524,6 +595,10 @@ > 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 +617,10 @@ > 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); >Index: src/core/org/apache/jmeter/resources/messages.properties >=================================================================== >--- src/core/org/apache/jmeter/resources/messages.properties (revision 1188913) >+++ src/core/org/apache/jmeter/resources/messages.properties (working copy) >@@ -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\:
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 52116
:
27880
| 27883