JavaTM 2 Platform
Std. Ed. v1.3

javax.swing.undo
クラス UndoManager

java.lang.Object
  |
  +--javax.swing.undo.AbstractUndoableEdit
        |
        +--javax.swing.undo.CompoundEdit
              |
              +--javax.swing.undo.UndoManager
すべての実装インタフェース:
EventListener, Serializable, UndoableEdit, UndoableEditListener

public class UndoManager
extends CompoundEdit
implements UndoableEditListener

UndoableEditListener として使用できる CompoundEdit の具象サブクラスで、さまざまなソースから UndoableEditEvent を連結することにより、それらを一度に 1 つずつ元に戻したり再実行したりします。 AbstractUndoableEdit と CompoundEdit とは違って、このクラスの public メソッドは同期がとられるので、複数のスレッドから呼び出しても安全です。このため、元に戻せる JavaBeans のセットに対して UndoManager を使うと、整列化が容易になります。

警告: このクラスの直列化されたオブジェクトは、今後の Swing リリースと互換ではなくなる予定です。現在の直列化のサポートは、短期間の運用や、同じバージョンの Swing を実行するアプリケーション間の RMI に適しています。今後の Swing リリースでは、長期間の持続性をサポートする予定です。

関連項目:
直列化された形式

クラス javax.swing.undo.CompoundEdit から継承したフィールド
edits
 
クラス javax.swing.undo.AbstractUndoableEdit から継承したフィールド
RedoName, UndoName
 
コンストラクタの概要
UndoManager()
           
 
メソッドの概要
 boolean addEdit(UndoableEdit anEdit)
          進行中の場合、anEdit を indexOfNextAdd に挿入して、indexOfNextAdd 以降の古い編集結果を削除します。
 boolean canRedo()
          通常のセマンティクスを保護するために、オーバーライドされます。
 boolean canUndo()
          通常のセマンティクスを保護するために、オーバーライドされます。
 boolean canUndoOrRedo()
          呼び出し側 undoOrRedo が元に戻すか再実行する場合に true を返します。
 void discardAllEdits()
          undo マネージャを空にして、各編集結果の進行時に die メッセージを送ります。
protected  UndoableEdit editToBeRedone()
          redo が呼び出された場合に、再実行する意味のある次の編集結果を返します。
protected  UndoableEdit editToBeUndone()
          undo が呼び出された場合に、元に戻す意味のある次の編集結果を返します。
 void end()
          end() を UndoManager に送ると、それをプレーンな古い (終了済み) CompoundEdit に変換します。
 int getLimit()
          この UndoManager が保持する編集結果の最大数を返します。
 String getRedoPresentationName()
          進行中の場合、redo() が呼び出されたときに再実行される意味のある編集結果の getRedoPresentationName を返します。
 String getUndoOrRedoPresentationName()
          undo と redo を切り替えるコマンドの適切な名前を返します。
 String getUndoPresentationName()
          進行中の場合、undo() が呼び出されたときに元に戻される意味のある編集結果の getUndoPresentationName を返します。
 void redo()
          この UndoManager が進行中の場合、indexOfNextAdd またはそれ以降にある最後の意味のある UndoableEdit と、それまでの間にある意味のない編集結果をすべてやり直します。
protected  void redoTo(UndoableEdit edit)
          編集対象の indexOfNextAdd からのすべての変更を再実行します。
 void setLimit(int l)
          この UndoManager が保持する編集結果の最大数を設定します。
 String toString()
          このオブジェクトのプロパティを表示および識別する文字列を返します。
protected  void trimEdits(int from, int to)
          指定範囲 (上下限値を含む) の編集結果で終了するように通知し、それらを編集結果のコレクションから削除します。
