GWT活动:如何使用活动,场所,eventbus和uibinder

时间:2012-11-02 11:04:31

标签: gwt uibinder event-bus

我是GWT的新手,我想知道如何使用Activity,Place,EventBus和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和小部件3.0

如果网址是mydomain.com/myapp.html#home:content2
该应用必须显示widget1,widget 2.0和widget 3.1

如果网址是mydomain.com/myapp.html#settings
该应用必须显示widget1和widget 2.1

我想知道两种变体:

  1. 创建2个ActivityManagers。一个用于widget1.navigation中的活动,另一个用于来自widget2.navigation的活动。但是如果在widget 1之前创建widget2会发生什么?
  2. 创建一个可创建多个视图的活动。
  3. 代码:例如

    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();
        ..........
        }
        .... 
    }
    

    此案例的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

如果您正在使用eclipse在您的项目中创建MVP架构,它将创建许多文件,如活动,地点,一个接口,一个实现类和相应的ui xml类。您必须创建活动映射器和活动历史记录管理器类。并在您的on lode模块中为您的应用程序设置一个默认位置。在任何事件调用的单词后,转到任何地方的方法并提供您的页面的链接,并检查获取令牌amd的值基于该值显示您的小部件您想要显示的内容。