如何提取UiBinder文件的常用部分?

时间:2014-08-08 06:13:59

标签: java gwt

让我们假设我们有两个用UiBinder构建的页面。 UiBinder文件可以类似于:

<g:HTMLPanel>
    <g:FlowPanel styleName="{resourceBundle.loginCss.login}">
        <g:FlowPanel styleName="{resourceBundle.loginCss.majorLoginBox}">
            <g:FlowPanel styleName="{resourceBundle.loginCss.loginTop}"/>
            <g:FlowPanel styleName="{resourceBundle.loginCss.loginContent}">
                <g:LazyPanel ui:field="inputPanel">
                    <g:FlowPanel styleName="{resourceBundle.loginCss.loginForm}" addStyleNames="{style.resetPasswordForm}">
                        <g:Label text="{localization.forgotpassword_form_header}"
                                 styleName="{resourceBundle.loginCss.loginFormHeader}"/>
                        <g:Label text="{localization.login_username}"/>
                        <g:TextBox ui:field="username" inputMaxLength="64"/>
                        <g:Label ui:field="validationError" styleName="{resourceBundle.css.errorText}"/>
                        <g:Anchor ui:field="sendButton" text="{localization.forgotpassword_send}"
                                  styleName="{resourceBundle.loginCss.loginButton}"/>
                    </g:FlowPanel>
                </g:LazyPanel>
                <g:LazyPanel ui:field="messagePanel" visible="false">
                    <g:Label ui:field="messageLabel"/>
                </g:LazyPanel>
            </g:FlowPanel>
        </g:FlowPanel>
    </g:FlowPanel>
</g:HTMLPanel>
     

一般来说,那里的东西并不重要,只是一个例子。当然,有两个java类对应于这些UiBinder文件。因此,很明显,从java类中我可以将常用部分提取到一些抽象类中。

是否可以为UiBinder文件执行此操作?怎么样?

1 个答案:

答案 0 :(得分:1)

公共部分可以是具有自己的UiBinder文件的Composite widget。然后,您只需将此窗口小部件插入其他UiBinder文件即可。例如,如果w指向您的小部件库:

<g:HTMLPanel>
    ...
    <w:MyWidget>
    ...
</g:HTMLPanel>