2012-11-02 2 views
2

Я новичок в GWT, и мне интересно, как использовать Activity, Place, EventBus и UIbinder. Компоновка моего приложения является чем-л, как это:GWT Деятельность: Как использовать мероприятие, место, eventbus и uibinder

Widget 1:

<g:DockLayoutPanel ui:field="myPanel" unit='PX'> 
    <g:north size='60'> 
     <m:HeaderPanelImpl styleName='{res.style.panelBorder}' ui:field='headerPanel' /> 
    </g:north> 
    <g:south size='60'> 
     <g:HTMLPanel styleName='{res.style.panelBorder}' ui:field='footerPanel' /> 
    </g:south> 
    <g:center> 
     <g:SimpleLayoutPanel styleName='{res.style.panelBorder}' ui:field='centerPanel' /> 
    </g:center> 
</g:DockLayoutPanel> 

Здесь в «widget1.headerPanel» а есть навигации, которая контролирует какой виджет будет показано в «widget1.centerPanel». Виджеты, которые должны отображаться в «widget1.centerPanel», это «widget2.0» и «widget2.1».

Widget2.0

<g:DockLayoutPanel unit='PX'> 
    <g:north size='100'> 
     <g:HTMLPanel styleName='{res.style.panelBorder}'> 
      <g:Label>TopPanel</g:Label> 
     </g:HTMLPanel> 
    </g:north> 
    <g:west size='200'> 
     <g:HTMLPanel styleName='{res.style.panelBorder}'> 
      <g:Label>LeftPanel</g:Label> 
     </g:HTMLPanel> 
    </g:west> 
    <g:east size='200'> 
     <g:HTMLPanel styleName='{res.style.panelBorder}'> 
      <g:Label>RightPanel</g:Label> 
     </g:HTMLPanel> 
    </g:east> 
    <g:center> 
     <g:SimpleLayoutPanel styleName='{res.style.panelBorder}' ui:field='centerPanel' /> 
    </g:center> 
</g:DockLayoutPanel> 

Widget2.1

<g:HTMLPanel> 
    <g:Label>Settings</g:Label> 
</g:HTMLPanel> 

В «widget2.0.topPanel» У меня есть навигации, которая определяет, какие виджет будет отображаться в «widget2.0.centerPanel» Виджеты, которые должны отображаться в «widget2.centerPanel», это «widget3.0» и «widget3.1».

Widget3.0

<g:HTMLPanel> 
    <g:Label>Content 1</g:Label> 
</g:HTMLPanel> 

Widget3.1

<g:HTMLPanel> 
    <g:Label>Content 2</g:Label> 
</g:HTMLPanel> 

Мой вопрос заключается в том, как обращаться с "onPlaceChangeEvent"?

В примере, если URL-адрес является mydomain.com/myapp.html#home:content1
приложение должно показать виджет 1, виджет и виджет 2.0 3.0

Если URL-адрес является mydomain.com/myapp.html #home: Content2
приложение должно показать WIDGET1, виджет 2.0 и виджет 3.1

Если URL является mydomain.com/myapp.html#settings
приложение должно показать WIDGET1 и виджет 2,1

Мне интересно делать ставки ween два варианта:

  1. Чтобы создать для 2 ActivityManager. Один для действий из widget1.navigation и один для активности из widget2.navigation. Но что произойдет, если widget2 создается перед виджетами 1?
  2. Чтобы создать одно действие, которое создает пару просмотров.

Код: Пример

public class MonthlyViewActivity extends AbstractActivity implements MonthlyView.Presenter { 

    private Widget2_0 widget2_0; 
    private Widget3_0 widget3_0; 

    ...... 
    public void start(AcceptsOneWidget panel, EventBus eventBus) { 
     widget2_0 = new Widget2_0(); 
     widget3_0 = new Widget3_0(); 
    .......... 
    } 
    .... 
} 

Что является лучшей практикой для этого случая?

ответ

0

Если вы используете eclipse, создайте архитектуру MVP в своем проекте, она создаст много файлов, таких как активность, место, один интерфейс, один класс реализации и соответствующий класс ui xml. вам необходимо создать класс отображения активности и класс менеджера активности. и в вашем модуле lode установите место по умолчанию для вашего приложения. после слов на любом вызове событий перейдите к методу для любого места и укажите ссылку на свою страницу, и там проверьте, получает ли значение токена amd на основе этого значения, отображая ваши виджеты, что вы хотите отобразить.