2014-12-04 14 views
7

Cześć Czy ktoś wpadł na pomysł, jak zarejestrować niestandardowy element HTML jako widget interfejsu GWT uiBinder i użyć ich bezpośrednio w miejscu używania w HTMLPanel.Jak zarejestrować Niestandardowy element HTML jako widget w GWT

Dla np. jeśli używam Google Polymer w moim projekcie mgwt używam elementu zwyczaj HTML jako

    <g:HTMLPanel > 
        <paper-shadow class="{style.card}"> 
         <mgwt:touch.TouchPanel ui:field="touchPanel"> 
          <mgwt:panel.flex.FlexPanel orientation="VERTICAL" alignment="CENTER"> 
           <g:Image url="{global.getDirection.getSafeUri.asString}" /> 
           <g:HTMLPanel>Take me to Deal</g:HTMLPanel> 
          </mgwt:panel.flex.FlexPanel> 
         </mgwt:touch.TouchPanel> 
        </paper-shadow> 
       </g:HTMLPanel> 

Chcę zarejestrować/stworzyć papierowej cień as widget tak, że mogę napisać kod tak, że jak łatwo jest Händel zdarzenia

   <polymer:paper-shadow class="{style.card}"> 
        <mgwt:touch.TouchPanel ui:field="touchPanel"> 
         <mgwt:panel.flex.FlexPanel orientation="VERTICAL" alignment="CENTER"> 
          <g:Image url="{global.getDirection.getSafeUri.asString}" /> 
          <g:HTMLPanel>Take me to Deal</g:HTMLPanel> 
         </mgwt:panel.flex.FlexPanel> 
        </mgwt:touch.TouchPanel> 
       <polymer:paper-shadow> 

Odpowiedz

0

Z tego co wiem, nie można łatwo dodać nowego elementu niestandardowego, który zrozumie UiBinder. Możesz dodać go do your custom widget.

Zauważysz, że GWT pozwala niestandardowych atrybutów na tych niestandardowych elementów, jak w DockLayoutPanel:

<g:DockLayoutPanel unit='EM'> 
    <g:north size='5'> 
    <g:Label>Top</g:Label> 
    </g:north> 
    <g:center> 
    <g:Label>Body</g:Label> 
    </g:center> 
    <g:west size='192'> 
    <g:HTML> 
     <ul> 
     <li>Sidebar</li> 
     <li>Sidebar</li> 
     <li>Sidebar</li> 
     </ul> 
    </g:HTML> 
    </g:west> 
</g:DockLayoutPanel> 

Wskazówka element <g:north size='5'> - jeśli spojrzeć na kod źródłowy DockLayoutPanel „s, zobaczysz, że to jest obsługiwany przez tą metodą:

public void addNorth(Widget widget, double size) { 
    insert(widget, Direction.NORTH, size, null); 
} 

nr @UiChild adnotacji i dodatkowy parametr oznacza coś „magicznego” dzieje się za kulisami. I rzeczywiście, istnieje klasa DockLayoutPanelParser, która obsługuje ten specjalny przypadek. Zauważysz, że implementuje on ElementParser - niestety, it's not possible to "plug in" your own ElementParser.

Był to projekt, gwt-customuibinder, że próbował ominięcia tego ograniczenia, ale to było przestarzałe nowsze wersje GWT (2.5+):

Należy pamiętać, że z nowszych wydaniach GWT ten projekt jest teraz przestarzałe, ponieważ wiele technik używanych do dodawania parserów elementów niestandardowych do UiBinder nie jest obecnie możliwe.

0

Używam i utrzymuję this fork tego gwt-polymer wrap.

W aplikacji testowej można zobaczyć kilka próbek wykorzystaniu widżetów polimerowych w GWT, jak owinąć istniejących elementów polimerowych html, jak tworzyć nowe, korzystanie z UiBinder itd

+0

thanks ludzi, ale kiedy to zadano pytanie, że ta biblioteka nie jest dostępna. –

+0

Moja wina. Nie widzę daty tego pytania ... – vjrj

Powiązane problemy