Дублированиеэлемент GWT TabLayoutPanel - PullRequest
3 голосов
/ 02 сентября 2010

Я нашел панели вкладок GWT неуклюжими для стиля, который мне нужно сделать, поэтому я пытаюсь создать свою собственную, простую панель вкладок. В основном это элемент HTML5 <nav> для вкладок и элемент DeckPanel для отображения содержимого. Пусть использование разобраться с остальным с помощью CSS3.

GWT TabLayoutPanel имеет следующие «специальные» теги, которые он использует для определения содержимого вкладки:

<g:TabLayoutPanel>
    <g:tab>
        <g:header>Tab Title</g:header>
        <g:OtherWidget>Tab contents</g:OtherWidget>
    </g:tab>
</g:TabLayoutPanel>

Я имею в виду <g:tab> и <g:header>. Я вижу теги такого типа, используемые в разных местах, но я не знаю, как их создать. Глядя на источник TabLayoutPanel, я вижу, что у него есть метод add, который ожидает два виджета, и из этого он помещает один виджет (содержимое) в панель для отображения, а другой (заголовок) в экземпляр TabLayoutPanel.Tab , Но я понятия не имею, как продублировать такую ​​функциональность.

Ответы [ 2 ]

5 голосов
/ 08 марта 2011

В GWT 2.1 есть атрибут UiChild . Это довольно круто.

@UiChild public void addTabDef(Widget page, String title) {...}

Параметр title будет заполнен атрибутом с тем же именем в теге tabdef, например:

<v:tabdef title="Tab one"><g:Label>Page one.</g:Label></v:tabdef>

Редактировать: , чтобы быть понятным, tabdef нигде не определен как класс; желаемое поведение при разборе определяется атрибутом UiChild.

1 голос
/ 03 сентября 2010

Чтобы использовать обычные теги для вашего виджета, такие как <g:tab> и <g:header>, вам нужно создать собственный ElementParse и зарегистрировать его с помощью UiBinderWriter. К сожалению, пока нет простого способа сделать это без редактирования исходного кода для gwt.

Полезные ссылки:

Ссылка на вопрос о невозможности создать собственный ElementParser

TabLayoutPanelParser

...