Spec-Zone.ru › OpenJDK 8

Класс UndoManager

  • java.lang.Object
    • javax.swing.undo.AbstractUndoableEdit
      • javax.swing.undo.CompoundEdit
        • javax.swing.undo.UndoManager
Все реализованные интерфейсы:
Serializable, EventListener, UndoableEditListener, UndoableEdit

public class UndoManager
extends CompoundEdit
implements UndoableEditListener

UndoManager управляет списком UndoableEdits, предоставляя способ отмены или повтора соответствующих изменений. Существует два способа добавления изменений в UndoManager. Добавить изменение напрямую с помощью метода addEdit, или добавить UndoManager в компонент, поддерживающий UndoableEditListener. Следующие примеры создают UndoManager и добавляют его в качестве UndoableEditListener в JTextField:

UndoManager undoManager = new UndoManager();
   JTextField tf = ...;
   tf.getDocument().addUndoableEditListener(undoManager);

UndoManager сохраняет упорядоченный список изменений и индекс следующего изменения в этом списке. Индекс следующего изменения равен либо размеру текущего списка изменений, либо, если был вызван undo, соответствует индексу последнего значимого изменения, которое было отменено. При вызове undo все изменения от индекса следующего изменения до последнего значимого изменения отменяются в обратном порядке. Например, рассмотрим UndoManager, состоящий из следующих изменений: A b c D. Изменения с заглавной буквой в жирном шрифте являются значимыми, а те, что в нижнем регистре и курсивом, — незначимыми.

Рисунок 1

Как показано на рисунке 1, если D только что был добавлен, индекс следующего изменения будет 4. Вызов undo приводит к вызову undo для D и установлению индекса следующего изменения в 3 (изменение c), как показано на следующем рисунке.

Рисунок 2

Последнее значимое изменение — A, поэтому повторный вызов undo снова вызывает undo для c, b и A в этом порядке, устанавливая индекс следующего изменения в 0, как показано на следующем рисунке.

Рисунок 3

Вызов redo приводит к вызову redo для всех изменений между индексом следующего изменения и следующим значимым изменением (или концом списка). Продолжая предыдущий пример, если был вызван redo, redo будет вызван для A, b и c. Кроме того, индекс следующего изменения устанавливается в 3 (как показано на рисунке 2).

Добавление изменения в UndoManager приводит к удалению всех изменений от индекса следующего изменения до конца списка. Продолжая предыдущий пример, если добавляется новое изменение e, изменение D удаляется из списка (после вызова die для него). Если c не включено следующим изменением (c.addEdit(e) возвращает true), или заменено им (e.replaceEdit(c) возвращает true), новое изменение добавляется после c, как показано на следующем рисунке.

Рисунок 4

После вызова end для UndoManager используется поведение суперкласса для всех методов UndoableEdit. Подробнее о его поведении см. в CompoundEdit.

В отличие от остальной части Swing, этот класс потокобезопасен.

Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими выпусками Swing. Текущая поддержка сериализации подходит для кратковременного хранения или RMI между приложениями, использующими одну и ту же версию Swing. Начиная с версии 1.4, поддержка длительного хранения всех JavaBeans™ была добавлена в пакет java.beans. См. XMLEncoder.

Поля

Поля унаследованные от класса javax.swing.undo.CompoundEdit

edits

Поля унаследованные от класса javax.swing.undo.AbstractUndoableEdit

RedoName, UndoName

Конструкторы

Конструктор и описание
UndoManager()

Создаёт новый UndoManager.

Методы

Модификатор и тип Метод и описание
boolean addEdit(UndoableEdit anEdit)

Добавляет UndoableEdit в этот UndoManager, если это возможно.

boolean canRedo()

Возвращает true, если изменения могут быть повторены.

boolean canUndo()

Возвращает true, если изменения могут быть отменены.

boolean canUndoOrRedo()

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

void discardAllEdits()

Очищает менеджер отмены, отправляя каждому изменению сообщение die в процессе.

protected UndoableEdit editToBeRedone()

Возвращает следующее значимое изменение, которое должно быть повторено, если вызван redo.

protected UndoableEdit editToBeUndone()

Возвращает следующее значимое изменение, которое должно быть отменено, если вызван undo.

void end()

Преобразует этот UndoManager в обычный CompoundEdit.

int getLimit()

Возвращает максимальное количество изменений, которые хранит этот UndoManager.

String getRedoPresentationName()

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

String getUndoOrRedoPresentationName()

Удобный метод, возвращающий либо getUndoPresentationName либо getRedoPresentationName.

String getUndoPresentationName()

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

void redo()

Повторяет соответствующие изменения.

protected void redoTo(UndoableEdit edit)

Повторяет все изменения от индекса следующего изменения до edit, обновляя индекс следующего изменения соответствующим образом.

void setLimit(int l)

Устанавливает максимальное количество изменений, которые хранит этот UndoManager.

