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


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


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


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


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


	/**
	 * 
	 */
	public boolean updateHistory();


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


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

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


	/**
	 * Get the properties.
	 * @return
	 */
	public SGProperties getMemento();	


	/**
	 * Set the properties.
	 * @param p
	 * @return
	 */
	public boolean setMemento( SGProperties p );


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

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

}

