
package jp.riken.brain.ni.samuraigraph.base;


import java.util.ArrayList;


/**
 * 
 * @author kuromaru
 *
 * The SGIUndoable interface provides definitions for undoable objects.
 */
public interface SGIUndoable
{
	
	/**
	 * アンドゥを行う
	 */
	public boolean undo();


	/**
	 * リドゥを行う
	 */
	public boolean redo();


	/**
	 * アンドゥ操作を依頼する
	 */
	public boolean onUndo();
	
	
	/**
	 * リドゥ操作を依頼する
	 */
	public boolean onRedo();


	/**
	 * プロパティの履歴を追加する
	 */
	public boolean initPropertiesHistory();


	/**
	 * オブジェクトの履歴を更新する
	 * @return
	 */
	public boolean updateObjectHistory( final SGIUndoable obj );


	/**
	 * オブジェクトの履歴を更新する
	 */
	public boolean updateObjectHistory( final ArrayList objList );


	/**
	 * 履歴の更新の実行。アンドゥ対象の操作が行われたときに、真っ先に呼ばれる。
	 */
	public boolean updateHistory();


	/**
	 * 
	 * @return
	 */
	public boolean updateThisObjectHistory();


	/**
	 * 
	 *
	 */
	public void notifyToRoot();


	/**
	 * 
	 * @return
	 */
	public boolean isChanged();

	
	/**
	 * 
	 * @param b
	 */
	public void setChanged( boolean b );
	

}
