2010-06-24 4 views
8

У меня есть макет в Google Web Toolkit с использованием UIBinder с использованием TabLayoutPanel. В этом макете есть надмножество всех вкладок, которые будут использоваться моим приложением (подумайте об этом как о представлении администратора).Можно ли повторно использовать панели GWT UIBinder?

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

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

ответ

3

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

Вы можете собрать свою вкладку 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 /> 
+0

Спасибо, это выглядит многообещающе. Я сделаю это. – pkaeding

+0

Это сделало трюк; благодаря! – pkaeding

+0

довольно простой, не так ли? –

5

Вы можете определенно импортировать созданные вами просмотры, как шаблоны UIBinder, так и обычные Widget s, в другой шаблон UIBinder.

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

Обратите внимание, как Stocks и CricketScores виджеты импортируются из собственного пакета.

Вам не обязательно делать это просто, чтобы отображать/скрывать вкладки на основе прав пользователя, вы можете просто отображать/скрывать свои вкладки в своем коде GWT на основе уровней доступа.

+0

Где запасы определены? Я хочу продолжить определение своих макетов в XML, так как считаю, что это будет более управляемым, чем определение их в Java-коде. – pkaeding

+0

Согласно приведенному выше коду, акции должны быть в пакете com.my.app.widgets. – markovuksanovic

+0

Да, мой вопрос был более похож на: «Где находится UIBinder-макет для акций?» Я думаю, что ответ Ашвина Прабху может ответить на этот вопрос. – pkaeding

Смежные вопросы