是否可以重用GWT UIBinder面板?
我在Google Web Toolkit中使用涉及TabLayoutPanel
的UIBinder进行布局。此布局具有将由我的应用程序使用的所有选项卡的超集(将其视为管理员视图)。是否可以重用GWT UIBinder面板?
我现在需要创建一个新的布局,使用这些选项卡的子集(例如,对于普通用户)。
是否可以在我的用户布局中从我的管理布局导入面板?或者也许可以将它们全部定义在第三个文件中,并从两个布局导入?
将每个标签内容定义为单独的UiBinder模板。由于UiBinder类是复合材料,您可以将它们添加到任何容器,就像其他任何小部件一样。
您可以在代码中组装TabLayoutPanel,方法是将每个UiBinder模板对象添加到TabPanel的选项卡中,或使用TabPanel和所有定义的选项卡定义另一个UiBinder模板。
如果您使用UiBinder路径模板化TabLayoutPanel,通过定义一个指向所有组合所在程序包的新“名称空间”,将标签面板内容(您之前使用UiBinder定义的复合材料)导入到UiBinder中。然后,在UiBinder模板中将您的组合作为名称空间:ClassName引用。
如果com.project.package
是您在其中保留所有您想要嵌入到单个选项卡中的组合,然后在xmlns:g声明后不久定义新的名称空间f为xmlns:f= 'com.project.package'
。
你指个人在复合材料的UiBinder的作为
<f:Composite1 />
<f:Composite2 />
您肯定可以将您已撰写的视图(包括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代码中显示/隐藏选项卡。
凡定义股票?我想继续用XML定义我的布局,因为我觉得这比在Java代码中定义它们更容易管理。 – pkaeding
根据上面的代码,股票应该在com.my.app.widgets包中。 – markovuksanovic
是的,我的问题更多的是“股票的UIBinder布局在哪里定义的?”不过,我认为@Ashwin Prabhu的回答可能会回答这个问题。 – pkaeding
谢谢,这看起来很有希望。我会给它一个镜头。 – pkaeding
这样做的窍门;谢谢! – pkaeding
很简单,不是吗? –