JavaTM Platform
Standard Ed. 6

javax.swing.undo
インタフェース UndoableEdit

既知の実装クラスの一覧:
AbstractDocument.DefaultDocumentEvent, AbstractDocument.ElementEdit, AbstractUndoableEdit, CompoundEdit, DefaultStyledDocument.AttributeUndoableEdit, StateEdit, UndoManager

public interface UndoableEdit

UndoableEdit は編集結果を表します。編集結果の取り消しや、いったん取り消した編集の再実行も可能です。

UndoableEditUndoManager とともに使用します。UndoableEditUndoableEditListener によって生成されるので、通常は UndoManager に追加されます。UndoableEditUndoManager に追加されると、次の処理が行われます (UndoManager 上でまだ end が呼び出されていないものと想定)。

  1. すでに編集結果を格納している UndoManager は、現在の編集結果に対して addEdit を呼び出します。このとき、新しい編集結果を引数に指定します。addEdit が true を返す場合は、新しい編集結果がすでに現在の編集結果に組み込まれたものとみなされます。したがって、この新しい編集結果は、現在の編集結果のリストには追加されません。addEdit を使って小規模な編集結果をより大規模な編集結果に組み込むことにより、一つの編集結果として扱うことができます。
  2. addEdit の戻り値が false である場合、新しい編集結果に対して replaceEdit が呼び出されます。このとき、引数として現在の編集結果が渡されます。これは、addEdit と逆の操作になります。新しい編集結果が replaceEdit から true を返す場合、この編集結果で現在の編集結果が置き換えられます。
UndoManager は、isSignificant を利用して、何個の編集結果を取り消せるか、または取り消した編集を再実行できるかを決定します。UndoManager は、小さな編集結果を取り消したり、再実行したりできます (isSignificant が false を返す場合)。たとえば、現在の編集結果を取り消して前回の重大な結果に戻したり、編集を再実行して重大な編集結果を得ることができます。複数の編集結果を単一の編集結果として扱うには、addEditreplaceEdit を使用します。isSignificant が false を返す場合は、多くの小さな編集結果を一度に取り消したり、再実行したりできます。同様の処理は、addEdit メソッドを使っても実行できます。


メソッドの概要
 boolean addEdit(UndoableEdit anEdit)
          この UndoableEditUndoableEdit を追加します。
 boolean canRedo()
          この編集内容を再実行できる場合は true を返します。
 boolean canUndo()
          この編集結果を取り消せる場合は true を返します。
 void die()
          編集結果に、これ以上使用できないことを通知します。
 String getPresentationName()
          変更ログなどで使用するのに適した、この編集結果の判読可能なローカライズ済みの記述を返します。
 String getRedoPresentationName()
          [再実行] メニュー項目などで使用するのに適した、この編集結果の再実行可能な形式の判読可能なローカライズ済みの説明を返します。
 String getUndoPresentationName()
          [元に戻す] メニュー項目などで使用するのに適した、この編集結果の取り消し可能な形式の判読可能なローカライズ済みの説明を返します。
 boolean isSignificant()
          この編集結果が重大であると見なされる場合に true を返します。
 void redo()
          編集内容を適用し直します。
 boolean replaceEdit(UndoableEdit anEdit)
          この UndoableEditanEdit が置き換えられる場合は、true を返します。
 void undo()
          編集結果を取り消します。
 

メソッドの詳細

undo

void undo()
          throws CannotUndoException
編集結果を取り消します。

例外:
CannotUndoException - この編集結果を取り消せない場合

canUndo

boolean canUndo()
この編集結果を取り消せる場合は true を返します。

戻り値:
この編集結果を取り消せる場合は true

redo

void redo()
          throws CannotRedoException
編集内容を適用し直します。

例外:
CannotRedoException - この編集内容を再実行できない場合

canRedo

boolean canRedo()
この編集内容を再実行できる場合は true を返します。

