2014-12-04 14 views
7

Ciao gente Qualcuno ha idea di come registrare l'elemento html personalizzato come widget GWT di uiBinder e usarli direttamente al posto dell'utilizzo in HTMLPanel.Come registrare l'elemento HTML personalizzato come widget in GWT

Ad es. se sto utilizzando Google Polymer nel mio progetto mgwt sto usando elemento HTML personalizzato come

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

Vorrei iscrivermi/creare paper-ombra come widget personalizzato in modo che io possa scrivere codice come in modo che la sua facile da handel eventi

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

risposta

0

Per quanto ne so, non è possibile aggiungere facilmente un nuovo elemento personalizzato che UiBinder comprenderà. È possibile aggiungere uno a your custom widget, però.

Si noterà che GWT consente attributi personalizzati su questi elementi personalizzati, come in 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> 

Avviso l'elemento <g:north size='5'> - se si guarda in codice sorgente DockLayoutPanel s', vedrete che essa viene gestito con questo metodo:

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

No @UiChild annotazione e un parametro in più significa qualcosa di "magico" che sta accadendo dietro le quinte. E abbastanza vero, c'è una classe DockLayoutPanelParser che gestisce questo caso speciale. Noterai che implementa lo ElementParser - sfortunatamente, it's not possible to "plug in" your own ElementParser.

C'era un progetto, gwt-customuibinder, che ha cercato aggirando questa limitazione, ma è stato sconsigliato per i più recenti versioni di GWT (2.5+?):

Si prega di notare che con le più recenti versioni di GWT, questo progetto è ora deprecato dal momento che molte delle tecniche utilizzate per aggiungere parser di elementi personalizzati a UiBinder ora non sono possibili.

0

Sto utilizzando e mantenendo this fork di questo gwt-polymer wrap.

Nell'applicazione di prova si possono vedere diversi campioni di uso di widget di polimeri in GWT, come avvolgere elementi polimerici html esistente, come crearne di nuove, l'uso con uibinder, ecc

+0

gente Grazie, ma quando questo è stata posta una domanda per cui questa libreria non era disponibile –

+0

colpa mia. Non ho visto la data di questa domanda ... – vjrj

Problemi correlati