/**
 * LOGICAL-PARADOX.ORG
 * Copyright (C)2004 satoshi akabane(akabane@logical-paradox.org)
 *
 */
package org.logical_paradox.common.fsm;

import java.util.EventObject;

/**
 * 状態遷移が発生した際の各種情報を格納するイベントソースオブジェクト
 * @author satoshi akabane@logical-paradox.org
 * @version $Revision: 1.2 $
 */
public class StateEvent extends EventObject {
	/** 状態遷移が発生した理由 */
	private Symbol symbol;
	/** 現在の状態 */
	private State state;
	/** このイベントが消化されたかどうかを示すフラグ(true:消化済み / false:未消化) */
	private boolean consumed = false;

	/**
	 * コントラクタ
	 * @param src イベントソース
	 * @param st 状態
	 */
	public StateEvent(Object src, State st) {
		super(src);
		state = st;
	}
	/**
	 * コンストラクタ
	 * @param src イベントソース
	 * @param st 状態
	 * @param s 状態遷移が発生した理由を示すオブジェクト
	 */
	public StateEvent(Object src, State st, Symbol s) {
		this(src, st);
		symbol = s;
	}
	/**
	 * 状態遷移が発生した理由を返す
	 * @return 遷移の理由
	 */
	public Symbol getSymbol() {
		return symbol;
	}
	/**
	 * 現在の状態を返す
	 * 現在の状態
	 */
	public State getState() {
		return state;
	}
	/**
	 * このイベントを消化する
	 */
	public void consume() {
		consumed = true;
	}
}
