package com.blazemeter.jmeter.xmpp; import kg.apc.jmeter.JMeterPluginsUtils; import org.apache.jmeter.config.gui.AbstractConfigGui; import org.apache.jmeter.testelement.TestElement; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.jivesoftware.smack.XMPPConnection; import javax.swing.*; import java.awt.*; public class JMeterXMPPConnectionGui extends AbstractConfigGui { private static final Logger log = LoggingManager.getLoggerForClass(); private JTextField address; private JTextField port; private JTextField serviceName; private JTextField timeout; private JComboBox<JMeterXMPPConnection.Type> connectionClass; private JComboBox<XMPPConnection.FromMode> fromMode; public JMeterXMPPConnectionGui() { super(); init(); initFields(); } private void initFields() { address.setText("localhost"); port.setText("5222"); serviceName.setText("localhost"); timeout.setText("1000"); connectionClass.setSelectedItem(JMeterXMPPConnectionBase.Type.TCP); fromMode.setSelectedItem(XMPPConnection.FromMode.USER); } private void init() { setLayout(new BorderLayout(0, 5)); setBorder(makeBorder()); add(JMeterPluginsUtils.addHelpLinkToPanel(makeTitlePanel(), getWikiPage()), BorderLayout.NORTH); JPanel mainPanel = new JPanel(new GridBagLayout()); GridBagConstraints labelConstraints = new GridBagConstraints(); labelConstraints.anchor = GridBagConstraints.FIRST_LINE_END; GridBagConstraints editConstraints = new GridBagConstraints(); editConstraints.anchor = GridBagConstraints.FIRST_LINE_START; editConstraints.weightx = 1.0; editConstraints.fill = GridBagConstraints.HORIZONTAL; editConstraints.insets = new Insets(2, 0, 0, 0); labelConstraints.insets = new Insets(2, 0, 0, 0); addToPanel(mainPanel, labelConstraints, 0, 0, new JLabel("Server Address: ", JLabel.RIGHT)); addToPanel(mainPanel, editConstraints, 1, 0, address = new JTextField(20)); addToPanel(mainPanel, labelConstraints, 0, 1, new JLabel("Port: ", JLabel.RIGHT)); addToPanel(mainPanel, editConstraints, 1, 1, port = new JTextField(20)); addToPanel(mainPanel, labelConstraints, 0, 2, new JLabel("Service Name: ", JLabel.RIGHT)); addToPanel(mainPanel, editConstraints, 1, 2, serviceName = new JTextField(20)); addToPanel(mainPanel, labelConstraints, 0, 3, new JLabel("Timeout, ms: ", JLabel.RIGHT)); addToPanel(mainPanel, editConstraints, 1, 3, timeout = new JTextField(20)); addToPanel(mainPanel, labelConstraints, 0, 4, new JLabel("Transport: ", JLabel.RIGHT)); addToPanel(mainPanel, editConstraints, 1, 4, connectionClass = new JComboBox<>()); connectionClass.addItem(JMeterXMPPConnectionBase.Type.TCP); connectionClass.addItem(JMeterXMPPConnectionBase.Type.BOSH); addToPanel(mainPanel, labelConstraints, 0, 5, new JLabel("Value for 'from' attribute: ", JLabel.RIGHT)); addToPanel(mainPanel, editConstraints, 1, 5, fromMode = new JComboBox<>()); fromMode.addItem(XMPPConnection.FromMode.USER); fromMode.addItem(XMPPConnection.FromMode.UNCHANGED); fromMode.addItem(XMPPConnection.FromMode.OMITTED); JPanel container = new JPanel(new BorderLayout()); container.add(mainPanel, BorderLayout.NORTH); add(container, BorderLayout.CENTER); } private String getWikiPage() { return "XMPPConnection"; } private void addToPanel(JPanel panel, GridBagConstraints constraints, int col, int row, JComponent component) { constraints.gridx = col; constraints.gridy = row; panel.add(component, constraints); } @Override public void clearGui() { super.clearGui(); initFields(); } @Override public String getLabelResource() { return getClass().getCanonicalName(); } @Override public String getStaticLabel() { return "bzm - XMPP Connection"; } @Override public TestElement createTestElement() { TestElement el = new JMeterXMPPConnection(); modifyTestElement(el); el.setComment("This plugin was developed by www.blazemeter.com"); return el; } @Override public void configure(TestElement element) { super.configure(element); if (element instanceof JMeterXMPPConnection) { JMeterXMPPConnection conn = (JMeterXMPPConnection) element; // fill controls address.setText(conn.getAddress()); port.setText(conn.getPort()); serviceName.setText(conn.getServiceName()); timeout.setText(conn.getPacketReplyTimeout()); connectionClass.setSelectedItem(conn.getConnectionType()); fromMode.setSelectedItem(conn.getFromMode()); } } @Override public void modifyTestElement(TestElement element) { configureTestElement(element); if (element instanceof JMeterXMPPConnection) { JMeterXMPPConnection conn = (JMeterXMPPConnection) element; conn.setAddress(address.getText()); conn.setPort(port.getText()); conn.setServiceName(serviceName.getText()); conn.setPacketReplyTimeout(timeout.getText()); conn.setConnectionType(connectionClass.getSelectedItem().toString()); conn.setFromMode(fromMode.getSelectedItem().toString()); } } }