Интерфейс UndoableEdit

Все известные реализующие классы:
AbstractDocument.DefaultDocumentEvent, AbstractDocument.ElementEdit, AbstractUndoableEdit, CompoundEdit, DefaultStyledDocument.AttributeUndoableEdit, StateEdit, UndoManager
public interface UndoableEdit

Объект UndoableEdit представляет собой изменение. Изменение можно отменить, а если оно уже отменено, то можно повторить.

UndoableEdit предназначен для использования с UndoManager. Поскольку UndoableEdit генерируются UndoableEditListener, они обычно добавляются в UndoManager. Когда UndoableEdit добавляется в UndoManager, происходит следующее (предполагая, что end не вызывался для UndoManager):

  1. Если UndoManager содержит изменения, он вызовет addEdit для текущего изменения, передав новое изменение в качестве аргумента. Если addEdit возвращает true, новое изменение предполагается включенным в текущее изменение, и новое изменение не будет добавлено в список текущих изменений. Изменения могут использовать addEdit в качестве способа объединения мелких изменений в одно большое изменение и рассматривать их как единое изменение.
  2. Если addEdit возвращает false, replaceEdit вызывается для нового изменения с текущим изменением в качестве аргумента. Это обратное addEdit — если новое изменение возвращает true из replaceEdit, новое изменение заменяет текущее.
UndoManager использует isSignificant для определения того, сколько изменений следует отменить или повторить. UndoManager отменит или повторит все незначительные изменения (isSignificant возвращает false) между текущим изменением и последним или следующим значимым изменением. addEdit и replaceEdit могут использоваться для объединения нескольких изменений в одно, а возвращение false из isSignificant позволяет отменить или повторить сразу множество мелких изменений. Аналогичную функциональность можно также выполнить с помощью метода addEdit.

Методы

Модификатор и типМетодОписание
booleanaddEdit​(UndoableEdit anEdit)

Добавляет UndoableEdit в этот UndoableEdit.

booleancanRedo()

Возвращает true, если это изменение можно повторить.

booleancanUndo()

Возвращает true, если это изменение можно отменить.

voiddie()

Сообщает изменению, что оно больше не должно использоваться.

StringgetPresentationName()

Возвращает локализованное, удобочитаемое описание этого изменения, подходящее для использования в журнале изменений, например.

StringgetRedoPresentationName()

Возвращает локализованное, удобочитаемое описание формы повторения этого изменения, подходящее для использования, например, в пункте меню «Повторить».

StringgetUndoPresentationName()

Возвращает локализованное, удобочитаемое описание формы отмены этого изменения, подходящее для использования, например, в пункте меню «Отменить».

booleanisSignificant()

Возвращает true, если это изменение считается значимым.

voidredo()

Повторно применяет изменение.

booleanreplaceEdit​(UndoableEdit anEdit)

Возвращает true, если это UndoableEdit должно заменить anEdit.

voidundo()

Отменить изменение.

Методы

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 помечен как удаленный, его больше нельзя отменить или повторить.

Это полезный крючок для очистки состояния, больше не нужного после того, как отмена или повторение больше невозможны — например, для удаления файловых ресурсов, используемых объектами, которые больше нельзя восстановить.

Обратите внимание, что это однонаправленная операция. Нет метода «un-die».

См. также:
CompoundEdit.die()

addEdit

boolean addEdit(UndoableEdit anEdit)

Добавляет UndoableEdit в этот UndoableEdit . Этот метод может использоваться для объединения мелких изменений в одно крупное составное изменение. Например, текстовые редакторы обычно позволяют отменять операции над словами или предложениями. Текстовый редактор может генерировать изменения при каждом событии нажатия клавиши, но разрешить объединение этих изменений в более удобную для пользователя единицу, например, в слово. В этом случае UndoableEdit переопределял бы addEdit для возвращения true, когда изменения можно объединить.

Возврат значения true указывает, что anEdit был включен в это изменение. Возврат значения false указывает, что anEdit не может быть включен в это изменение.

Обычно получатель уже находится в очереди UndoManager (или другого UndoableEditListener), и ему предоставляется возможность включить anEdit вместо того, чтобы позволить ему быть добавленным в очередь в свою очередь.

Если возвращается true, то в дальнейшем anEdit должен возвращать false из canUndo и canRedo, и должен вызывать соответствующее исключение при вызове undo или redo.

Параметры:
anEdit - добавляемое изменение
Возвращает:
true, если anEdit может быть включен в это изменение

replaceEdit

boolean replaceEdit(UndoableEdit anEdit)

Возвращает true, если это UndoableEdit должно заменить anEdit. Этот метод используется CompoundEdit и UndoManager; он вызывается, если anEdit не смог быть добавлен в текущее изменение (addEdit возвращает false).

Этот метод предоставляет способ замены существующего изменения новым.

Это сообщение противоположно addEdit — anEdit обычно уже помещен в очередь в UndoManager (или другом UndoableEditListener), и получателю предоставляется возможность заменить его.

Если возвращается true, то в дальнейшем anEdit должен возвращать false из canUndo() и canRedo(), и должен вызывать соответствующее исключение при вызове undo() или redo().

Параметры:
anEdit - изменение, заменяющее текущее изменение
Возвращает:
true, если это изменение должно заменить anEdit

isSignificant

boolean isSignificant()

Возвращает true, если это изменение считается значимым. Значимое изменение — это изменение, которое обычно должно быть представлено пользователю, например, в пункте меню или всплывающей подсказке. UndoManager отменит или повторит все незначительные изменения до следующего значимого изменения.

Возвращает:
true, если это изменение значимое

getPresentationName

String getPresentationName()

Возвращает локализованное, удобочитаемое описание этого изменения, подходящее для использования в журнале изменений, например.

Возвращает:
описание этого изменения

getUndoPresentationName

String getUndoPresentationName()

Возвращает локализованное, удобочитаемое описание формы отмены этого изменения, подходящее для использования, например, в пункте меню «Отменить». Обычно это значение выводится из getPresentationName.

Возвращает:
описание формы отмены этого изменения

getRedoPresentationName

String getRedoPresentationName()

Возвращает локализованное, удобочитаемое описание формы повторения этого изменения, подходящее для использования, например, в пункте меню «Повторить». Обычно это значение выводится из getPresentationName.

Возвращает:
описание формы повторения этого изменения

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/undo/UndoableEdit.html

Spec-Zone .ru
спецификации, руководства, описания, API