Como os editores do NetBeans sabem que o arquivo não é modificado após a desfazer?
Pergunta
NetBeans usa padrão UndoManager
API para implementação da funcionalidade de desfazer. Mas nenhum padrão javax.swing.undo.UndoManager
nem org.openide.awt.UndoRedo.Manager
Não possui nenhum método para marcar os estados como salvo e verificar o status modificado. No entanto, se você alterar o arquivo e pressionar desfazer, o arquivo será marcado como não modificado. Como eles fizeram isso? Preciso da mesma funcionalidade para meus editores (não textos) se o aplicativo RCP do NetBeans.
Solução
Eu descobri isso. o CloneableEditSupport
adiciona UndoableEdit
Quando alguém salva o arquivo. Esta edição sinaliza quando alguém desce do estado salvo ou reduz para o estado salvo. Também envolve as próximas edições (até a primeira significativa) para interceptar reduzidas do estado salvo e UNDOS para o estado salvo.
Este truque só funciona se tudo UndoableEdit
S que você gera é significativo.