Я новичок в 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 два варианта:
- Чтобы создать для 2 ActivityManager. Один для действий из widget1.navigation и один для активности из widget2.navigation. Но что произойдет, если widget2 создается перед виджетами 1?
- Чтобы создать одно действие, которое создает пару просмотров.
Код: Пример
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();
..........
}
....
}
Что является лучшей практикой для этого случая?