Netbeans使用标准UndoManager
API来实现撤消功能。但标准javax.swing.undo.UndoManager
和org.openide.awt.UndoRedo.Manager
都没有任何方法可以将状态标记为已保存并检查已修改状态。但是,如果您更改文件并按下撤消,则文件将标记为未修改。他们是怎么做到的?如果是Netbeans RCP应用程序,我需要为我的(非文本)编辑器提供相同的功能。
答案 0 :(得分:1)
我想出来了。有人保存文件时,CloneableEditSupport
会添加UndoableEdit
。当有人从保存状态撤消或重做到保存状态时,此编辑会发出信号。它还包含下一个编辑(直到第一个重要的编辑)来拦截从已保存状态和撤消到已保存状态的重做。
只有当您生成的所有UndoableEdit
都很重要时,此技巧才有效。