我在 Google Web Toolkit 中有一个使用 UIBinder 的布局,涉及TabLayoutPanel
. 此布局具有我的应用程序将使用的所有选项卡的超集(将其视为管理视图)。
我现在需要创建一个新布局,使用这些选项卡的一个子集(例如,对于普通用户)。
是否可以在我的用户布局中从我的管理布局中导入面板?或者也许将它们全部定义在第三个文件中,并从两个布局中导入?
我在 Google Web Toolkit 中有一个使用 UIBinder 的布局,涉及TabLayoutPanel
. 此布局具有我的应用程序将使用的所有选项卡的超集(将其视为管理视图)。
我现在需要创建一个新布局,使用这些选项卡的一个子集(例如,对于普通用户)。
是否可以在我的用户布局中从我的管理布局中导入面板?或者也许将它们全部定义在第三个文件中,并从两个布局中导入?
您绝对可以将您编写的视图(包括 UIBinder 模板和常规Widget
s)导入另一个 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>
注意Stocks
和CricketScores
小部件是如何从您自己的包中导入的。
您不一定需要这样做只是为了根据用户权限显示/隐藏选项卡,您可以根据访问级别在 GWT 代码中显示/隐藏选项卡。
将每个选项卡内容定义为单独的 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 />