У меня есть расположение в Google Web Toolkit с помощью UIBinder, включающего a TabLayoutPanel
. Это расположение имеет надмножество всех вкладок, которые будут использоваться моим приложением (думайте о нем как об администраторском представлении).
Я теперь должен создать новое расположение, с помощью подмножества этих вкладок (например, для обычных пользователей).
Действительно ли возможно импортировать панели из моего администраторского расположения в моем пользовательском расположении? Или, возможно, определите их всех в третьем файле и импорте от обеих разметок?
Определите содержимое каждой вкладки как отдельный шаблон 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 />
Вы определенно можете импортировать созданные вами представления, как шаблоны UIBinder, так и обычные виджеты
, в другой шаблон 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 в зависимости от уровней доступа.