String toString()

Возвращает строку, отображающую и идентифицирующую свойства этого объекта.

protected void trimEdits(int from, int to)

Удаляет изменения в указанном диапазоне.

protected void trimForLimit()

Уменьшает количество ожидаемых изменений до диапазона размера ограничения, центрированного на индексе следующего изменения.

void undo()

Отменяет соответствующие изменения.

void undoableEditHappened(UndoableEditEvent e)

Метод UndoableEditListener.

void undoOrRedo()

Удобный метод, вызывающий один из undo или redo.

protected void undoTo(UndoableEdit edit)

Отменяет все изменения от индекса следующего изменения до edit, обновляя индекс следующего изменения соответствующим образом.

Методы унаследованные от класса javax.swing.undo.CompoundEdit

die, getPresentationName, isInProgress, isSignificant, lastEdit

Методы унаследованные от класса javax.swing.undo.AbstractUndoableEdit

replaceEdit

Методы унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Конструкторы

UndoManager

public UndoManager()

Создаёт новый объект UndoManager.

Методы

getLimit

public int getLimit()

Возвращает максимальное количество изменений, которое хранит этот UndoManager. Значение меньше 0 указывает на то, что количество изменений не ограничено.

Возвращает:
максимальное количество изменений, которое хранит этот UndoManager
См. также:
addEdit(javax.swing.undo.UndoableEdit), setLimit(int)

discardAllEdits

public void discardAllEdits()

Очищает менеджер отмены, отправляя каждому изменению сообщение die в процессе.

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

trimForLimit

protected void trimForLimit()

Уменьшает количество очередных изменений до диапазона размером limit, центрированного на индексе следующего изменения.

trimEdits

protected void trimEdits(int from,
                         int to)

Удаляет изменения в указанном диапазоне. Все изменения в заданном диапазоне (включительно, и в обратном порядке) будут иметь die вызванным на них и удаляются из списка изменений. Это не оказывает никакого влияния, если from > to.

Параметры:
from - минимальный индекс для удаления
to - максимальный индекс для удаления

setLimit

public void setLimit(int l)

Устанавливает максимальное количество изменений, которое хранит этот UndoManager. Значение меньше 0 указывает на то, что количество изменений не ограничено. Если изменения необходимо отбросить, чтобы уменьшить предел, die будет вызываться на них в обратном порядке их добавления. По умолчанию значение равно 100.

Параметры:
l - новый предел
Исключение:
RuntimeException - если этот UndoManager не в процессе (end был вызван)
См. также:
CompoundEdit.isInProgress(), end(), addEdit(javax.swing.undo.UndoableEdit), getLimit()

editToBeUndone

protected UndoableEdit editToBeUndone()

Возвращает следующее значимое изменение, которое будет отменено, если undo вызывается. Возвращает null если изменений для отмены нет.

Возвращает:
следующее значимое изменение для отмены

editToBeRedone

protected UndoableEdit editToBeRedone()

Возвращает следующее значимое изменение, которое будет повторно выполнено, если redo вызывается. Возвращает null если изменений для повторного выполнения нет.

Возвращает:
следующее значимое изменение для повторного выполнения

undoTo

protected void undoTo(UndoableEdit edit)
               throws CannotUndoException

Отменяет все изменения с индекса следующего изменения до edit, обновляя индекс следующего изменения должным образом.

Исключение:
CannotUndoException - если одно из изменений вызывает CannotUndoException

redoTo

protected void redoTo(UndoableEdit edit)
               throws CannotRedoException

Повторяет все изменения с индекса следующего изменения до edit, обновляя индекс следующего изменения должным образом.

Исключение:
CannotRedoException - если одно из изменений вызывает CannotRedoException

undoOrRedo

public void undoOrRedo()
                throws CannotRedoException,
                       CannotUndoException

Удобный метод, который вызывает один из undo или redo. Если какие-либо изменения были отменены (индекс следующего изменения меньше длины списка изменений), это вызывает redo, в противном случае вызывает undo.

Исключение:
CannotUndoException - если одно из изменений вызывает CannotUndoException
CannotRedoException - если одно из изменений вызывает CannotRedoException
См. также:
canUndoOrRedo(), getUndoOrRedoPresentationName()

canUndoOrRedo

public boolean canUndoOrRedo()

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

Возвращает:
true, если вызов canUndoOrRedo допустим
См. также:
undoOrRedo()

undo

public void undo()
          throws CannotUndoException

Отменяет соответствующие изменения. Если end был вызван, это вызывает суперкласс, в противном случае это вызывает undo на всех изменениях между индексом следующего изменения и последним значимым изменением, обновляя индекс следующего изменения должным образом.

Определено в:
undo в интерфейсе UndoableEdit
Переопределяет:
undo в классе CompoundEdit
Исключение:
CannotUndoException - если одно из изменений вызывает CannotUndoException или изменений для отмены нет
См. также:
CompoundEdit.end(), canUndo(), editToBeUndone()

