package lab8;
import fishbowl.strategy.Lab8Applet;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import behaviors.FollowerBehavior;

public class Applet extends Lab8Applet implements ActionListener {
 	// the holders from Lab 8
	private BehaviorHolder behaviorHolder;
	private LeaderHolder leaderHolder;
	
	private JFrame controlFrame;
	private JButton fishButton;
	private JSlider numFishSlider;
	private JLabel sliderValue;
	private Timer displayTimer;
	
	public Applet() {
		behaviorHolder = new BehaviorHolder();
		leaderHolder = new LeaderHolder();
		this.createMenu(
				new Single(behaviorHolder, leaderHolder),
				new Multi(behaviorHolder, leaderHolder), 
				new Leader(behaviorHolder, leaderHolder), 
				new Follower(behaviorHolder, leaderHolder)
				);
		
		
		// create a leader as the initial state
		Fish leader1 = new Fish(leaderHolder, behaviorHolder);
		leader1.setBehavior(behaviorHolder.getBehavior());
		leaderHolder.setLeader(leader1);

		controlFrame = new JFrame();
		controlFrame.setSize(200, 150);
		controlFrame.setLocation( 550, 50 );
		controlFrame.setLayout( new FlowLayout() );
		
		fishButton = new JButton("add followers");
		controlFrame.add( fishButton);
		
		numFishSlider = new JSlider();
		numFishSlider.setMaximum(1000);
		numFishSlider.setMinimum(1);
		numFishSlider.setMajorTickSpacing(100);
		numFishSlider.setPaintTicks( true );
		controlFrame.add( numFishSlider );
		
		sliderValue = new JLabel();
		controlFrame.add(sliderValue);
				
		displayTimer = new Timer( 1000, this  );
		displayTimer.start();
		
		controlFrame.setVisible( true );

		fishButton.addActionListener( this );
			
	} // end constructor

	public void actionPerformed ( ActionEvent a ) {
		
		if (a.getSource() == displayTimer)
		  {
		  sliderValue.setText( String.valueOf(numFishSlider.getValue()) );
		  }
		else
		{ 	
		for (int x=0; x<numFishSlider.getValue(); x=x+1) {
    		Fish follower1 = new Fish(leaderHolder, behaviorHolder);
	    	follower1.setBehavior(new FollowerBehavior(leaderHolder));
		}
		
		}	
	}
	
	
} // end class


