On Sun, 29 Mar 2020 at 12:20, <[email protected]> wrote:
>
> 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 f8c73d5  Bug 64280 IfController: Improve UX
> f8c73d5 is described below
>
> commit f8c73d5c64b6a8ac162749e97fb3f43ee8a07314
> Author: pmouawad <[email protected]>
> AuthorDate: Sun Mar 29 13:20:12 2020 +0200
>
>     Bug 64280 IfController: Improve UX
> ---
>  .../jmeter/control/gui/IfControllerPanel.java      | 63 
> +++++++++++++++-------
>  .../apache/jmeter/resources/messages.properties    |  4 +-
>  .../apache/jmeter/resources/messages_fr.properties |  4 +-
>  xdocs/changes.xml                                  |  3 +-
>  4 files changed, 52 insertions(+), 22 deletions(-)
>
> diff --git 
> a/src/core/src/main/java/org/apache/jmeter/control/gui/IfControllerPanel.java 
> b/src/core/src/main/java/org/apache/jmeter/control/gui/IfControllerPanel.java
> index c2a2f91..f064887 100644
> --- 
> a/src/core/src/main/java/org/apache/jmeter/control/gui/IfControllerPanel.java
> +++ 
> b/src/core/src/main/java/org/apache/jmeter/control/gui/IfControllerPanel.java
> @@ -18,8 +18,12 @@
>  package org.apache.jmeter.control.gui;
>
>  import java.awt.BorderLayout;
> +import java.awt.event.ActionEvent;
> +import java.awt.event.ActionListener;
>
> +import javax.swing.BorderFactory;
>  import javax.swing.ImageIcon;
> +import javax.swing.JButton;
>  import javax.swing.JCheckBox;
>  import javax.swing.JLabel;
>  import javax.swing.JPanel;
> @@ -38,6 +42,8 @@ import org.apache.jmeter.util.JMeterUtils;
>  import org.apache.jorphan.gui.JFactory;
>  import org.apache.jorphan.gui.JMeterUIDefaults;
>
> +import net.miginfocom.swing.MigLayout;
> +
>  /**
>   * The user interface for a controller which specifies that its subcomponents
>   * should be executed while a condition holds. This component can be used
> @@ -46,10 +52,12 @@ import org.apache.jorphan.gui.JMeterUIDefaults;
>   */
>  @GUIMenuSortOrder(1)
>  @TestElementMetadata(labelResource = "if_controller_title")
> -public class IfControllerPanel extends AbstractControllerGui implements 
> ChangeListener {
> +public class IfControllerPanel extends AbstractControllerGui implements 
> ChangeListener, ActionListener {
>
>      private static final long serialVersionUID = 240L;
>
> +    private static final String USE_LAST_SAMPLE_OK = "use_last_sample_ok";
> +
>      /**
>       * Used to warn about performance penalty
>       */
> @@ -73,6 +81,8 @@ public class IfControllerPanel extends 
> AbstractControllerGui implements ChangeLi
>       */
>      private boolean displayName = true;
>
> +    private JButton useLastSampleStatusButton;
> +
>      /**
>       * Create a new LoopControlPanel as a standalone component.
>       */
> @@ -165,11 +175,7 @@ public class IfControllerPanel extends 
> AbstractControllerGui implements ChangeLi
>              setLayout(new BorderLayout(0, 5));
>              setBorder(makeBorder());
>              add(makeTitlePanel(), BorderLayout.NORTH);
> -
> -            JPanel mainPanel = new JPanel(new BorderLayout());
> -            mainPanel.add(createConditionPanel(), BorderLayout.NORTH);
> -            add(mainPanel, BorderLayout.CENTER);
> -
> +            add(createConditionPanel(), BorderLayout.CENTER);
>          } else {
>              // Embedded
>              setLayout(new BorderLayout());
> @@ -183,35 +189,40 @@ public class IfControllerPanel extends 
> AbstractControllerGui implements ChangeLi
>       * @return a GUI panel containing the condition components
>       */
>      private JPanel createConditionPanel() {
> -        JPanel conditionPanel = new JPanel(new BorderLayout(5, 0));
> +        JPanel conditionPanel = new JPanel(new MigLayout("fillx, wrap 2", 
> "[][fill,grow]"));

This statement should have the comment: // $NON-NLS-1$ $NON-NLS-2$
because there are two strings which don't need translation.

> +        conditionPanel.setBorder(BorderFactory.createEtchedBorder()); // 
> $NON-NLS-1$

The comment "$NON-NLS-1$" does not make sense for this statement.
The comment is intended to document strings that are language
independent, i.e. which don't need translation.
There are no strings here.

> -        // Condition LABEL
> -        conditionLabel = new 
> JLabel(JMeterUtils.getResString("if_controller_label")); // $NON-NLS-1$
> -        conditionPanel.add(conditionLabel, BorderLayout.WEST);
>          ImageIcon image = JMeterUtils.getImage("warning.png");

needs // $NON-NLS-1$

> -        warningLabel = new 
> JLabel(JMeterUtils.getResString("if_controller_warning"), image, 
> SwingConstants.CENTER); // $NON-NLS-1$
> +        warningLabel = new 
> JLabel(JMeterUtils.getResString("if_controller_warning"), image, 
> SwingConstants.LEFT); // $NON-NLS-1$
>          JFactory.warning(warningLabel);
> +        conditionPanel.add(warningLabel, "span 2");

needs // $NON-NLS-1$

> +
> +        // Condition LABEL
> +        conditionLabel = new 
> JLabel(JMeterUtils.getResString("if_controller_label")); // $NON-NLS-1$
> +        conditionPanel.add(conditionLabel);
> +        conditionLabel.setName("if_controller_label");

needs // $NON-NLS-1$

>
>          // Condition
>          theCondition = JSyntaxTextArea.getInstance(5, 50); // $NON-NLS-1$

comment does not make sense here

>          conditionLabel.setLabelFor(theCondition);
> -        conditionPanel.add(JTextScrollPane.getInstance(theCondition), 
> BorderLayout.CENTER);
> -
> -        conditionPanel.add(warningLabel, BorderLayout.NORTH);
> -
> +        conditionPanel.add(JTextScrollPane.getInstance(theCondition));
>
> -        JPanel optionPanel = new JPanel();
> +        JLabel ifControllerTipLabel = new 
> JLabel(JMeterUtils.getResString("if_controller_tip"));

needs // $NON-NLS-1$

> +        useLastSampleStatusButton = new 
> JButton(JMeterUtils.getResString("if_controller_use_last_sample_ok"));

needs // $NON-NLS-1$

> +        useLastSampleStatusButton.setActionCommand(USE_LAST_SAMPLE_OK);
> +        useLastSampleStatusButton.addActionListener(this);
> +        conditionPanel.add(useLastSampleStatusButton);
> +        conditionPanel.add(ifControllerTipLabel);
>
>          // Use expression instead of Javascript
>          useExpression = new 
> JCheckBox(JMeterUtils.getResString("if_controller_expression")); // 
> $NON-NLS-1$
>          useExpression.addChangeListener(this);
> -        optionPanel.add(useExpression);
> +        conditionPanel.add(useExpression, "span 2");

needs // $NON-NLS-1$

>
>          // Evaluate All checkbox
>          evaluateAll = new 
> JCheckBox(JMeterUtils.getResString("if_controller_evaluate_all")); // 
> $NON-NLS-1$
> -        optionPanel.add(evaluateAll);
> +        conditionPanel.add(evaluateAll, "span 2");

needs // $NON-NLS-1$

>
> -        conditionPanel.add(optionPanel,BorderLayout.SOUTH);
>          return conditionPanel;
>      }
>
> @@ -222,11 +233,25 @@ public class IfControllerPanel extends 
> AbstractControllerGui implements ChangeLi
>              if(useExpression.isSelected()) {
>                  colorId = JMeterUIDefaults.LABEL_WARNING_FOREGROUND;
>                  
> conditionLabel.setText(JMeterUtils.getResString("if_controller_expression_label"));
> +                useLastSampleStatusButton.setEnabled(true);
>              } else {
>                  colorId = JMeterUIDefaults.LABEL_ERROR_FOREGROUND;
>                  
> conditionLabel.setText(JMeterUtils.getResString("if_controller_label"));

needs // $NON-NLS-1$

> +                useLastSampleStatusButton.setEnabled(false);
>              }
>              warningLabel.setForeground(UIManager.getColor(colorId));
>          }
>      }
> +
> +    /**
> +     * Fill theCondition
> +     * @param e {@link ActionEvent}
> +     */
> +    @Override
> +    public void actionPerformed(ActionEvent e) {
> +        String action = e.getActionCommand();
> +        if (action.equals(USE_LAST_SAMPLE_OK)) {
> +            
> theCondition.setText(theCondition.getText()+"${JMeterThread.last_sample_ok}");

needs // $NON-NLS-1$

> +        }
> +    }
>  }
> diff --git 
> a/src/core/src/main/resources/org/apache/jmeter/resources/messages.properties 
> b/src/core/src/main/resources/org/apache/jmeter/resources/messages.properties
> index 4e997ea..847188e 100644
> --- 
> a/src/core/src/main/resources/org/apache/jmeter/resources/messages.properties
> +++ 
> b/src/core/src/main/resources/org/apache/jmeter/resources/messages.properties
> @@ -479,8 +479,10 @@ if_controller_evaluate_all=Evaluate for all children?
>  if_controller_expression=Interpret Condition as Variable Expression?
>  if_controller_expression_label=Expression (must evaluate to true or false)
>  if_controller_label=Condition (evaluated with javascript)
> +if_controller_use_last_sample_ok=Use status of last sample
> +if_controller_tip=${JMeterThread.last_sample_ok} can be used to test if last 
> sampler was successful
>  if_controller_title=If Controller
> -if_controller_warning=<html>For performance it is advised to check 
> "Interpret Condition as Variable Expression"<br> and use __jexl3 or __groovy 
> evaluating to true or false or a variable that contains true or false.<br> 
> ${JMeterThread.last_sample_ok} can be used to test if last sampler was 
> successful<br></html>
> +if_controller_warning=<html>For performance it is advised to check 
> "Interpret Condition as Variable Expression"<br> and use __jexl3 or __groovy 
> evaluating to true or false or a variable that contains true or false.</html>
>  ignore_subcontrollers=Ignore sub-controller blocks
>  include_controller=Include Controller
>  include_equals=Include Equals?
> diff --git 
> a/src/core/src/main/resources/org/apache/jmeter/resources/messages_fr.properties
>  
> b/src/core/src/main/resources/org/apache/jmeter/resources/messages_fr.properties
> index 35ccb5f..5bf1b41 100644
> --- 
> a/src/core/src/main/resources/org/apache/jmeter/resources/messages_fr.properties
> +++ 
> b/src/core/src/main/resources/org/apache/jmeter/resources/messages_fr.properties
> @@ -473,8 +473,10 @@ if_controller_evaluate_all=Evaluer pour tous les fils ?
>  if_controller_expression=Interpréter la condition comme une expression
>  if_controller_expression_label=Expression (doit contenir true ou false)
>  if_controller_label=Condition (évalué en Javascript) \:
> +if_controller_tip=${JMeterThread.last_sample_ok} permet de tester si le 
> dernier  échantillon a réussi
>  if_controller_title=Contrôleur Si (If)
> -if_controller_warning=<html>Pour les performances il est conseillé de cocher 
>  "Interpréter la condition comme une expression"<br> et d'' utiliser __jexl3 
> ou __groovy ou une variable contenant true ou false.<br> 
> ${JMeterThread.last_sample_ok} peut être utilisé pour tester si le dernier 
> sampler a réussi<br></html>
> +if_controller_use_last_sample_ok=Utiliser statut du dernier échantillon
> +if_controller_warning=<html>Pour les performances il est conseillé de cocher 
>  "Interpréter la condition comme une expression"<br> et d'' utiliser __jexl3 
> ou __groovy ou une variable contenant true ou false.</html>
>  ignore_subcontrollers=Ignorer les sous-blocs de contrôleurs
>  include_controller=Contrôleur Inclusion
>  include_equals=Inclure égal ?
> diff --git a/xdocs/changes.xml b/xdocs/changes.xml
> index f652130..b42b7d2 100644
> --- a/xdocs/changes.xml
> +++ b/xdocs/changes.xml
> @@ -117,6 +117,8 @@ For instance: log viewer, JSR223 code editor were not 
> previously scaled with zoo
>
>  <h3>Controllers</h3>
>  <ul>
> +    <li><bug>64277</bug>ForEach Controller: Improve UX</li>
> +    <li><bug>64280</bug>If Controller: Improve UX</li>
>  </ul>
>
>  <h3>Listeners</h3>
> @@ -152,7 +154,6 @@ 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>
>

Reply via email to