Author: pmouawad Date: Thu Jul 5 20:34:29 2018 New Revision: 1835187 URL: http://svn.apache.org/viewvc?rev=1835187&view=rev Log: Bug 62212 : Recorder : Improve UX by providing a popup above all windows to be able to change Transaction names and pauses while using Browser
Add a stop button to popup Make dialog automatically disappear after 7 seconds Bugzilla Id: 62212 Modified: jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/RecorderDialog.java Modified: jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java?rev=1835187&r1=1835186&r2=1835187&view=diff ============================================================================== --- jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java (original) +++ jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/ProxyControlGui.java Thu Jul 5 20:34:29 2018 @@ -58,6 +58,8 @@ import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import javax.swing.JTable; import javax.swing.JTextField; +import javax.swing.SwingUtilities; +import javax.swing.Timer; import org.apache.jmeter.control.Controller; import org.apache.jmeter.control.gui.LogicControllerGui; @@ -424,11 +426,7 @@ public class ProxyControlGui extends Log } if (command.equals(ACTION_STOP)) { - model.stopProxy(); - stop.setEnabled(false); - start.setEnabled(true); - restart.setEnabled(false); - recorderDialog.setVisible(false); + stopRecorder(); } else if (command.equals(ACTION_START)) { if(startProxy()) { recorderDialog.setVisible(true); @@ -473,6 +471,17 @@ public class ProxyControlGui extends Log } /** + * + */ + void stopRecorder() { + model.stopProxy(); + stop.setEnabled(false); + start.setEnabled(true); + restart.setEnabled(false); + recorderDialog.setVisible(false); + } + + /** * Delete row from table, select one if possible and enable restart button * @param tableModel {@link PowerTableModel} * @param table {@link JTable} @@ -601,9 +610,14 @@ public class ProxyControlGui extends Log sb.append("<li>").append(detail).append("</li>"); } sb.append("</ul>").append("</html>"); - + + // Make dialog disappear after 7 seconds + JLabel messageLabel = new JLabel(sb.toString()); + Timer timer = new Timer(7000, evt -> SwingUtilities.getWindowAncestor(messageLabel).dispose()); + timer.setRepeats(false); + timer.start(); JOptionPane.showMessageDialog(this, - sb.toString(), + messageLabel, JMeterUtils.getResString("proxy_daemon_msg_rootca_cert") + SPACE // $NON-NLS-1$ + KeyToolUtils.ROOT_CACERT_CRT_PFX + SPACE + JMeterUtils.getResString("proxy_daemon_msg_created_in_bin"), // $NON-NLS-1$ @@ -741,12 +755,8 @@ public class ProxyControlGui extends Log start.setActionCommand(ACTION_START); start.setEnabled(true); - stop = new JButton(JMeterUtils.getResString("stop")); // $NON-NLS-1$ - ImageIcon stopImage = JMeterUtils.getImage("toolbar/" + iconSize + "/process-stop-4.png"); - stop.setIcon(stopImage); + stop = createStopButton(iconSize); stop.addActionListener(this); - stop.setActionCommand(ACTION_STOP); - stop.setEnabled(false); ImageIcon restartImage = JMeterUtils.getImage("toolbar/" + iconSize + "/edit-redo-7.png"); restart = new JButton(JMeterUtils.getResString("restart")); // $NON-NLS-1$ @@ -766,6 +776,18 @@ public class ProxyControlGui extends Log return panel; } + /** + * @param iconSize + */ + JButton createStopButton(String iconSize) { + JButton stop = new JButton(JMeterUtils.getResString("stop")); // $NON-NLS-1$ + ImageIcon stopImage = JMeterUtils.getImage("toolbar/" + iconSize + "/process-stop-4.png"); + stop.setIcon(stopImage); + stop.setActionCommand(ACTION_STOP); + stop.setEnabled(false); + return stop; + } + private JPanel createPortPanel() { portField = new JTextField(ProxyControl.DEFAULT_PORT_S, 20); portField.setName(PORT_FIELD_NAME); Modified: jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/RecorderDialog.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/RecorderDialog.java?rev=1835187&r1=1835186&r2=1835187&view=diff ============================================================================== --- jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/RecorderDialog.java (original) +++ jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/gui/RecorderDialog.java Thu Jul 5 20:34:29 2018 @@ -21,7 +21,9 @@ package org.apache.jmeter.protocol.http. import java.awt.BorderLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; +import java.awt.GridLayout; import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.awt.event.KeyEvent; @@ -33,6 +35,7 @@ import javax.swing.ActionMap; import javax.swing.BorderFactory; import javax.swing.DefaultComboBoxModel; import javax.swing.InputMap; +import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JDialog; @@ -44,13 +47,14 @@ import javax.swing.JRootPane; import javax.swing.JTextField; import org.apache.jmeter.gui.action.KeyStrokes; +import org.apache.jmeter.gui.util.JMeterToolBar; import org.apache.jmeter.util.JMeterUtils; /** * Dialog for Recorder * @since 4.1 */ -public class RecorderDialog extends JDialog implements ItemListener, KeyListener { // NOSONAR +public class RecorderDialog extends JDialog implements ItemListener, KeyListener, ActionListener { // NOSONAR /** @@ -72,6 +76,8 @@ public class RecorderDialog extends JDia private ProxyControlGui recorderGui; + private JButton stop; + /** * For tests Only */ @@ -157,7 +163,16 @@ public class RecorderDialog extends JDia gbc.fill = GridBagConstraints.HORIZONTAL; panel.add(proxyPauseHTTPSample, gbc.clone()); - this.getContentPane().add(panel, BorderLayout.NORTH); + this.getContentPane().add(panel, BorderLayout.CENTER); + + String iconSize = JMeterUtils.getPropDefault(JMeterToolBar.TOOLBAR_ICON_SIZE, JMeterToolBar.DEFAULT_TOOLBAR_ICON_SIZE); + stop = recorderGui.createStopButton(iconSize); + stop.addActionListener(this); + + GridLayout gridLayout = new GridLayout(1, 1); + JPanel panelStop = new JPanel(gridLayout); + panelStop.add(stop); + this.getContentPane().add(panelStop, BorderLayout.WEST); this.pack(); this.setLocation(5, 10); prefixHTTPSampleName.requestFocusInWindow(); @@ -169,6 +184,7 @@ public class RecorderDialog extends JDia @Override public void setVisible(boolean b) { super.setVisible(b); + stop.setEnabled(true); prefixHTTPSampleName.requestFocusInWindow(); prefixHTTPSampleName.setText(recorderGui.getPrefixHTTPSampleName()); httpSampleNamingMode.setSelectedIndex(recorderGui.getHTTPSampleNamingMode()); @@ -224,4 +240,8 @@ public class RecorderDialog extends JDia recorderGui.enableRestart(); } } + @Override + public void actionPerformed(ActionEvent event) { + recorderGui.stopRecorder(); + } }