Package org.apache.jmeter.protocol.mail.sampler.gui

Source Code of org.apache.jmeter.protocol.mail.sampler.gui.MailReaderSamplerGui

/*
* 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.protocol.mail.sampler.gui;

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

import javax.swing.ButtonGroup;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
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.protocol.mail.sampler.MailReaderSampler;
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 MailReaderSamplerGui extends AbstractSamplerGui {

  // Gui Components
  private JComboBox serverTypeBox;

  private JTextField serverBox;

  private JTextField usernameBox;

  private JTextField passwordBox;

  private JTextField folderBox;

  private JLabel folderLabel;

  private JRadioButton allMessagesButton;

  private JRadioButton someMessagesButton;

  private JTextField someMessagesField;

  private JCheckBox deleteBox;

  // Labels
  private final static String POP3Label = JMeterUtils.getResString("mail_reader_pop3");// $NON-NLS-1$

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

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

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

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

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

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

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

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

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

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

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

  private static final String INBOX = "INBOX"; // $NON-NLS-1$

  public MailReaderSamplerGui() {
    init();
    initGui();
  }

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

  /*
   * (non-Javadoc) Copy the data from the test element to the GUI
   *
   * @see org.apache.jmeter.gui.JMeterGUIComponent#configure(org.apache.jmeter.testelement.TestElement)
   */
  public void configure(TestElement element) {
    MailReaderSampler mrs = (MailReaderSampler) element;
    if (mrs.getServerType().equals(MailReaderSampler.TYPE_POP3)) {
      serverTypeBox.setSelectedItem(POP3Label);
      folderBox.setText(INBOX);
    } else if (mrs.getServerType().equals(MailReaderSampler.TYPE_POP3S)) {
              serverTypeBox.setSelectedItem(POP3SLabel);
              folderBox.setText(INBOX);
        } else if (mrs.getServerType().equals(MailReaderSampler.TYPE_IMAPS)) {
            serverTypeBox.setSelectedItem(IMAPSLabel);
            folderBox.setText(mrs.getFolder());
    } else {
      serverTypeBox.setSelectedItem(IMAPLabel);
      folderBox.setText(mrs.getFolder());
    }
    serverBox.setText(mrs.getServer());
    usernameBox.setText(mrs.getUserName());
    passwordBox.setText(mrs.getPassword());
    if (mrs.getNumMessages() == MailReaderSampler.ALL_MESSAGES) {
      allMessagesButton.setSelected(true);
      someMessagesField.setText("0"); // $NON-NLS-1$
    } else {
      someMessagesButton.setSelected(true);
      someMessagesField.setText(mrs.getNumMessagesString());
    }
    deleteBox.setSelected(mrs.getDeleteMessages());
    super.configure(element);
  }

  /*
   * (non-Javadoc) Create the corresponding Test Element and set up its data
   *
   * @see org.apache.jmeter.gui.JMeterGUIComponent#createTestElement()
   */
  public TestElement createTestElement() {
    MailReaderSampler sampler = new MailReaderSampler();
    modifyTestElement(sampler);
    return sampler;
  }

  /*
   * (non-Javadoc) Modifies a given TestElement to mirror the data in the gui
   * components.
   *
   * @see org.apache.jmeter.gui.JMeterGUIComponent#modifyTestElement(TestElement)
   */
  public void modifyTestElement(TestElement te) {
    te.clear();
    configureTestElement(te);

    MailReaderSampler mrs = (MailReaderSampler) te;

    final String item = (String) serverTypeBox.getSelectedItem();
        if (item.equals(POP3Label)) {
      mrs.setServerType(MailReaderSampler.TYPE_POP3);
    } else if (item.equals(POP3SLabel)){
            mrs.setServerType(MailReaderSampler.TYPE_POP3S);
        } else if (item.equals(IMAPSLabel)){
            mrs.setServerType(MailReaderSampler.TYPE_IMAPS);
    } else {
      mrs.setServerType(MailReaderSampler.TYPE_IMAP);
    }

    mrs.setFolder(folderBox.getText());
    mrs.setServer(serverBox.getText());
    mrs.setUserName(usernameBox.getText());
    mrs.setPassword(passwordBox.getText());
    if (allMessagesButton.isSelected()) {
      mrs.setNumMessages(MailReaderSampler.ALL_MESSAGES);
    } else {
      mrs.setNumMessages(someMessagesField.getText());
    }
    mrs.setDeleteMessages(deleteBox.isSelected());
  }

  // TODO - fix GUI layout problems
 
  /*
   * Helper method to set up the GUI screen
   */
  private void init() {
    setLayout(new VerticalLayout(5, VerticalLayout.BOTH, VerticalLayout.TOP));
    setBorder(makeBorder());
    add(makeTitlePanel());

    JPanel serverTypePanel = new JPanel();
    serverTypePanel.add(new JLabel(ServerTypeLabel));
    DefaultComboBoxModel serverTypeModel = new DefaultComboBoxModel();
    serverTypeModel.addElement(POP3Label);
        serverTypeModel.addElement(POP3SLabel);
        serverTypeModel.addElement(IMAPLabel);
    serverTypeModel.addElement(IMAPSLabel);
    serverTypeBox = new JComboBox(serverTypeModel);
    serverTypeBox.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        final String item = (String) serverTypeBox.getSelectedItem();
                if (item.equals(POP3Label)||item.equals(POP3SLabel)) {
          folderLabel.setEnabled(false);
          folderBox.setText(INBOX);
          folderBox.setEnabled(false);
        } else {
          folderLabel.setEnabled(true);
          folderBox.setEnabled(true);
        }
      }
    });
    serverTypePanel.add(serverTypeBox);
    add(serverTypePanel);

    JPanel serverPanel = new JPanel();
    serverPanel.add(new JLabel(ServerLabel));
    serverBox = new JTextField(20);
    serverPanel.add(serverBox);
    add(serverPanel);

    JPanel accountNamePanel = new JPanel();
    accountNamePanel.add(new JLabel(AccountLabel));
    usernameBox = new JTextField(20);
    accountNamePanel.add(usernameBox);
    add(accountNamePanel);

    JPanel accountPassPanel = new JPanel();
    accountPassPanel.add(new JLabel(PasswordLabel));
    passwordBox = new JTextField(20);
    accountPassPanel.add(passwordBox);
    add(accountPassPanel);

    JPanel folderPanel = new JPanel();
    folderLabel = new JLabel(FolderLabel);
    folderBox = new JTextField(INBOX, 10);
    folderPanel.add(folderLabel);
    folderPanel.add(folderBox);
    add(folderPanel);

    HorizontalPanel numMessagesPanel = new HorizontalPanel();
    numMessagesPanel.add(new JLabel(NumMessagesLabel));
    ButtonGroup nmbg = new ButtonGroup();
    allMessagesButton = new JRadioButton(AllMessagesLabel);
    allMessagesButton.addChangeListener(new ChangeListener() {
      public void stateChanged(ChangeEvent e) {
        if (allMessagesButton.isSelected()) {
          someMessagesField.setEnabled(false);
        }
      }
    });
    someMessagesButton = new JRadioButton();
    someMessagesButton.addChangeListener(new ChangeListener() {
      public void stateChanged(ChangeEvent e) {
        if (someMessagesButton.isSelected()) {
          someMessagesField.setEnabled(true);
        }
      }
    });
    nmbg.add(allMessagesButton);
    nmbg.add(someMessagesButton);
    someMessagesField = new JTextField(5);
    allMessagesButton.setSelected(true);
    numMessagesPanel.add(allMessagesButton);
    numMessagesPanel.add(someMessagesButton);
    numMessagesPanel.add(someMessagesField);
    add(numMessagesPanel);

    deleteBox = new JCheckBox(DeleteLabel);
    add(deleteBox);
  }

  public void clearGui() {
    super.clearGui();
    initGui()
  }

  private void initGui() {
    allMessagesButton.setSelected(true);
    //someMessagesButton.setSelected(false);
    //someMessagesField.setText("0");
    deleteBox.setSelected(false);
    folderBox.setText(INBOX);
    passwordBox.setText("");
    serverBox.setText("");
    usernameBox.setText("");
  }
}
TOP

Related Classes of org.apache.jmeter.protocol.mail.sampler.gui.MailReaderSamplerGui

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.