You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2020/03/28 23:13:13 UTC

[jmeter] branch master updated: Bug 64277 - ForEach Controller: Improve UX

This is an automated email from the ASF dual-hosted git repository.

pmouawad pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git


The following commit(s) were added to refs/heads/master by this push:
     new 4c1e1e6  Bug 64277 - ForEach Controller: Improve UX
4c1e1e6 is described below

commit 4c1e1e6c27f162913312129abfbb3e2a43281900
Author: pmouawad <p....@ubik-ingenierie.com>
AuthorDate: Sun Mar 29 00:12:55 2020 +0100

    Bug 64277 - ForEach Controller: Improve UX
---
 src/components/build.gradle.kts                    |  1 +
 .../jmeter/control/gui/ForeachControlPanel.java    | 46 +++++++---------------
 xdocs/changes.xml                                  |  1 +
 3 files changed, 17 insertions(+), 31 deletions(-)

diff --git a/src/components/build.gradle.kts b/src/components/build.gradle.kts
index f4a6377..be2ed36 100644
--- a/src/components/build.gradle.kts
+++ b/src/components/build.gradle.kts
@@ -61,6 +61,7 @@ dependencies {
     implementation("org.apache.commons:commons-text") {
         because("StringEscapeUtils")
     }
+    implementation("com.miglayout:miglayout-swing")
     // we use bcmail for compilation only, and bcmail is not shipped in the release
     compileOnly("org.bouncycastle:bcmail-jdk15on")
     compileOnly("org.bouncycastle:bcpkix-jdk15on")
diff --git a/src/components/src/main/java/org/apache/jmeter/control/gui/ForeachControlPanel.java b/src/components/src/main/java/org/apache/jmeter/control/gui/ForeachControlPanel.java
index 229d43b..ca0c4d6 100644
--- a/src/components/src/main/java/org/apache/jmeter/control/gui/ForeachControlPanel.java
+++ b/src/components/src/main/java/org/apache/jmeter/control/gui/ForeachControlPanel.java
@@ -19,17 +19,18 @@ package org.apache.jmeter.control.gui;
 
 import java.awt.BorderLayout;
 
+import javax.swing.BorderFactory;
 import javax.swing.JCheckBox;
-import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.JTextField;
 
 import org.apache.jmeter.control.ForeachController;
 import org.apache.jmeter.gui.TestElementMetadata;
-import org.apache.jmeter.gui.util.VerticalPanel;
 import org.apache.jmeter.testelement.TestElement;
 import org.apache.jmeter.util.JMeterUtils;
 
+import net.miginfocom.swing.MigLayout;
+
 /**
  * The user interface for a foreach controller which specifies that its
  * sub-components should be executed some number of times in a loop. This
@@ -190,53 +191,36 @@ public class ForeachControlPanel extends AbstractControllerGui {
      * @return a GUI panel containing the loop count components
      */
     private JPanel createLoopCountPanel() {
-        VerticalPanel loopPanel = new VerticalPanel();
-
-        // LOOP LABEL
-        JLabel inputValLabel = new JLabel(JMeterUtils.getResString("foreach_input")); // $NON-NLS-1$
-        JLabel startIndexLabel = new JLabel(JMeterUtils.getResString("foreach_start_index")); // $NON-NLS-1$
-        JLabel endIndexLabel = new JLabel(JMeterUtils.getResString("foreach_end_index")); // $NON-NLS-1$
-        JLabel returnValLabel = new JLabel(JMeterUtils.getResString("foreach_output")); // $NON-NLS-1$
+        JPanel loopPanel = new JPanel(new MigLayout("fillx, wrap 2", "[][fill,grow]"));
+        loopPanel.setBorder(BorderFactory.createEtchedBorder()); // $NON-NLS-1$
 
         // TEXT FIELD
-        JPanel inputValSubPanel = new JPanel(new BorderLayout(5, 0));
         inputVal = new JTextField("", 5); // $NON-NLS-1$
+        loopPanel.add(JMeterUtils.labelFor(inputVal, "foreach_input"));
         inputVal.setName(INPUT_VAL_NAME);
-        inputValLabel.setLabelFor(inputVal);
-        inputValSubPanel.add(inputValLabel, BorderLayout.WEST);
-        inputValSubPanel.add(inputVal, BorderLayout.CENTER);
+        loopPanel.add(inputVal);
 
         // TEXT FIELD
-        JPanel startIndexSubPanel = new JPanel(new BorderLayout(5, 0));
         startIndex = new JTextField("", 5); // $NON-NLS-1$
+        loopPanel.add(JMeterUtils.labelFor(startIndex, "foreach_start_index"));
         startIndex.setName(START_INDEX_NAME);
-        startIndexLabel.setLabelFor(startIndex);
-        startIndexSubPanel.add(startIndexLabel, BorderLayout.WEST);
-        startIndexSubPanel.add(startIndex, BorderLayout.CENTER);
+        loopPanel.add(startIndex);
 
         // TEXT FIELD
-        JPanel endIndexSubPanel = new JPanel(new BorderLayout(5, 0));
         endIndex = new JTextField("", 5); // $NON-NLS-1$
+        loopPanel.add(JMeterUtils.labelFor(endIndex, "foreach_end_index"));
         endIndex.setName(END_INDEX_NAME);
-        endIndexLabel.setLabelFor(endIndex);
-        endIndexSubPanel.add(endIndexLabel, BorderLayout.WEST);
-        endIndexSubPanel.add(endIndex, BorderLayout.CENTER);
-
+        loopPanel.add(endIndex);
+        
         // TEXT FIELD
-        JPanel returnValSubPanel = new JPanel(new BorderLayout(5, 0));
         returnVal = new JTextField("", 5); // $NON-NLS-1$
+        loopPanel.add(JMeterUtils.labelFor(returnVal, "foreach_output"));
         returnVal.setName(RETURN_VAL_NAME);
-        returnValLabel.setLabelFor(returnVal);
-        returnValSubPanel.add(returnValLabel, BorderLayout.WEST);
-        returnValSubPanel.add(returnVal, BorderLayout.CENTER);
+        loopPanel.add(returnVal);
 
         // Checkbox
         useSeparator = new JCheckBox(JMeterUtils.getResString("foreach_use_separator"), true); // $NON-NLS-1$
-        loopPanel.add(inputValSubPanel);
-        loopPanel.add(startIndexSubPanel);
-        loopPanel.add(endIndexSubPanel);
-        loopPanel.add(returnValSubPanel);
-        loopPanel.add(useSeparator);
+        loopPanel.add(useSeparator, "span 2");
 
         return loopPanel;
     }
diff --git a/xdocs/changes.xml b/xdocs/changes.xml
index 3794ab2..f652130 100644
--- a/xdocs/changes.xml
+++ b/xdocs/changes.xml
@@ -152,6 +152,7 @@ For instance: log viewer, JSR223 code editor were not previously scaled with zoo
   <li><bug>64148</bug>Use gray icons for disabled elements in the tree, display subtree as gray</li>
   <li><bug>64198</bug>Allow spaces in <code>${...}</code> expressions around functions.</li>
   <li><bug>64276</bug>Search popup: Improve UX</li>
+  <li><bug>64277</bug>ForEach Controller: Improve UX</li>
 </ul>
 
 <ch_section>Non-functional changes</ch_section>