protected  void trimForLimit()
          待機状態の編集結果の数を、indexOfNextAdd に絞られた、サイズ限度の範囲にまで減らします。
 void undo()
          この UndoManager が進行中の場合、indexOfNextAdd の前にある最後の意味のある UndoableEdit と、それまでの間にある意味のない編集結果をすべて元に戻します。
 void undoableEditHappened(UndoableEditEvent e)
          この UndoManager が待機する UndoabledEdit ソースによって呼び出されます。
 void undoOrRedo()
          undo または redo のうち、どちらか適切な方を行います。
protected  void undoTo(UndoableEdit edit)
          編集対象の indexOfNextAdd からのすべての変更を元に戻します。
 
クラス javax.swing.undo.CompoundEdit から継承したメソッド
die, getPresentationName, isInProgress, isSignificant, lastEdit
 
クラス javax.swing.undo.AbstractUndoableEdit から継承したメソッド
replaceEdit
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

UndoManager

public UndoManager()
メソッドの詳細

getLimit

public int getLimit()
この UndoManager が保持する編集結果の最大数を返します。デフォルト値は 100 です。
関連項目:
addEdit(javax.swing.undo.UndoableEdit), setLimit(int)

discardAllEdits

public void discardAllEdits()
undo マネージャを空にして、各編集結果の進行時に die メッセージを送ります。

trimForLimit

protected void trimForLimit()
待機状態の編集結果の数を、indexOfNextAdd に絞られた、サイズ限度の範囲にまで減らします。

trimEdits

protected void trimEdits(int from,
                         int to)
指定範囲 (上下限値を含む) の編集結果で終了するように通知し、それらを編集結果のコレクションから削除します。下限値が上限値より大きい場合は無操作です。

setLimit

public void setLimit(int l)
この UndoManager が保持する編集結果の最大数を設定します。最大数を減らすために、編集結果を破棄する必要がある場合、追加されたときと逆の順序で終了するように通知されます。
関連項目:
addEdit(javax.swing.undo.UndoableEdit), getLimit()

editToBeUndone

protected UndoableEdit editToBeUndone()
undo が呼び出された場合に、元に戻す意味のある次の編集結果を返します。null を返す場合もあります。

editToBeRedone

protected UndoableEdit editToBeRedone()
redo が呼び出された場合に、再実行する意味のある次の編集結果を返します。null を返す場合もあります。

undoTo

protected void undoTo(UndoableEdit edit)
               throws CannotUndoException
編集対象の indexOfNextAdd からのすべての変更を元に戻します。それに応じて indexOfNextAdd を更新します。

redoTo

protected void redoTo(UndoableEdit edit)
               throws CannotRedoException
編集対象の indexOfNextAdd からのすべての変更を再実行します。それに応じて indexOfNextAdd を更新します。

undoOrRedo

public void undoOrRedo()
                throws CannotRedoException,
                       CannotUndoException
undo または redo のうち、どちらか適切な方を行います。こうした 2 つの関数を切り替えるアクションへのバインディングに適しています。これを送る意味があるのは、limit == 1 の場合だけです。
関連項目:
canUndoOrRedo(), getUndoOrRedoPresentationName()

canUndoOrRedo

public boolean canUndoOrRedo()
呼び出し側 undoOrRedo が元に戻すか再実行する場合に true を返します。2 つの関数を切り替えるコマンドを有効にする決定を行うのに適しています。これを使う意味があるのは、limit == 1 の場合だけです。
関連項目:
undoOrRedo()

undo

public void undo()
          throws CannotUndoException
この UndoManager が進行中の場合、indexOfNextAdd の前にある最後の意味のある UndoableEdit と、それまでの間にある意味のない編集結果をすべて元に戻します。それに応じて indexOfNextAdd を更新します。

inProgress でない場合、indexOfNextAdd は無視され、スーパークラスのルーチンが呼び出されます。

オーバーライド:
クラス CompoundEdit 内の undo
関連項目:
CompoundEdit.end()

canUndo

