package pbl2011.mvc;
import javax.swing.JComponent;

import pbl2011.common.CommonConst;

/**
 * <p>
 * ビュークラス
 * <p>
 * MVCモデルのVを担当するクラス。
 *
 * @author 10745104 Y.Ishii
 */
public abstract class View extends JComponent implements Observer, CommonConst{

	protected Model myModel;
	protected Controller myController;
	public CurrentManager cuMgr;

	/**
	 * <p>
	 * コンストラクタ
	 *
	 * @param m モデルクラス
	 * @param title 画面タイトル
	 */
	public View(Model m) {
		myModel = m;
		myController = makeController();

		myModel.attach(this);
		cuMgr = myModel.getCurrentManager();

	}

	public Model getModel() {
		return myModel;
	}

	public Controller getController() {
		return myController;
	}

	@Override
	public void update() {
		this.draw();
	}

	abstract protected Controller makeController();

	abstract protected void initialize();

	abstract protected void draw();

}
