モジュール java.desktop
パッケージ 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を使って小規模な編集結果をより大規模な編集結果に組み込むことにより、1つの編集結果として扱うことができます。
  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から派生します。
      戻り値:
      この編集結果の再実行可能な形式の説明