我在使用UIBinder的Google Web Toolkit中有一个涉及TabLayoutPanel
的布局。此布局具有我的应用程序将使用的所有选项卡的超集(将其视为管理员视图)。
我现在需要使用这些选项卡的子集创建新布局(例如,对于普通用户)。
是否可以在我的用户布局中从我的管理布局导入面板?或者也许在第三个文件中定义它们,并从两个布局导入?
答案 0 :(得分:5)
您绝对可以将您编写的视图(包括UIBinder模板和常规Widget
)导入另一个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代码中的选项卡。
答案 1 :(得分:3)
将每个标签内容定义为单独的UiBinder模板。由于UiBinder类是Composites,您可以像任何其他小部件一样将它们添加到任何容器中。
您可以通过将每个UiBinder模板对象添加到TabPanel中的选项卡中来组装您的TabLayoutPanel,或者使用TabPanel定义另一个UiBinder模板并定义所有选项卡。
如果您使用UiBinder路线模板化TabLayoutPanel,请通过定义指向所有复合材料所在的包的新“命名空间”,将选项卡面板内容(您之前使用UiBinder定义的复合材料)导入UiBinder。然后,在UiBinder模板中将您的复合体称为命名空间:ClassName。
如果com.project.package
是您希望将所有复合项保存在单个选项卡中的位置,则在xmlns:g声明后不久将新的命名空间f定义为xmlns:f= 'com.project.package'
。
您在UiBinder中将个别复合引用为
<f:Composite1 />
<f:Composite2 />