I am using GWT ClientBundle for the first time. I wrote interface that extends it and here is the code:
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();
}
My question is: How do I tell where exactly these resources (images in this case) can be found. Should I put them: a) in the same directory as interface - (ugly)? b) in some specific directory that never can be changed ? c) in directory that I want, but there should be mechanism to specify it - (would be great)?
Thank you.
I usually create a new package for resources (com.example.project.resource
) and put the ClientBundle
interface and the appropriate resources there (together, as in in one directory) - it's one java file plus a bunch of images, no need for further separation, IMHO.
As for the paths to the resources - you can pass them via @Source("path")
annotation. For example, if you have your ClientBundle
interface in com.example.project.resource
and images in com.example.project.images
, then you'd write @Source("../images/shim.gif")
. You could probably use absolute paths, but make sure you store them in a static variable and share amongst the resource, so it can be easily overridden ;)