Можно ли повторно использовать панели GWT UIBinder? - PullRequest
8 голосов
/ 24 июня 2010

У меня есть макет в Google Web Toolkit с использованием UIBinder, включающий TabLayoutPanel.Этот макет содержит расширенный набор всех вкладок, которые будут использоваться моим приложением (представьте его как представление администратора).

Теперь мне нужно создать новый макет, используя подмножество этих вкладок (например, дляпостоянные пользователи).

Можно ли импортировать панели из моего макета администратора в моем пользовательском макете?Или, возможно, определить их все в третьем файле и импортировать из обоих макетов?

Ответы [ 2 ]

5 голосов
/ 24 июня 2010

Вы, безусловно, можете импортировать созданные вами представления, как шаблоны 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 в зависимости от уровня доступа.

3 голосов
/ 24 июня 2010

Определите содержимое каждой вкладки как отдельный шаблон UiBinder. Поскольку классы UiBinder являются композитами, вы можете добавить их в любой контейнер, как и любой другой виджет.

Вы можете собрать вашу TabLayoutPanel в коде, добавив каждый хранимый объект UiBinder во вкладку в TabPanel или определив другой шаблон UiBinder с TabPanel и всеми определенными вкладками.

Если вы идете по маршруту UiBinder для создания шаблона TabLayoutPanel, импортируйте содержимое панели вкладок (Композиты, которые вы определили ранее с помощью UiBinder) в UiBinder, определив новое «пространство имен», указывающее на пакет, в котором находятся все ваши композиты. Затем вы называете свои композиты пространством имен: ClassName в шаблоне UiBinder.

, если com.project.package - это место, где вы храните все свои композиты, которые вы хотите встроить в отдельные вкладки, тогда определите новое пространство имен f как xmlns:f= 'com.project.package' вскоре после объявления xmlns: g.

Вы ссылаетесь на отдельные композиты в вашем UiBinder как

<f:Composite1 /> 
<f:Composite2 />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...