public interface UndoableEdit
UndoableEdit
表示一个编辑。该编辑可被撤消,如果已撤消,该编辑可恢复。
设计 UndoableEdit
与 UndoManager
一起使用。由于 UndoableEdit
是由 UndoableEditListener
生成的,所以通常将它们添加到 UndoManager
。当将 UndoableEdit
添加到 UndoManager
时,会发生以下事件(假定没有在 UndoManager
上调用 end
):
UndoManager
包含编辑,则它将在当前编辑上调用 addEdit
,传入新的编辑作为参数。如果 addEdit
返回 true,则新的编辑被视为已合并到当前编辑中,并且不会将新的编辑添加到当前编辑列表。编辑可以使用 addEdit
将多个较小编辑合并到较大编辑中,并且将合并后的编辑视为单个编辑。 addEdit
返回 false,则以传入的当前编辑对新的编辑调用 replaceEdit
。这与 addEdit
截然相反 如果新的编辑从 replaceEdit
返回 true,则新的编辑将替换当前编辑。 UndoManager
使用
isSignificant
确定应该撤消或恢复多少编辑。
UndoManager
将撤消或恢复当前编辑与最后一个或下一个有效编辑之间的所有无效编辑(
isSignificant
返回 false)。
addEdit
和
replaceEdit
可用于将多个编辑视为单个编辑,从
isSignificant
返回 false 允许 treating 可用于一次撤消或恢复多个较小编辑。也可以使用
addEdit
方法完成类似的功能。
方法摘要 | |
---|---|
boolean |
addEdit(UndoableEdit anEdit) 将 UndoableEdit 添加到此 UndoableEdit 。 |
boolean |
canRedo() 如果可以恢复此编辑,则返回 true。 |
boolean |
canUndo() 如果可以撤消此编辑,则返回 true。 |
void |
die() 通知某个编辑不应再使用它。 |
String |
getPresentationName() 返回此编辑的本地化可读描述,例如,适于在更改日志中使用。 |
String |
getRedoPresentationName() 返回此编辑可恢复形式的本地化可读描述,例如,适于用作 “Redo” 菜单项。 |
String |
getUndoPresentationName() 返回此编辑可撤消形式的本地化可读描述,例如,适于用作 “Undo” 菜单项。 |
boolean |
isSignificant() 如果认为此编辑有效,则返回 true。 |
void |
redo() 重新应用编辑。 |
boolean |
replaceEdit(UndoableEdit anEdit) 如果此 UndoableEdit 应替换 anEdit ,则返回 true。 |
void |
undo() 撤消编辑。 |
方法详细信息 |
---|
void undo() throws CannotUndoException
CannotUndoException
- 如果不能撤消此编辑
boolean canUndo()
void redo() throws CannotRedoException
CannotRedoException
- 如果不能恢复此编辑
boolean canRedo()
void die()
UndoableEdit
标记为停用,则不能再对它进行撤消或恢复。
对于不可能撤消或恢复时清除不再需要的状态而言,这是一个有用的钩子 (hook)。例如,删除不能再恢复的对象所使用的文件资源。UndoManager
在其离开编辑队列之前调用它。
注意,这是一个单向操作。不存在 "un-die" 方法。
CompoundEdit.die()
boolean addEdit(UndoableEdit anEdit)
UndoableEdit
添加到此
UndoableEdit
。此方法可用于将多个较小编辑合并为一个较大的复合编辑。例如,文本编辑器通常允许对单词或句子应用撤消操作。文本编辑器可以选择在每个关键事件上生成编辑,但允许将这些编辑合并为一个更加用户友好的单元,比如一个单词。在这种情况下,当可以合并编辑时,
UndoableEdit
将重写
addEdit
以返回 true。
返回值为 true 指示已将 anEdit
合并到此编辑。返回值为 false 指示不能将 anEdit
合并到此编辑。
通常,接收者已经在 UndoManager
(或者其他 UndoableEditListener
)队列中,并且可以合并 anEdit
,而不是将它按顺序添加到队列中。
如果返回 true,则从现在开始,anEdit
必须从 canUndo
和 canRedo
返回 false,并且必须对 undo
或 redo
抛出适当的异常。
anEdit
- 要添加的编辑
anEdit
合并到此编辑,则返回 true
boolean replaceEdit(UndoableEdit anEdit)
UndoableEdit
应替换
anEdit
,则返回 true。此方法由
CompoundEdit
和
UndoManager
使用;如果不能将
anEdit
添加到当前编辑(
addEdit
返回 false),则调用此方法。
此方法提供了某个编辑替换现有编辑的方法。
此消息与 addEdit 相反 -- anEdit 通常已经在 UndoManager
(或者其他 UndoableEditListener)的队列中,并且接收者可以替换它。
如果返回 true,则从现在开始,anEdit 必须从 canUndo() 和 canRedo() 返回 false,并且必须对 undo() 或 redo() 抛出适当的异常。
anEdit
- 替换当前编辑的编辑
anEdit
,则返回 true
boolean isSignificant()
UndoManager
将为下一个有效编辑撤消或恢复所有无效编辑。
String getPresentationName()
String getUndoPresentationName()
getPresentationName
。
String getRedoPresentationName()
getPresentationName
。