package part1;

import javax.swing.JFrame;
import java.awt.GridLayout;
import javax.swing.WindowConstants;

/**
 *
 * @author $Author: cdent $
 *
 * @version $Revision: 1.2 $
 *
 */
public class CDContext implements PlayerContext {

    private static final String PLAYER_NAME = "CD Player";

    private PlayerCommand playCommand;
    private PlayerCommand fastForwardCommand;
    private PlayerCommand rewindCommand;
    private PlayerCommand stopCommand;

    private JFrame frame = new JFrame(PLAYER_NAME);

    public void show() {
	frame.getContentPane().setLayout(new GridLayout(4, 1));
	frame.setSize(80, 250);
	frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	frame.show();
    }

    private void addButton(PlayerCommand command) {
	frame.getContentPane().add(command.getButton());
    }

    
    public void setPlayCommand(PlayerCommand command) {
	this.playCommand = command;
	addButton(command);
    }

    public void setFastForwardCommand(PlayerCommand command) {
	this.fastForwardCommand = command;
	addButton(command);
    }

    public void setStopCommand(PlayerCommand command) {
	this.stopCommand = command;
	addButton(command);
    }

    public void setRewindCommand(PlayerCommand command) {
	this.rewindCommand = command;
	addButton(command);
    }

    public void commandChanged(CDPlayCommand command) {
	System.out.println("=====> We are playing. CD Quality only soso.");
	fastForwardCommand.falsify();
	rewindCommand.falsify();
	stopCommand.falsify();
    }
    
    public void commandChanged(CDFastForwardCommand command) {
	if (playCommand.isPressed()) {
	    System.out.println("=====> We are cueing (with sound).");
	} else {
	    System.out.println("=====> We are switching tracks forward.");
	}
	rewindCommand.falsify();
	stopCommand.falsify();
    }

    public void commandChanged(CDStopCommand command) {
	playCommand.falsify();
	rewindCommand.falsify();
	fastForwardCommand.falsify();
	System.out.println("=====> All stop. No sound.");
    }

    public void commandChanged(CDRewindCommand command) {
	if (playCommand.isPressed()) {
	    System.out.println("=====> We are rewinding (with sound).");
	} else {
	    System.out.println("=====> We are switching tracks backward.");
	}
	fastForwardCommand.falsify();
	stopCommand.falsify();
    }
	
}
	
