package kg.apc.jmeter.control; import kg.apc.jmeter.JMeterPluginsUtils; import org.apache.jmeter.config.Arguments; import org.apache.jmeter.config.gui.ArgumentsPanel; import org.apache.jmeter.control.gui.AbstractControllerGui; import org.apache.jmeter.testelement.TestElement; import org.apache.jmeter.testelement.property.JMeterProperty; import org.apache.jmeter.testelement.property.NullProperty; import org.apache.jmeter.util.JMeterUtils; import javax.swing.*; import java.awt.*; public class ParameterizedControllerGui extends AbstractControllerGui { public static final String WIKIPAGE = "ParameterizedController"; private ArgumentsPanel argsPanel; public ParameterizedControllerGui() { init(); } public TestElement createTestElement() { ParameterizedController tc = new ParameterizedController(); modifyTestElement(tc); tc.setComment(JMeterPluginsUtils.getWikiLinkText(WIKIPAGE)); return tc; } public void modifyTestElement(TestElement te) { super.configureTestElement(te); if (te instanceof ParameterizedController) { ParameterizedController controller = (ParameterizedController) te; controller.setUserDefinedVariables((Arguments) argsPanel.createTestElement()); } } public String getLabelResource() { return getClass().getName(); } @Override public String getStaticLabel() { return JMeterPluginsUtils.prefixLabel("Parameterized Controller"); } private void init() { setLayout(new BorderLayout()); setBorder(makeBorder()); add(JMeterPluginsUtils.addHelpLinkToPanel(makeTitlePanel(), WIKIPAGE), BorderLayout.NORTH); add(createVariablePanel(), BorderLayout.CENTER); } private JPanel createVariablePanel() { argsPanel = new ArgumentsPanel(JMeterUtils.getResString("user_defined_variables"), null, true, true); return argsPanel; } @Override public void clearGui() { super.clearGui(); argsPanel.clear(); } @Override public void configure(TestElement te) { super.configure(te); ParameterizedController controller = (ParameterizedController) te; final JMeterProperty udv = controller.getUserDefinedVariablesAsProperty(); if (udv != null && !(udv instanceof NullProperty)) { argsPanel.configure((Arguments) udv.getObjectValue()); } } }