2010-08-10 15 views
20

Estoy usando GWT ClientBundle por primera vez. Escribí interfaz que se extiende y aquí está el código:cómo ClientBundle en GWT?

package edu.etf.fuzzy.client.login; 

import com.google.gwt.resources.client.ClientBundle; 
import com.google.gwt.resources.client.ImageResource; 

public interface Resources extends ClientBundle { 

@Source("logo_federacija.jpg") 
ImageResource logo(); 

@Source("shim.gif") 
ImageResource shim(); 
} 

Mi pregunta es: ¿Cómo puedo saber exactamente dónde se encuentran estos recursos (imágenes en este caso). ¿Debería ponerlos: a) en el mismo directorio que la interfaz - (feo)? b) en algún directorio específico que nunca se puede cambiar? c) en el directorio que quiero, pero debe haber un mecanismo para especificarlo - (sería genial)?

Gracias.

Respuesta

24

Normalmente creo un nuevo paquete de recursos (com.example.project.resource) y coloco la interfaz ClientBundle y los recursos apropiados allí (juntos, como en un directorio) - es un archivo java más un conjunto de imágenes, sin necesidad de una mayor separación , EN MI HUMILDE OPINIÓN.

En cuanto a las rutas a los recursos, puede pasarlos a través de la anotación @Source("path"). Por ejemplo, si tiene su interfaz ClientBundle en com.example.project.resource e imágenes en com.example.project.images, escriba @Source("../images/shim.gif"). Probablemente se podría utilizar rutas absolutas, pero asegúrese de que los almacena en una variable estática y compartir con los recursos, por lo que se puede reemplazar fácilmente;)

+0

No importa cuánto lo intente, obtengo: El método synchronous() del tipo Resources hace referencia al tipo faltante TextResource – miroslavign

+0

@miroslavign: abra una nueva pregunta, la sección de comentarios no es el lugar adecuado para solucionar problemas nuevos. –

3

similares a los puntos de Igor:

com.yoursite.resources: YourClientBundle.java 
com.yoursite.resources.css: YourCssResource.java 
com.yoursite.resources.images: image files here 

La clave aquí es que si no consume un recurso (CSS/Image/Text), el compilador GWT lo ignorará. Esto previene war bloat a medida que su aplicación obtiene el titular y usted tiene cientos de imágenes y no está seguro de cuáles se usan y cuáles no.

Si usa la opción de omitir todo en la carpeta public/images, todos los elementos se incluirán en la guerra de aplicaciones, independientemente de si se usan.