Вложенные конечные автоматы для контроллеров.Разделение зрения от контроллеров (MVC или аналогичных).Это всегда работало для меня.
Обновление: у меня было некоторое время, чтобы прочитать ваши ссылки.Немного предыстории: я изучаю и работаю над этими типами редакторов в течение 25 лет.Мой совет, вложенные FSM как контроллеры, MVC или аналогичные, можно назвать супер-шаблоном проектирования, потому что вы можете видеть, как эти компоненты проектирования появлялись много раз в течение многих лет в разных конструкциях, каждый раз используя разные имена для разных компонентов.Абсурдность патента Microsoft заключается в том, что идеи очень старые, только с новыми именами.Если вы посмотрите на другую предоставленную вами ссылку, вы увидите, что есть много общего (EditPart == Behavior == Finite State Machine).
Таким образом, супер шаблон выглядит следующим образом: вложенные конечные автоматы,как в диаграмме состояния Харел.Суперсостояния обрабатывают общее поведение во многих подсостояниях;подсостояния обрабатывают более конкретные поведения.Супер-состояние может быть реализовано как супер-класс или как отдельный экземпляр объекта.В любом случае, в общем приложении абстрактно у вас есть текущее состояние, которое является вложенным состоянием.Если подсостояние не может обработать входное сообщение, оно переходит в супер-состояние (либо просто с использованием наследования, либо путем передачи сообщения другому объекту в стеке).
Переходы состояний инициируются входными сообщениями.Входное сообщение может быть действием пользователя над украшением (а украшение может быть украшено именем подсостояния, которое нужно вызвать).Или это может быть событие клавиатуры.Может появиться входное сообщение, называемое командой.
Каждое состояние будет иметь метод входа, посредством которого он выполняет инициализацию, и метод выхода, посредством которого он отменяет любые не зафиксированные изменения.Изменения обычно фиксируются с использованием транзакций, а стек зафиксированных транзакций формирует стек отмены.