canUndo

public boolean canUndo()

Возвращает true, если изменения могут быть отменены. Если end был вызван, это возвращает значение из super. В противном случае это возвращает true, если существуют какие-либо изменения для отмены (editToBeUndone возвращает не-null).

Определено в:
canUndo в интерфейсе UndoableEdit
Переопределяет:
canUndo в классе CompoundEdit
Возвращает:
true, если существуют изменения для отмены
См. также:
CompoundEdit.canUndo(), editToBeUndone()

redo

public void redo()
          throws CannotRedoException

Повторяет соответствующие изменения. Если end был вызван, это вызывает суперкласс. В противном случае это вызывает redo на всех изменениях между индексом следующего изменения и следующим значимым изменением, обновляя индекс следующего изменения должным образом.

Определено в:
redo в интерфейсе UndoableEdit
Переопределяет:
redo в классе CompoundEdit
Исключение:
CannotRedoException - если одно из изменений вызывает CannotRedoException или изменений для повторного выполнения нет
См. также:
CompoundEdit.end(), canRedo(), editToBeRedone()

canRedo

public boolean canRedo()

Возвращает true, если изменения могут быть повторены. Если end был вызван, это возвращает значение из super. В противном случае, это возвращает true, если существуют какие-либо изменения для повторного выполнения (editToBeRedone возвращает не-null).

Определено в:
canRedo в интерфейсе UndoableEdit
Переопределяет:
canRedo в классе CompoundEdit
Возвращает:
true, если существуют изменения для повторного выполнения
См. также:
CompoundEdit.canRedo(), editToBeRedone()

addEdit

public boolean addEdit(UndoableEdit anEdit)

Добавляет UndoableEdit в этот UndoManager, если это возможно. Это удаляет все изменения с индекса следующего изменения до конца списка изменений. Если end был вызван, изменение не добавляется и возвращается false . Если end не был вызван, это возвращает true.

Определено в:
addEdit в интерфейсе UndoableEdit
Переопределяет:
addEdit в классе CompoundEdit
Параметры:
anEdit - изменение для добавления
Возвращает:
true, если anEdit может быть включено в это изменение
См. также:
CompoundEdit.end(), CompoundEdit.addEdit(javax.swing.undo.UndoableEdit)

end

public void end()

Преобразует этот UndoManager в обычный CompoundEdit. Это удаляет все изменения, которые были отменены.

Переопределяет:
end в классе CompoundEdit
См. также:
CompoundEdit.end()

getUndoOrRedoPresentationName

public String getUndoOrRedoPresentationName()

Удобный метод, который возвращает либо getUndoPresentationName или getRedoPresentationName. Если индекс следующего изменения равен размеру списка изменений, возвращается getUndoPresentationName, в противном случае возвращается getRedoPresentationName.

Возвращает:
название отмены или повторения

getUndoPresentationName

public String getUndoPresentationName()

Возвращает описание отменяемого вида этого изменения. Если end был вызван, это вызывает супер. В противном случае, если существуют изменения для отмены, это возвращает значение из следующего значимого изменения, которое будет отменено. Если изменений для отмены нет и end не был вызван, это возвращает значение из свойства UIManager "AbstractUndoableEdit.undoText".

Определено в:
getUndoPresentationName в интерфейсе UndoableEdit
Переопределяет:
getUndoPresentationName в классе CompoundEdit
Возвращает:
описание отменяемого вида этого изменения
См. также:
undo(), CompoundEdit.getUndoPresentationName()

getRedoPresentationName

public String getRedoPresentationName()

Возвращает описание повторяемого вида этого изменения. Если end был вызван, это вызывает супер. В противном случае, если существуют изменения для повторного выполнения, это возвращает значение из следующего значимого изменения, которое будет повторено. Если изменений для повторного выполнения нет и end не был вызван, это возвращает значение из свойства UIManager "AbstractUndoableEdit.redoText".

Указано:
getRedoPresentationName в интерфейсе UndoableEdit
Переопределяет:
getRedoPresentationName в классе CompoundEdit
Возвращает:
описание обратимой формы этого изменения
См. также:
redo(), CompoundEdit.getRedoPresentationName()

undoableEditHappened

public void undoableEditHappened(UndoableEditEvent e)

Метод UndoableEditListener. Вызывает addEdit с e.getEdit().

Указано:
undoableEditHappened в интерфейсе UndoableEditListener
Параметры:
e - UndoableEditEvent, из которого будет добавлено UndoableEditEvent
См. также:
addEdit(javax.swing.undo.UndoableEdit)

toString

public String toString()

Возвращает строку, отображающую и идентифицирующую свойства этого объекта.

Переопределяет:
toString в классе CompoundEdit
Возвращает:
строковое представление этого объекта

© 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.

Spec-Zone.ru

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