2010-06-24 18 views
8

Tengo un diseño en Google Web Toolkit usando UIBinder que implica un TabLayoutPanel. Este diseño tiene el superconjunto de todas las pestañas que usará mi aplicación (piénselo como una vista de administrador).¿Es posible reutilizar paneles GWT UIBinder?

Ahora necesito crear un nuevo diseño, usando un subconjunto de estas pestañas (por ejemplo, para usuarios normales).

¿Es posible importar paneles desde mi diseño de administrador en mi diseño de usuario? ¿O quizás los defina en un tercer archivo e importe desde ambos diseños?

Respuesta

3

Defina cada contenido de pestaña como una plantilla de UiBinder separada. Como las clases de UiBinder son Composites, puedes agregarlas a cualquier contenedor como cualquier otro widget.

Puede ensamblar su TabLayoutPanel en el código agregando cada objeto UiBinder templeted en una pestaña en el TabPanel o definir otra plantilla de UiBinder con TabPanel y todas las pestañas definidas.

Si utiliza la ruta de UiBinder para diseñar TabLayoutPanel, importe los contenidos del panel de pestañas (Composites que definió anteriormente usando UiBinder) en UiBinder definiendo un nuevo 'espacio de nombres' que señale el paquete donde residen todos sus materiales compuestos. A continuación, se refiere a sus materiales compuestos como espacio de nombre: ClassName en la plantilla de UiBinder.

si com.project.package es donde guardas todas sus composiciones en las que desea Embebido en pestañas individuales a continuación, definir un nuevo espacio de nombres como f xmlns:f= 'com.project.package' poco después xmlns: g declaración.

Usted se refiere a materiales compuestos individuales en su UiBinder como

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

Gracias, esto parece prometedor. Le daré una oportunidad. – pkaeding

+0

Eso hizo el truco; ¡Gracias! – pkaeding

+0

bastante simple, ¿no? –

5

Definitivamente puede importar las vistas que ha escrito, tanto las plantillas de UIBinder como las Widget normales, en otra plantilla de UIBinder.

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

Observe cómo los Stocks y CricketScores widgets se importan de su propio paquete.

No necesariamente tendrá que hacer esto solo para mostrar u ocultar las pestañas según los privilegios del usuario, solo puede mostrar u ocultar las pestañas en su código GWT en función de los niveles de acceso.

+0

Cuando se definen las existencias? Quiero seguir definiendo mis diseños en XML, ya que creo que sería más manejable que definirlos en código Java. – pkaeding

+0

Según el código anterior, las existencias deben estar en el paquete com.my.app.widgets. – markovuksanovic

+0

Sí, mi pregunta era más parecida a "¿Dónde se define el diseño de UIBinder para Stocks?" Creo que la respuesta de @Ashwin Prabhu puede responder esa pregunta. – pkaeding

Cuestiones relacionadas