Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how do i use image sprites in GWT?

Tags:

I was trying to use a tiled image in an image resource, and i was refering to the GWT tutorial for it...

one section says you need to use sprites: http://code.google.com/webtoolkit/doc/latest/DevGuideClientBundle.html#ImageResource

repeatStyle is an enumerated value that is used in combination with the@sprite directive to indicate that the image is intended to be tiled

so, now i need to add a sprite directive .. Where ? researching about sprites, i came here: http://code.google.com/webtoolkit/doc/latest/DevGuideClientBundle.html#Image_Sprites

The example dictates the creation of two files :

  1. MyCssResource
  2. MyResources

where would I write this :

@sprite .mySpriteClass {gwt-image: "imageAccessor"; other: property;}

?

some more quotes for reference:

@sprite is sensitive to the FooBundle in which the CSSResource is declared; a sibling ImageResource method named in the @sprite declaration will be used to compose the background sprite.

like image 855
Salvin Francis Avatar asked Dec 26 '10 19:12

Salvin Francis


People also ask

What is the use of image sprites?

An image sprite is a collection of images put into a single image. A web page with many images can take a long time to load and generates multiple server requests. Using image sprites will reduce the number of server requests and save bandwidth.

Why do developers use image sprites?

Sprites are faster at loading and use less bandwidth. From a developers point of view, they are easier to maintain because all of your graphics are in one place.

What is the use of CSS sprites?

CSS Sprites are a collection of images that are combined into a single file that an HTML document can access. These images are then called into use within the HTML code to be displayed on the website.


2 Answers

From what you've written I'm going to presume that MyResources is an interface that extends ClientBundle and MyCssResources is an interface that extends CssResource:

interface MyResources extends ClientBundle {   @Source("myImage.png")   @ImageOptions(repeatStyle = RepeatStyle.BOTH)   ImageResource myImage();    @Source("myCss.css")   MyCssResource myCss(); }  interface MyCssResource extends CssResource {   String myBackground(); } 

So now there are two ways to use the ImageResource obtained from MyResources. The first is to attach it to a CSS rule using the @sprite directive. myCss.css:

@sprite .myBackground {   gwt-image: "myImage";   /* Additional CSS rules may be added. */ } 

Then, anything with the myBackground class will have myImage as its background. So, using UiBinder, for example:

<ui:UiBinder> <!-- Preamble omitted for this example. -->   <ui:with field="myResources" type="com.mycompany.MyResources"/>    <g:FlowPanel styleName="{myResources.myCss.myBackground}"/> </ui:UiBinder> 

One can also instantiate Image objects directly using the defined ImageResource. UiBinder:

<ui:UiBinder> <!-- Preamble omitted for this example. -->   <ui:with field="myResources" type="com.mycompany.MyResources"/>    <g:Image resource="{myResources.myImage}"/> </ui:UiBinder> 

Without UiBinder:

MyResources myResources = GWT.create(MyResources.class); Image myImage = new Image(myResources.myImage()); 
like image 85
Jason Terk Avatar answered Sep 18 '22 12:09

Jason Terk


Just let me add this:

@sprite .myBackground {   gwt-image: "myImage";   /* Additional CSS rules may be added. */ } 

becomes

.myBackground {   backgroud-image: url(-url of the image-)   width: *width of the image*   height: *height of the image* } 

Remember to override them in case u need it: for example setting height and width to auto:

@sprite .myBackground {   gwt-image: "myImage";   height: auto;   width: auto; } 

HTH, I struggled a lot to find that out ;)

like image 44
Christian Achilli Avatar answered Sep 19 '22 12:09

Christian Achilli