package oreilly.jonathan.awt; import java.awt.*; import java.awt.event.*; import oreilly.jonathan.util.*; public class SeederDialog extends Dialog implements ActionListener, KeyListener { ProgressBar mProgressBar; Seeder mSeeder; public SeederDialog(Frame parent, int seedBytes) { super(parent, "Seeder Dialog", true); setupWindow(seedBytes); } public byte[] getSeed() { return mSeeder.getSeed(); } public void actionPerformed(ActionEvent ae) { dispose(); } public void keyPressed(KeyEvent ke) {} public void keyReleased(KeyEvent ke) {} public void keyTyped(KeyEvent ke) { mProgressBar.setLevel(mSeeder.getCurrentBitIndex()); } protected void setupWindow(int seedBytes) { setFont(new Font("TimesRoman", Font.PLAIN, 12)); setLayout(new GridLayout(4, 1)); Label t1 = new Label("Please type some keys"); Label t2 = new Label("to initialize the random"); Label t3 = new Label("number generator."); add(t1); add(t2); add(t3); mProgressBar = new ProgressBar(); Panel p = new Panel(); p.add(mProgressBar); add(p); setSize(200, 200); setLocation(100, 100); pack(); mSeeder = new Seeder(seedBytes); mProgressBar.setMaximum(mSeeder.getBitLength()); mSeeder.addActionListener(this); t1.addKeyListener(mSeeder); t1.addKeyListener(this); t1.requestFocus(); } }