У меня есть приложение, похожее на рабочий стол, которое имеет 2 контроллера: «Рабочий стол», который представляет значки на рабочем столе, и «Панель задач», которая представляет панель задач, на которой вы найдете кнопки, чтобы свернуть / восстановить уже открытые окна, как в MS Windows.
Проблема, с которой я сталкиваюсь в настоящее время, заключается в подходе «как мне отобразить окно». Фактически после двойного щелчка по значку я должен создать окно, и это может произойти как на контроллере рабочего стола, так и на контроллере панели задач (или, может быть, непосредственно в окне просмотра, поскольку их можно перетаскивать куда угодно). Однако, когда я создаю окно, на панели задач должна быть создана новая кнопка, чтобы минимизировать / восстановить его.
Из-за этого я подумал об обработке окна в контроллере панели задач, однако я не знаю, как связаться с контроллером панели задач из контроллера рабочего стола.
На данный момент у меня в голове 3 идеи:
- Контроллер рабочего стола напрямую добавляет кнопку в TaskbarView, но в этом случае я чувствую, что нарушаю паттерн MVC. Также мне нужно указать TaskbarView в видах рабочего стола.
- Контроллер рабочего стола после двойного щелчка значка запускает пользовательское событие на контроллере панели задач. В этом случае панель задач открывает окна и добавляет кнопку, этот подход довольно линейный , но Я не знаю как ссылаться на контроллер из другого контроллера (в данном случае из Рабочий стол на панель задач)
- Регистр Ext.Application для события itemdblclick на контроллере рабочего стола. Когда это событие вызывается, оно перенаправляет (или вызывает пользовательское событие) на контроллере панели задач. После этого все продолжается, как в пункте 2. Таким образом, я централизую функциональность маршрутизации (например, рельсы), однако может также случиться, что объект приложения станет действительно большим. Также я использую его как «гигантский контроллер» для маршрутизации всего, но на самом деле это не большая проблема, если подумать о рельсах, то это делает нечто подобное.
- Приложение не должно быть разделено на 2 контроллера (поэтому рабочий стол и панель задач должны быть по одному), и все будет хорошо. Я не думаю, что этот подход правильный.
Итак, мои вопросы:
- Какой подход я должен использовать: 1,2,3,4 (или указать, есть ли что-то другое)?
- К чему должно принадлежать окно: контроллер рабочего стола, контроллер панели задач, что-то еще?
Спасибо за любой ответ