是否可以重用 GWT UIBinder 面板?

发布于 2024-09-06 19:13:35 字数 215 浏览 7 评论 0原文

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

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

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

I have a layout in Google Web Toolkit using UIBinder involving a TabLayoutPanel. This layout has the superset of all tabs that will be used by my app (think of it as an admin view).

I now need to create a new layout, using a subset of these tabs (eg, for regular users).

Is it possible to import panels from my admin layout in my user layout? Or perhaps define them all in a third file, and import from both layouts?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

月竹挽风 2024-09-13 19:13:35

您绝对可以将您编写的视图(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>

请注意 Stocks 和 CricketScores 小部件是从您自己的包中导入的。

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

You can definitely import views you've written, both UIBinder templates and regular Widgets, into another UIBinder template.

From the UIBinder docs:

<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>

Notice how the Stocks and CricketScores widgets are imported from your own package.

You won't necessarily need to do this just to show/hide tabs based on user privileges, you can just show/hide your tabs in your GWT code based on access levels.

病女 2024-09-13 19:13:35

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

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

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

如果 com.project.package 是您保存要嵌入到各个选项卡中的所有组合的位置,则将新的命名空间 f 定义为 xmlns:f= 'com.project.package' 在 xmlns:g 声明之后不久。

您将 UiBinder 中的各个组合称为

<f:Composite1 /> 
<f:Composite2 />

Define each tab content as a separate UiBinder template. Since UiBinder classes are Composites you can add them to any container just like any other widget.

You can assemble your TabLayoutPanel in code by adding each UiBinder templeted object into a tab in the TabPanel or define another UiBinder Template with the TabPanel and all the Tabs defined.

If you go the UiBinder route for templating the TabLayoutPanel, import the tab panel contents (Composites you defined earlier using UiBinder) into the UiBinder by defining a new 'namespace' pointing to the package where all your composites reside. You then refer to your composites as namespace:ClassName in the UiBinder template.

if com.project.package is where you keep all your composites which you want embeded in individual tabs then define a new namespace f as xmlns:f= 'com.project.package' soon after xmlns:g declaration.

You refer to individual composites in your UiBinder as

<f:Composite1 /> 
<f:Composite2 />
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文