Spec-Zone.ru › OpenJDK 17

Интерфейс UndoableEdit

Все известные реализующие классы:
AbstractDocument.DefaultDocumentEvent, AbstractDocument.ElementEdit, AbstractUndoableEdit, CompoundEdit, DefaultStyledDocument.AttributeUndoableEdit, StateEdit, UndoManager
public interface 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 вызывает это перед удалением редактирований из очереди.

Обратите внимание, что это однонаправленная операция. Нет метода «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, 2021, 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/17/docs/api/java.desktop/javax/swing/undo/UndoableEdit.html

Spec-Zone.ru

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