GWT 2.1 MVP (Действия / Места) и табулированные дисплеи - PullRequest
6 голосов
/ 02 февраля 2011

В существующем проекте мы довольно хорошо используем MVP (созданный вручную). Это понято и делает в основном то, что нам нужно. Для нового проекта я использую MVP-фреймворк, встроенный в GWT 2.1 (Действия и Места).

Наши приложения в основном представляют собой вкладки, каждая вкладка которых связана с одним виджетом представления.

Я попытался безуспешно использовать Действия и Места для этого типа отображения. Частично проблема заключается в том, что пример статьи Hello World в конечном итоге оставил меня в погоне за хвостом, слишком много новых понятий для моего мозга, чтобы его переварить.

Пример ИМО Hello World не является достаточным введением и не рассматривает многие из реальных случаев использования. Я надеялся, что кто-нибудь может указать мне направление на примеры приложений, которые используют MVP для вкладок. Томас Бройер имеет несколько отличных постов в своем блоге, но они все еще оставляют меня немного озадаченным.

Ранее я использовал AppController для обработки изменений вкладок и отдельных докладчиков для каждой вкладки. Новая архитектура в GWT 2.1 оставляет меня более запутанным, чем следовало бы.

Ответы [ 3 ]

1 голос
/ 04 февраля 2011

Я задавал подобный вопрос здесь GWT 2.1 Пример размещения без действий , но на самом деле он также отвечает на этот вопрос.

1 голос
/ 24 апреля 2013

Я также столкнулся с этой проблемой, но сумел заставить ее работать, используя одно действие для каждой вкладки, а каждое действие - для представления компонентов вкладки (или более).

Относительно решения, найденного Райли ЛаркВместо этого я выбрал шаблон Decorator и, таким образом, сохранил исходную панель TabbedPanel.Как ?Каждое действие получает инъекцию (GIN) презентатора, который содержит декоратор для TabbedPanel.

Так, например:

  • Tab1Activity получает инъекцию с Tab1Presenter, который, в свою очередь,, вводится с помощью Tab1Decorator, который украшает TabbedPanel с помощью Tab1ContentPanel (эта панель содержит все виджеты, отображаемые на вкладке Tab1)

  • Tab2Activity вводится с помощью Tab2Presenter, который, в свою очередь,вводится с помощью Tab2Decorator, который украшает ту же панель TabbedPanel с панелью Tab2ContentPanel (эта панель содержит все виджеты, отображаемые на вкладке Tab2)

Кажется сложной, но после создания первого декоратора онадействительно окупился, и я смог сохранить TabbedPanel и воспользоваться преимуществами управления историей URL, скрытого в фреймворке.

1 голос
/ 02 февраля 2011

Я использую инфраструктуру gwt Activities / Places для отображения вкладок, и она отлично работает, НО: я решил отказаться от используемого нами виджета TabLayoutPanel и создать свою собственную панель навигации (которая выглядит как вкладки) ипанель содержимого.Эффект тот же - он выглядит идентично - но реализация намного чище.

Я думаю, что проблема заключается в попытке смешать действия / места, которые имеют свое собственное представление о навигации, с TabPanel,у которого есть другая идея навигации.Сначала я попытался объединить их, переопределив поведение кнопок вкладок, чтобы вызвать PlaceController, который, в свою очередь, переключал вкладки, но ... это было грязно.С независимой панелью навигации / контента PlaceController может делать все так, как ему хочется.Вам просто нужно вручную переключать представления, вместо того чтобы позволить TabPanel сделать это за вас.

...