Просто создайте пользовательские CompoundEdits или даже отдельные правки.Посмотрите, например, правки, объединяющиеся в один http://java -sl.com / tip_merge_undo_edits.html
Я думаю, все, что вам нужно, это сохранить собственный стек событий и реализовать собственные UndoableEdits, которыеизменить модель (документ), но изменить состояние.Другими словами, вам нужна более сложная модель для сохранения состояния флажка и документа.Все сложные изменения модели (изменение состояния или изменение документа) должны быть представлены пользовательским классом UndoableEdit.Экземпляр класса может быть оболочкой для события редактирования Docuemnt или просто для пользовательского события.