public interface UndoableEdit
UndoableEdit
は編集結果を表します。編集結果の取り消しや、いったん取り消した編集の再実行も可能です。
UndoableEdit
は UndoManager
とともに使用します。UndoableEdit
は UndoableEditListener
によって生成されるので、通常は UndoManager
に追加されます。UndoableEdit
が UndoManager
に追加されると、次の処理が行われます (UndoManager
上でまだ end
が呼び出されていないものと想定)。
UndoManager
は、現在の編集結果に対して addEdit
を呼び出します。このとき、新しい編集結果を引数に指定します。addEdit
が true を返す場合は、新しい編集結果がすでに現在の編集結果に組み込まれたものとみなされます。したがって、この新しい編集結果は、現在の編集結果のリストには追加されません。addEdit
を使って小規模な編集結果をより大規模な編集結果に組み込むことにより、1 つの編集結果として扱うことができます。
addEdit
の戻り値が false である場合、新しい編集結果に対して replaceEdit
が呼び出されます。このとき、引数として現在の編集結果が渡されます。これは、addEdit
と逆の操作になります。新しい編集結果が replaceEdit
から true を返す場合、この編集結果で現在の編集結果が置き換えられます。
UndoManager
は、isSignificant
を利用して、何個の編集結果を取り消せるか、または取り消した編集を再実行できるかを決定します。UndoManager
は、小さな編集結果を取り消したり、再実行したりできます (isSignificant
が false を返す場合)。たとえば、現在の編集結果を取り消して前回の重大な結果に戻したり、編集を再実行して重大な編集結果を得ることができます。複数の編集結果を単一の編集結果として扱うには、addEdit
と replaceEdit
を使用します。isSignificant
が false を返す場合は、多くの小さな編集結果を一度に取り消したり、再実行したりできます。同様の処理は、addEdit
メソッドを使っても実行できます。修飾子と型 | メソッドと説明 |
---|---|
boolean |
addEdit(UndoableEdit anEdit)
この
UndoableEdit に UndoableEdit を追加します。 |
boolean |
canRedo()
この編集内容を再実行できる場合は true を返します。
|
boolean |
canUndo()
この編集結果を取り消せる場合は true を返します。
|
void |
die()
編集結果に、これ以上使用できないことを通知します。
|
String |
getPresentationName()
変更ログなどで使用するのに適した、この編集結果の判読可能なローカライズ済みの記述を返します。
|
String |
getRedoPresentationName()
[再実行] メニュー項目などで使用するのに適した、この編集結果の再実行可能な形式の判読可能なローカライズ済みの説明を返します。
|
String |
getUndoPresentationName()
[元に戻す] メニュー項目などで使用するのに適した、この編集結果の取り消し可能な形式の判読可能なローカライズ済みの説明を返します。
|
boolean |
isSignificant()
この編集結果が重大であると見なされる場合に true を返します。
|
void |
redo()
編集内容を適用し直します。
|
boolean |
replaceEdit(UndoableEdit anEdit)
この
UndoableEdit で anEdit が置き換えられる場合は、true を返します。 |
void |
undo()
編集結果を取り消します。
|
void undo() throws CannotUndoException
CannotUndoException
- この編集結果を取り消せない場合boolean canUndo()
void redo() throws CannotRedoException
CannotRedoException
- この編集内容を再実行できない場合boolean canRedo()
void die()
UndoableEdit
は、取り消すことも再実行することもできません。
これは、元に戻す操作や再実行の操作が不可能になり、不要になった状態をクリーンアップするとき、たとえば、削除の取り消しができなくなったオブジェクトによって使用されるファイルリソースを削除する場合に使用するフックです。UndoManager
は、編集結果の待機を解除する前にこのメソッドを呼び出します。
これは一方向の操作です。undie というメソッドはありません。
CompoundEdit.die()
boolean addEdit(UndoableEdit anEdit)
UndoableEdit
に UndoableEdit
を追加します。比較的小規模な複数の編集結果を合体して、より大規模な単一の編集結果を得たい場合は、このメソッドを使用します。たとえば、通常、テキストエディタでは、語や文に取り消し操作を適用することができます。テキストエディタでは、キーイベントの発生のたびに編集結果を生成することもできますが、これらの編集結果を合体して、ユーザーにより扱いやすい単位 (たとえば語単位) にすることもできます。このように複数の編集結果の合体が可能な場合は、UndoableEdit
が addEdit
をオーバーライドし、true を返します。
戻り値 true は、anEdit
がこの編集結果に組み込まれたことを表します。戻り値 false は、anEdit
をこの編集結果に組み込めないことを表します。
通常、レシーバはすでに UndoManager
(または、ほかの UndoableEditListener
) のキューに入っており、anEdit
をキューに順番に追加するのではなく、それを取り込む機会を与えられます。
true が返されると、それ以降 anEdit
は、canUndo
および canRedo
からは false を返し、undo
や redo
には適切な例外をスローします。
anEdit
- 追加される編集結果anEdit
を組み込むことができる場合は trueboolean replaceEdit(UndoableEdit anEdit)
UndoableEdit
で anEdit
が置き換えられる場合は、true を返します。このメソッドは、CompoundEdit
と UndoManager
によって使用されます。anEdit
を現在の編集結果に追加できない場合 (addEdit
が false を返す場合) に呼び出されます。
このメソッドを利用すると、ある編集結果で既存の編集結果を置き換えることができます。
このメッセージは、addEdit の対極にあります。つまり、anEdit は通常 UndoManager
(または、ほかの UndoableEditListener) のキューにすでに入っており、レシーバはそれと置き換えられる機会を与えられます。
true が返されると、それ以降 anEdit は、canUndo() および canRedo() からは false を返し、undo() や redo() には適切な例外をスローします。
anEdit
- 現在の編集結果を置き換える編集内容anEdit
が置き換えられる場合は trueboolean isSignificant()
UndoManager
は、次の重大な編集結果に対する小さな編集結果すべてを取り消しまたは再実行します。String getPresentationName()
String getUndoPresentationName()
getPresentationName
から派生します。String getRedoPresentationName()
getPresentationName
から派生します。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.