Fork me on GitHub

GWT + mvp4g: лэйауты, порталы, портлеты

[ EN - RU ]

Резюме

Эта библиотека расширяет возможности mvp4g путём добавления поддержки портлетов, лэйаутов и состояний загрузки данных.

Ссылки

Вступление

mvp4g logo

Несомненно, сейчас уже многие знают, что такое GWT. Многие знают, что за концепция — MVP. При этом, ещё немногие слышали о фреймворке mvp4g (облегчённая реализация MVP для GWT) — а я бы хотел, чтобы на него обратили внимание как можно больше GWT-программистов: фреймворк значительно упрощает написание MVP-кода и явно повышает его наглядность. По этой причине я делал о нём доклад на конференции ADDConf, видео которого выложено по ссылкам ниже. По этой же причине хочу продемонстрировать вам, как с его помощью можно относительно легко реализовать механизм порталов и портлетов: связывание страниц с лэйаутами и наполнение лэйаутов виджетами (без дрэг-н-дропа, извините).

Фреймворк сам по себе помогает писать приложения, в которых либо не происходит значительных изменений во внутренней части страницы, либо вообще сменяется только её центральная часть. Нельзя сказать, что фреймворк заточен на это — в ближайшем будущем эта ситуация может измениться или возможно это не так необходимо многим её пользователям, тем не менее на данный момент это так.

Однако в нашем проекте, в какой-то момент, накопилась критическая масса страниц с нескрываемо схожим расположением виджетов и мы с Виталием Гашок (который и познакомил меня с этим фреймворком) и Сергеем Дыниовским (верстальщиком, который разобрался в хитросплетениях виджетов GWT) решили, что пора эти вещи структурировать и генерализировать. Так родился набор лэйаутов, наречённых именами известных артистов, существующие страницы были распределены по этим лэйаутам и начался рефакторинг (который, конечно же, не только избавил нас от некоторых набивших оскомину костылей, но и добавил десяток новых багов). Кроме того, мы с удовольствием убрали повторяющиеся реализации виджетов, которые приходилось делать из-за их различного поведения на разных страницах. Квинтэссенция этого рефакторинга, полностью отделённая от логики проекта и тех багов, которые он от проекта получил в наследство, собственно, и описана в этой статье.

Закачки и исходный код

Исходный код библиотеки расположен на github: github.com/shamansir/gwt-mvp4g-layouting. Там же, в разделе Downloads, в виде jar-файла. Или просто нажмите ссылку. Чтобы использовать библиотеку в проекте, вам будет нужна подходящая версия mvp4g и gwt-log.

Где посмотреть?

Исходный код примера также расположен на github: github.com/shamansir/gwt-mvp4g-layouting-demo.

В исполняемом и кликабельном состоянии (что называется in action) пример доступен на GAE: gwt-mvp4g-layouting-demo.appspot.com. Это чисто технический пример, поэтому в нём нет никакого дизайна.

Документация на русском также расположена на github: shamansir.github.com/gwt-mvp4g-layouting-demo

А подробнее?

А ещё?

Состояние