Netbeans使用标准 UndoManager 用于实现撤消功能的API。但都不是标准 javax.swing.undo.UndoManager 也没有 org.openide.awt.UndoRedo.Manager 没有任何方法将状态标记为已保存并检查修改状态。尽管如此,如果更改文件并按“撤消”,文件将标记为未修改。他们是怎么做到的?如果是NetBeans RCP应用程序,我的(非文本)编辑器也需要相同的功能。
UndoManager
javax.swing.undo.UndoManager
org.openide.awt.UndoRedo.Manager
我知道了。这个 CloneableEditSupport 添加 UndoableEdit 当有人保存文件时。当有人从保存状态撤消或恢复到保存状态时,此编辑将发出信号。此外,它还包装下一个编辑(最多第一个有效的编辑),以截获保存状态的重做,并撤消到保存状态。
CloneableEditSupport
UndoableEdit
这个技巧只有在全部 不可编辑的 你产生的是重要的。
不可编辑的