В прошлой части статьи (см. КГ №45) я рассказал, почему так важно уделять особое внимание программированию GUI, приведя в качестве примера стандартную задачу — разработку главного меню приложения. При более-менее серьезном взгляде на эту задачу выяснилось, что она не так-то проста. Элементы главного меню должны дублироваться элементами контекстного меню, панелей инструментов и, возможно, другими виджетами. У них у всех должно быть одно состояние, они должны вызывать одну и ту же функциональность. Главное меню должно быть построено таким образом, чтобы его можно было сериализовать. Кроме того, код главного меню должен быть максимально компактен, локализован и удобен для понимания и редактирования. Были спроектированы следующие классы. MyMenuSerializer реализует функциональность по сериализации состояния меню. Здесь мы будем рассматривать самый простой случай, когда файл с состоянием не может быть прочитан, и меню строится по default\'ной схеме. MyMenuBuilder строит меню, т.е. создает по очереди все элементы меню и добавляет их в класс MyMenu. А MyMenu их только содержит и отрисовывает. Элементам меню присвоено имя MyMenuItem. Каждый элемент меню содержит свое название, иконку, подсказку, состояние и метод вызова функциональности. >>> |