/**
 * Keep track of bunny population growth using Fibonacci numbers. 
 * Also play around with adding multiple buttons and listeners to the frame.
 * Thu Apr 6  2006
 */
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class BunnyGrowthViewer
{
    public static void main( String[] args )
    {
        JFrame frame = new JFrame();
        frame.setSize( 400, 100 );
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

        JButton button = new JButton( "Add Bunnies" );

        final BunnyFamily mybunnies = new BunnyFamily();
        final JLabel label = new JLabel( "bunnies = " + mybunnies.getBunnies() );

        JPanel panel = new JPanel();
        panel.add( button );
        panel.add( label );
        frame.add( panel );

        class AddBunniesListener implements ActionListener
        {
            public void actionPerformed( ActionEvent event )
            {
                mybunnies.updateBunnies();
                label.setText( "bunnies = " + mybunnies.getBunnies() );
            }
        }

        // Now add another ActionLister for our new button. 
        // We actually see it because we add it to the panel, not the frame.
        // We put our new inner class above the line where we use it.
        ActionListener listener = new AddBunniesListener();
        button.addActionListener( listener );

        class JaimeListener implements ActionListener
        {
            public void actionPerformed( ActionEvent event )
            {
                label.setText( "I don't know!");
            }
        }

        JButton jaimeButton = new JButton("Click me, says Jaime!"); 
        panel.add(jaimeButton);
        ActionListener jaimeListener = new JaimeListener();

        jaimeButton.addActionListener(jaimeListener);
        


        frame.setVisible( true );
    }
}

