Package org.apache.jmeter.sampler.gui

Source Code of org.apache.jmeter.sampler.gui.TestActionGui

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/

package org.apache.jmeter.sampler.gui;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

import javax.swing.ButtonGroup;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import org.apache.jmeter.gui.util.HorizontalPanel;
import org.apache.jmeter.sampler.TestAction;
import org.apache.jmeter.samplers.gui.AbstractSamplerGui;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.gui.layout.VerticalLayout;

public class TestActionGui extends AbstractSamplerGui {
  // Gui components
  private JComboBox targetBox;

  // private ButtonGroup actionButtons;
  private JRadioButton pauseButton;

  private JRadioButton stopButton;

  private JTextField durationField;

  // State variables
  private int target;

  private int action;

  private String durationString;

  // String in the panel
  private static final String targetLabel = JMeterUtils.getResString("test_action_target"); // $NON-NLS-1$

  private static final String threadTarget = JMeterUtils.getResString("test_action_target_thread"); // $NON-NLS-1$

  private static final String testTarget = JMeterUtils.getResString("test_action_target_test"); // $NON-NLS-1$

  private static final String actionLabel = JMeterUtils.getResString("test_action_action"); // $NON-NLS-1$

  private static final String pauseAction = JMeterUtils.getResString("test_action_pause"); // $NON-NLS-1$

  private static final String stopAction = JMeterUtils.getResString("test_action_stop"); // $NON-NLS-1$

  private static final String durationLabel = JMeterUtils.getResString("test_action_duration"); // $NON-NLS-1$

  public TestActionGui() {
    super();
    target = TestAction.THREAD;
    action = TestAction.PAUSE;
    durationString = ""; // $NON-NLS-1$
    init();
  }

  public String getLabelResource() {
    return "test_action_title"; // $NON-NLS-1$
  }

  public void configure(TestElement element) {
    super.configure(element);
    TestAction ta = (TestAction) element;

    target = ta.getTarget();
    if (target == TestAction.THREAD) {
      targetBox.setSelectedItem(threadTarget);
    } else {
      targetBox.setSelectedItem(testTarget);
    }
    action = ta.getAction();
    if (action == TestAction.PAUSE) {
      pauseButton.setSelected(true);
    } else {
      stopButton.setSelected(true);
    }

    durationString = ta.getDurationAsString();
    durationField.setText(durationString);
  }

  /**
   * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement()
   */
  public TestElement createTestElement() {
    TestAction ta = new TestAction();
    modifyTestElement(ta);
    return ta;
  }

  /**
   * Modifies a given TestElement to mirror the data in the gui components.
   *
   * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement)
   */
  public void modifyTestElement(TestElement element) {
    super.configureTestElement(element);
    TestAction ta = (TestAction) element;
    ta.setAction(action);
    ta.setTarget(target);
    ta.setDuration(durationString);
  }

    /**
     * Implements JMeterGUIComponent.clearGui
     */
    public void clearGui() {
        super.clearGui();
       
        targetBox.setSelectedIndex(0);
        durationString = ""; //$NON-NLS-1$
        durationField.setText(""); //$NON-NLS-1$
        pauseButton.setSelected(true);
        stopButton.setSelected(false);
        action = TestAction.PAUSE;
        target = TestAction.THREAD;
       
    }   

  private void init() {
    setLayout(new VerticalLayout(5, VerticalLayout.BOTH, VerticalLayout.TOP));
    setBorder(makeBorder());
    add(makeTitlePanel());

    // Target
    HorizontalPanel targetPanel = new HorizontalPanel();
    targetPanel.add(new JLabel(targetLabel));
    DefaultComboBoxModel targetModel = new DefaultComboBoxModel();
    targetModel.addElement(threadTarget);
    targetModel.addElement(testTarget);
    targetBox = new JComboBox(targetModel);
    targetBox.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        if (((String) targetBox.getSelectedItem()).equals(threadTarget)) {
          target = TestAction.THREAD;
        } else {
          target = TestAction.TEST;
        }
      }
    });
    targetPanel.add(targetBox);
    add(targetPanel);

    // Action
    HorizontalPanel actionPanel = new HorizontalPanel();
    ButtonGroup actionButtons = new ButtonGroup();
    pauseButton = new JRadioButton(pauseAction, true);
    pauseButton.addChangeListener(new ChangeListener() {
      public void stateChanged(ChangeEvent e) {
        if (pauseButton.isSelected()) {
          action = TestAction.PAUSE;
          durationField.setEnabled(true);
        }

      }
    });
    stopButton = new JRadioButton(stopAction, false);
    stopButton.addChangeListener(new ChangeListener() {
      public void stateChanged(ChangeEvent e) {
        if (stopButton.isSelected()) {
          action = TestAction.STOP;
          durationField.setEnabled(false);
        }
      }
    });
    actionButtons.add(pauseButton);
    actionButtons.add(stopButton);
    actionPanel.add(new JLabel(actionLabel));
    actionPanel.add(pauseButton);
    actionPanel.add(stopButton);
    add(actionPanel);

    // Duration
    HorizontalPanel durationPanel = new HorizontalPanel();
    durationField = new JTextField(15);
    durationField.setText("");
    durationField.addFocusListener(new FocusListener() {
      public void focusLost(FocusEvent e) {
        durationString = durationField.getText();
      }

      public void focusGained(FocusEvent e) {
      }
    });
    durationPanel.add(new JLabel(durationLabel));
    durationPanel.add(durationField);
    add(durationPanel);
  }

}
TOP

Related Classes of org.apache.jmeter.sampler.gui.TestActionGui

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.