2015-01-28 3 views
0

Я хотел бы подкласса (продлить) Modal widget from GWTBootstrap3, чтобы создать пользовательский модальный виджет, который можно использовать повторно в моем приложении. Я не знаю, как это сделать при использовании UiBinder. Я могу сделать это только в Java-коде, создав ModalHeader, ModalBody и ModalFooter и добавив их с помощью метода add (Widget).Подкласс составного виджета GWT

Но как я могу сделать то же самое с использованием UiBinder для моего подкласса?

ответ

0

Вы можете использовать свой настраиваемый виджет в коде UiBinder. Это то, что вы делаете? Просто импортируйте пакет, в котором ваш пользовательский виджет находится в отдельном пространстве имен. Скажем виджет WeatherReport находится в пакете com.my.app.widgets и пространство имен вы хотите использовать мой, импорт выглядит следующим образом:

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

Теперь вы можете добавить WeatherReport объекты UiBinder кода, как это:

<g:HTMLPanel> 
    <my:WeatherReport ui:field="weather" /> 
</g:HTMLPanel> 

ВИДЕТЬ official GWT documentation для получения дополнительной информации.

Использование ModalHeader, ModalBody и так далее в UiBinder работает точно так же. Импортируйте соответствующий пакет и используйте компоненты, вот простой пример:

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> 
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
     xmlns:g="urn:import:com.google.gwt.user.client.ui" 
     xmlns:b="urn:import:org.gwtbootstrap3.client.ui"> 
     <b:ModalBody> 
       <b:Row> 
         <b:Column size="MD_12"> 
           <b:Input ui:field="passwordInput" type="PASSWORD" /> 
         </b:Column> 
       </b:Row> 
       <b:ModalFooter"> 
         <b:Button ui:field="saveButton" text="Save" type="PRIMARY" /> 
         <b:Button ui:field="cancelButton" text="Cancel" /> 
       </b:ModalFooter> 
     </b:ModalBody> 
</ui:UiBinder> 
+0

Да, это на правильном пути для того, чего я надеюсь достичь. Но как будет выглядеть версия java версии WheaterReport, распространит ли она Modal? Кроме того, не должен находиться внутри , правильно? –

+0

Java-часть компоненты _WeatherReport_ выглядит следующим образом: 'общественный класс WeatherReport расширяет ModalBody { частные статический WeatherReportUiBinder UiBinder = GWT .create (WeatherReportUiBinder.class); интерфейс WeatherReportUiBinder расширяет UiBinder <Втулка, WeatherReport> { } общественного WeatherReport() { надстройка (uiBinder.createAndBindUi (это)); } } ' –

+0

И вот как я использую его с виджетами _Modal_: ' Modal modal = new Modal(); modal.setClosable (true); Виджет WeatherReport = новый WeatherReport(); modal.add (виджет); modal.show(); ' Если вы найдете более элегантную интеграцию, я все уши :-) –