package com.marinilli.b2.c12;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

/**
 * Chapter 12 - A version test class
 *
 * @author Mauro Marinilli
 * @version 1.0
 */

public class Test extends JFrame {
  JPanel jPanel2 = new JPanel();
  JPanel jPanel1 = new JPanel();
  FlowLayout flowLayout1 = new FlowLayout();
  JLabel jLabel1 = new JLabel();
  JTextField versionStringTextField = new JTextField(12);
  JLabel jLabel2 = new JLabel();
  JTextField versionIdTextField = new JTextField(8);
  JPanel jPanel3 = new JPanel();
  JButton matchButton = new JButton();
  JLabel outcomeLabel = new JLabel();

  public Test() {
    getContentPane().setLayout(flowLayout1);
    jLabel1.setText("VersionString");
    jLabel2.setText("VersionId");
    matchButton.setText("match");
    matchButton.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        // the "match" button has been pushed
        Versionable v1 = Versionable.createVersionId(versionIdTextField.getText());
        versionIdTextField.setText(v1.toString());

        Versionable v2 = Versionable.createVersionable(versionStringTextField.getText());
        versionStringTextField.setText(v2.toString());

        outcomeLabel.setText("  result: " + v1.match(v2)+"  ");
      }
    });
    addWindowListener(new java.awt.event.WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });
    getContentPane().add(jPanel2, null);
    jPanel1.add(jLabel1, null);
    jPanel1.add(versionStringTextField, null);
    getContentPane().add(jPanel3, null);
    jPanel3.add(matchButton, null);
    getContentPane().add(jPanel1, null);
    jPanel2.add(jLabel2, null);
    jPanel2.add(versionIdTextField, null);
    outcomeLabel.setBorder(BorderFactory.createEtchedBorder());
    outcomeLabel.setText("comparison result");
    getContentPane().add(outcomeLabel, null);
    setSize(224,192);
    setTitle("Version Strings Test");
    setVisible(true);
  }

  /**
   * launch this class to start the GUI interactive version testing
   */
  public static void main(String[] args) {
    Test test1 = new Test();
  }


}