是否可以重用GWT UIBinder面板?

pka*_*ing 8 gwt code-reuse uibinder

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

我现在需要使用这些选项卡的子集(例如,对于常规用户)来创建新布局.

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

Jas*_*all 5

您绝对可以将您编写的视图(UIBinder模板和常规模板)Widget导入另一个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>
Run Code Online (Sandbox Code Playgroud)

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

您不一定需要根据用户权限显示/隐藏选项卡,您可以根据访问级别在GWT代码中显示/隐藏选项卡.


Ash*_*bhu 3

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

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

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

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

您将 UiBinder 中的各个组合称为

<f:Composite1 /> 
<f:Composite2 />
Run Code Online (Sandbox Code Playgroud)