戻り値:
この編集内容を再実行できる場合は true

die

void die()
編集結果に、これ以上使用できないことを通知します。いったん終了したというマーク付けがされた UndoableEdit は、取り消すことも再実行することもできません。.

これは、元に戻す操作や再実行の操作が不可能になり、不要になった状態をクリーンアップするとき、たとえば、削除の取り消しができなくなったオブジェクトによって使用されるファイルリソースを削除する場合に使用するフックです。UndoManager は、編集結果の待機を解除する前にこのメソッドを呼び出します。

これは一方向の操作です。undie というメソッドはありません。

関連項目:
CompoundEdit.die()

addEdit

boolean addEdit(UndoableEdit anEdit)
この UndoableEditUndoableEdit を追加します。比較的小規模な複数の編集結果を合体して、より大規模な単一の編集結果を得たい場合は、このメソッドを使用します。たとえば、通常、テキストエディタでは、語や文に取り消し操作を適用することができます。テキストエディタでは、キーイベントの発生のたびに編集結果を生成することもできますが、これらの編集結果を合体して、ユーザーにより扱いやすい単位 (たとえば語単位) にすることもできます。このように複数の編集結果の合体が可能な場合は、UndoableEditaddEdit をオーバーライドし、true を返します。

戻り値 true は、anEdit がこの編集結果に組み込まれたことを表します。戻り値 false は、anEdit をこの編集結果に組み込めないことを表します。 

通常、レシーバはすでに UndoManager (または、ほかの UndoableEditListener) のキューに入っており、anEdit をキューに順番に追加するのではなく、それを取り込む機会を与えられます。

 

true が返されると、それ以降 anEdit は、canUndo および canRedo からは false を返し、undoredo には適切な例外をスローします。

パラメータ:
anEdit - 追加される編集結果
戻り値:
この編集結果に anEdit を組み込むことができる場合は true

replaceEdit

boolean replaceEdit(UndoableEdit anEdit)
この UndoableEditanEdit が置き換えられる場合は、true を返します。このメソッドは、CompoundEditUndoManager によって使用されます。anEdit を現在の編集結果に追加できない場合 (addEdit が false を返す場合) に呼び出されます。

このメソッドを利用すると、ある編集結果で既存の編集結果を置き換えることができます。 

このメッセージは、addEdit の対極にあります。 つまり、anEdit は通常 UndoManager (または、ほかの UndoableEditListener) のキューにすでに入っており、レシーバはそれと置き換えられる機会を与えられます。

 

true が返されると、それ以降 anEdit は、canUndo() および canRedo() からは false を返し、undo() や redo() には適切な例外をスローします。

パラメータ:
anEdit - 現在の編集結果を置き換える編集内容
戻り値:
この編集内容により anEdit が置き換えられる場合は true

isSignificant

boolean isSignificant()
この編集結果が重大であると見なされる場合に true を返します。重大な編集結果は、通常、メニュー項目やツールヒントとしてユーザーの画面に表示されます。UndoManager は、次の重大な編集結果に対する小さな編集結果すべてを取り消しまたは再実行します。.

戻り値:
この編集結果が重大である場合は true

getPresentationName

String getPresentationName()
変更ログなどで使用するのに適した、この編集結果の判読可能なローカライズ済みの記述を返します。

戻り値:
この編集結果の説明

getUndoPresentationName

String getUndoPresentationName()
[元に戻す] メニュー項目などで使用するのに適した、この編集結果の取り消し可能な形式の判読可能なローカライズ済みの説明を返します。これは一般に、getPresentationName から派生します。

戻り値:
この編集結果の取り消し可能な形式の説明

getRedoPresentationName

String getRedoPresentationName()
[再実行] メニュー項目などで使用するのに適した、この編集結果の再実行可能な形式の判読可能なローカライズ済みの説明を返します。これは一般に、getPresentationName から派生します。

戻り値:
この編集結果の再実行可能な形式の説明

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。