package jp.co.cybec.laxide.model.commands;

import jp.co.cybec.laxide.model.base.AbstractModel;
import jp.co.cybec.laxide.model.base.I_LetsAjaxLayoutModel;

import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.gef.commands.Command;

/**
 * モデルの属性値を変更した時に呼ぶコマンドクラス
 * ファイル名：ChangeConstraintCommand.java
 * @author nakamura
 * 作成時刻：15:22:06
 *
 */
public class ChangeConstraintCommand extends Command {
	private AbstractModel targetModel;
	
	private Rectangle constraint; // 変更する制約

	private Rectangle oldConstraint; // 以前の制約

	// オーバーライド
	public void execute() {
		// モデルの制約を変更する
		targetModel.setConstraint(constraint);
	}

	public void setConstraint(Rectangle rect) {
		constraint = rect;
	}

	public void setModel(Object model) {
		targetModel = (AbstractModel) model;
		oldConstraint = targetModel.getConstraint();
	}

	// オーバーライド
	public void undo() {
		if (!(targetModel instanceof I_LetsAjaxLayoutModel)) {
			targetModel.setConstraint(oldConstraint);
		}
	}
}
