2010-06-24 12 views
8

Ho un layout in Google Web Toolkit utilizzando UIBinder che comprende uno TabLayoutPanel. Questo layout ha il superset di tutte le schede che verranno utilizzate dalla mia app (pensatela come una visualizzazione amministratore).È possibile riutilizzare i pannelli GWT UIBinder?

Ora devo creare un nuovo layout, utilizzando un sottoinsieme di queste schede (ad esempio, per utenti regolari).

È possibile importare pannelli dal mio layout di amministrazione nel mio layout utente? O forse definirli tutti in un terzo file e importarli da entrambi i layout?

risposta

3

Definire ciascun contenuto della scheda come un modello UiBinder separato. Poiché le classi di UiBinder sono composte, puoi aggiungerle a qualsiasi contenitore come qualsiasi altro widget.

È possibile assemblare il proprio TabLayoutPanel nel codice aggiungendo ogni oggetto templato UiBinder in una scheda nel TabPanel o definire un altro modello UiBinder con TabPanel e tutte le schede definite.

Se si passa alla rotta UiBinder per la creazione di modelli di TabLayoutPanel, importare il contenuto del pannello di schede (Compositi definiti in precedenza con UiBinder) in UiBinder definendo un nuovo 'spazio dei nomi' che punta al pacchetto in cui risiedono tutti i materiali compositi. Quindi fai riferimento ai tuoi compositi come namespace: ClassName nel modello UiBinder.

se com.project.package è dove si conservano tutti i compositi che si desidera incorporare in singole schede quindi definire un nuovo spazio dei nomi f come xmlns:f= 'com.project.package' subito dopo xmlns: g dichiarazione.

Vi riferite a singoli materiali compositi in UiBinder come

<f:Composite1 /> 
<f:Composite2 /> 
+0

Grazie, sembra promettente. Darò un colpo. – pkaeding

+0

Questo ha fatto il trucco; Grazie! – pkaeding

+0

piuttosto semplice, non è vero? –

5

È possibile importare definitivamente le viste che hai scritto, sia i modelli UIBinder che i regolari Widget s, in un altro modello UIBinder.

Dal UIBinder docs:

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

Notate come i Stocks e CricketScores i widget sono importati da un proprio pacchetto.

Non è necessario eseguire questa operazione solo per mostrare/nascondere le schede in base ai privilegi dell'utente, è sufficiente mostrare/nascondere le schede nel codice GWT in base ai livelli di accesso.

+0

Dove è Stocks definito? Voglio continuare a definire i miei layout in XML, poiché ritengo che sarebbe più gestibile che definirli in codice Java. – pkaeding

+0

Secondo il codice sopra, gli stock dovrebbero essere nel pacchetto com.my.app.widgets. – markovuksanovic

+0

Sì, la mia domanda era più simile a "Dove è definito il layout UIBinder per gli stock?" Penso che la risposta di @Ashwin Prabhu possa rispondere a questa domanda, però. – pkaeding

Problemi correlati