我是GWT的新手,我不知道如何使用Activity,Place,EventBus和UIbinder。 我的應用程序的佈局是不服這樣的:GWT活動:如何使用活動,地點,事件總線和uibinder
窗口小部件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和Widget 3.0
如果URL是mydomain.com/myapp.html #home:內容2
應用必須顯示WIDGET1,插件2.0和Widget 3.1
如果URL是mydomain.com/myapp.html#settings
應用必須顯示WIDGET1和widget 2.1
我想知道賭注ween兩種變體:
- 創建爲2個ActivityManagers。一個來自widget1.navigation的活動,另一個來自widget2.navigation的活動。但是,如果widget2在widget 1之前創建,會發生什麼?
- 創建一個創建一對視圖的Activity。
代碼:例如
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();
..........
}
....
}
,這是什麼情況下,最好的做法是什麼?