ImageBundle support has been an often requested feature. With M3, we have added ImageBundle support. Icons can be specified in three different methods:
- AbstractImagePrototype (typically from an ImageBundle)
- CSS style name (existing method)
- Image path (String)
All components that support icons now implement the new IconSupport interface:
/** * Interface for objects that support icons. */ public interface IconSupport { /** * Returns the icon. * * @return the icon */ public AbstractImagePrototype getIcon(); /** * Sets the icon. * * @param icon the icon */ public void setIcon(AbstractImagePrototype icon); /** * Sets the icon style. * * @param icon a CSS style name */ public void setIconStyle(String icon); }
In addition, there is a helper class, IconHelper, that can be used to create image prototypes from CSS style names, and image paths. Here is an example setting an icon 3 different ways:
// from bundle item.setIcon(GXT.IMAGES.editor_bold()); // CSS style name item.setIconStyle("my-icon"); // image path item.setIcon(IconHelper.createPath("/my/url/foo.gif"));
When using ImageBundles, you create classes that extends ImageBundle. Here is a partial look of the new XImages class, which is the ImageBundle GXT uses for all it’s icons:
public interface XImages extends ImageBundle { @Resource("hmenu-asc.gif") AbstractImagePrototype grid_sortAsc(); @Resource("hmenu-desc.gif") AbstractImagePrototype grid_sortDesc(); .... }
One immediate benefit we have noticed, is that the icons display immediately when first displayed in the application, rather than incrementally as a page loads. This happens since all the images are combined into one on the server at compile time, and therfore, 1 http request.
Cheers!
Question: I'm very curious how SmartGWT is managing this issue ? Thanks.
Participant
No comments:
Post a Comment