8

我在 Google Web Toolkit 中有一个使用 UIBinder 的布局,涉及TabLayoutPanel. 此布局具有我的应用程序将使用的所有选项卡的超集(将其视为管理视图)。

我现在需要创建一个新布局,使用这些选项卡的一个子集(例如,对于普通用户)。

是否可以在我的用户布局中从我的管理布局中导入面板?或者也许将它们全部定义在第三个文件中,并从两个布局中导入?

4

2 回答 2

5

您绝对可以将您编写的视图(包括 UIBinder 模板和常规Widgets)导入另一个 UIBinder 模板。

来自UIBinder 文档

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
    xmlns:g='urn:import:com.google.gwt.user.client.ui'
    xmlns:my='urn:import:com.my.app.widgets' >

  <g:HTMLPanel>
    <my:WeatherReport ui:field='weather'/>

    <my:Stocks ui:field='stocks'/>
    <my:CricketScores ui:field='scores' />
  </g:HTMLPanel>
</ui:UiBinder>

注意StocksCricketScores小部件是如何从您自己的包中导入的。

您不一定需要这样做只是为了根据用户权限显示/隐藏选项卡,您可以根据访问级别在 GWT 代码中显示/隐藏选项卡。

于 2010-06-24T04:04:14.010 回答
3

将每个选项卡内容定义为单独的 UiBinder 模板。由于 UiBinder 类是复合类,因此您可以将它们添加到任何容器中,就像任何其他小部件一样。

您可以通过将每个 UiBinder 模板对象添加到 TabPanel 中的选项卡中来在代码中组装 TabLayoutPanel,或者使用 TabPanel 和定义的所有选项卡定义另一个 UiBinder 模板。

如果您使用 UiBinder 路由来模板化 TabLayoutPanel,则通过定义一个指向所有组合所在的包的新“命名空间”,将选项卡面板内容(您之前使用 UiBinder 定义的组合)导入 UiBinder。然后,您在 UiBinder 模板中将您的组合称为 namespace:ClassName。

ifcom.project.package是您保留所有要嵌入单个选项卡中的复合材料的位置,然后 xmlns:f= 'com.project.package'在 xmlns:g 声明后立即定义一个新的命名空间 f 。

您将 UiBinder 中的单个复合材料称为

<f:Composite1 /> 
<f:Composite2 />
于 2010-06-24T07:46:25.257 回答