2010-03-18 3 views
0

Netbeans использует стандартный API UndoManager для реализации функциональности отмены. Но ни стандарт javax.swing.undo.UndoManager, ни org.openide.awt.UndoRedo.Manager не имеет способа отмечать сохраненные состояния и проверять измененное состояние. Тем не менее, если вы измените файл и нажмите «Отменить», файл будет помечен как немодифицированный. Как они это делают? Мне нужна такая же функциональность для моих (нетекстовых) редакторов, если приложение NetBeans RCP.Как редакторы Netbeans знают, что файл не изменяется после отмены?

ответ

1

Я понял это. CloneableEditSupport добавляет UndoableEdit, когда кто-то сохраняет файл. Это редактирование сигнализирует, когда кто-то отменяет сохраненное состояние или переводит его в сохраненное состояние. Также он переносит следующие изменения (вплоть до первого значительного) для перехвата повторов из сохраненного состояния и отмены в сохраненное состояние.

Этот трюк работает, только если все UndoableEdit s, которые вы генерируете, значительны.