Spec-Zone.ru › OpenJDK 21

Интерфейс 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.

Краткое описание методов

Модификатор и тип Метод Описание
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)
Возвращает true, если это UndoableEdit должно заменить anEdit.
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 вызывает его перед удалением изменений из очереди.

Обратите внимание, что это односторонняя операция. Метода «оживить» нет.

См. также:
  • 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, 2023, 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/21/docs/api/java.desktop/javax/swing/undo/UndoableEdit.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API