FileDocCategorySizeDatePackage
TestOpenMailRelayGUI.javaAPI DocExample3461Mon Feb 16 18:17:54 GMT 2004None

TestOpenMailRelayGUI

public class TestOpenMailRelayGUI extends JFrame
GUI for TestOpenMailRelay, lets you run it multiple times in one JVM to avoid startup delay. Starts each in its own Thread for faster return to ready state. Uses PipedI/OStreams to capture system.out/err into a window.

Fields Summary
protected JTextField
hostTextField
The one-line textfield for the user to type Host name/IP
protected JButton
goButton
The push button to start a test; a field so can disable/enable it.
protected JTextArea
results
Multi-line text area for results.
protected PrintStream
ps
The piped stream for the main class to write into "results"
protected BufferedReader
iis
The piped stream to read from "ps" into "results"
ActionListener
runner
This inner class is the action handler both for pressing the "Try" button and also for pressing in the text field. It gets the IP name/address from the text field and passes it to process() in the main class. Run in the GUI Dispatch thread to avoid messing the GUI. -- tmurtagh.
Constructors Summary
public TestOpenMailRelayGUI()
Construct a GUI and some I/O plumbing to get the output of "TestOpenMailRelay" into the "results" textfield.


	                 	 
	    
		super("Tests for Open Mail Relays");
		PipedInputStream is;
		PipedOutputStream os;
		JPanel p;
		Container cp = getContentPane();
		cp.add(BorderLayout.NORTH, p = new JPanel());

		// The entry label and text field.
		p.add(new JLabel("Host:"));
		p.add(hostTextField = new JTextField(10));
		hostTextField.addActionListener(runner);

		p.add(goButton = new JButton("Try"));
		goButton.addActionListener(runner);

		JButton cb;
		p.add(cb = new JButton("Clear Log"));
		cb.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				results.setText("");
			}
		});
		JButton sb;
		p.add(sb = new JButton("Save Log"));
		sb.setEnabled(false);

		results = new JTextArea(20, 60);
		// Add the text area to the main part of the window (CENTER).
		// Wrap it in a JScrollPane to make it scroll automatically.
		cp.add(BorderLayout.CENTER, new JScrollPane(results));

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		pack();			// end of GUI portion

		// Create a pair of Piped Streams.
		is = new PipedInputStream();
		os = new PipedOutputStream(is);

		iis = new BufferedReader(new InputStreamReader(is, "ISO8859_1"));
		ps = new PrintStream(os);

		// Construct and start a Thread to copy data from "is" to "os".
		new Thread() {
			public void run() {
				try {
					String line;
					while ((line = iis.readLine()) != null) {
						results.append(line);
						results.append("\n");
					}
				} catch(IOException ex) {
					JOptionPane.showMessageDialog(null,
						"*** Input or Output error ***\n" + ex,
						"Error",
						JOptionPane.ERROR_MESSAGE);
				}
			}
		}.start();
	
Methods Summary
public static voidmain(java.lang.String[] unused)

		new TestOpenMailRelayGUI().setVisible(true);