public boolean canUndo()
通常のセマンティクスを保護するために、オーバーライドされます。つまり、元に戻す操作が現在成功する場合は true、そうでない場合は false を返します。
オーバーライド:
クラス CompoundEdit 内の canUndo
クラス javax.swing.undo.CompoundEdit からコピーされたタグ:
関連項目:
CompoundEdit.isInProgress()

redo

public void redo()
          throws CannotRedoException
この UndoManager が進行中の場合、indexOfNextAdd またはそれ以降にある最後の意味のある UndoableEdit と、それまでの間にある意味のない編集結果をすべてやり直します。それに応じて indexOfNextAdd を更新します。

inProgress でない場合、indexOfNextAdd は無視され、スーパークラスのルーチンが呼び出されます。

オーバーライド:
クラス CompoundEdit 内の redo
関連項目:
CompoundEdit.end()

canRedo

public boolean canRedo()
通常のセマンティクスを保護するために、オーバーライドされます。つまり、再実行の操作が現在成功する場合は true、そうでない場合は false を返します。
オーバーライド:
クラス CompoundEdit 内の canRedo
クラス javax.swing.undo.CompoundEdit からコピーされたタグ:
関連項目:
CompoundEdit.isInProgress()

addEdit

public boolean addEdit(UndoableEdit anEdit)
進行中の場合、anEdit を indexOfNextAdd に挿入して、indexOfNextAdd 以降の古い編集結果を削除します。削除される各編集結果に対して die メソッドが呼び出され、各編集結果が追加されたときと逆の順序で送られます。indexOfNextAdd を更新します。

inProgress でない場合、CompoundEdit として動作します。

オーバーライド:
クラス CompoundEdit 内の addEdit
関連項目:
CompoundEdit.end(), CompoundEdit.addEdit(javax.swing.undo.UndoableEdit)

end

public void end()
end() を UndoManager に送ると、それをプレーンな古い (終了済み) CompoundEdit に変換します。

スーパークラスの end() メソッドを呼び出して (inProgress を false にして) から、indexOfNextAdd とそれ以降にある到達できない編集結果に、それらを追加したときと逆の順序で die() を送ります。

オーバーライド:
クラス CompoundEdit 内の end
関連項目:
CompoundEdit.end()

getUndoOrRedoPresentationName

public String getUndoOrRedoPresentationName()
undo と redo を切り替えるコマンドの適切な名前を返します。このようなコマンドを使う意味があるのは、limit == 1 で、処理が進行中でない場合だけです。

getUndoPresentationName

public String getUndoPresentationName()
進行中の場合、undo() が呼び出されたときに元に戻される意味のある編集結果の getUndoPresentationName を返します。意味のある編集結果がない場合は、AbstractUndoableEdit.UndoName を返します。

inProgress でない場合、CompoundEdit として動作します。

オーバーライド:
クラス CompoundEdit 内の getUndoPresentationName
関連項目:
undo(), CompoundEdit.getUndoPresentationName()

getRedoPresentationName

public String getRedoPresentationName()
進行中の場合、redo() が呼び出されたときに再実行される意味のある編集結果の getRedoPresentationName を返します。意味のある編集結果がない場合は、AbstractUndoableEdit.RedoName を返します。

inProgress でない場合、CompoundEdit として動作します。

オーバーライド:
クラス CompoundEdit 内の getRedoPresentationName
関連項目:
redo(), CompoundEdit.getUndoPresentationName()

undoableEditHappened

public void undoableEditHappened(UndoableEditEvent e)
この UndoManager が待機する UndoabledEdit ソースによって呼び出されます。e.getEdit() を使って addEdit を呼び出します。
定義:
インタフェース UndoableEditListener 内の undoableEditHappened
関連項目:
addEdit(javax.swing.undo.UndoableEdit)

toString

public String toString()
このオブジェクトのプロパティを表示および識別する文字列を返します。
オーバーライド:
クラス CompoundEdit 内の toString
戻り値:
このオブジェクトの String 表現

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.