Book Image

ExtGWT Rich Internet Application Cookbook

By : Odili Charles Opute , Oded Nissan
Book Image

ExtGWT Rich Internet Application Cookbook

By: Odili Charles Opute , Oded Nissan

Overview of this book

<p>Get ready to build the next generation Gmail, Facebook, or Meebo, with HTML5 and Server Push, taking advantage of the power and versatility of Java with ExtGWT. Sencha Ext GWT takes GWT to the next level, giving you high-performance widgets, feature-rich templates and layouts, advanced charting, data loaders and stores,&nbsp; accessibility, and much more.<br /><br /><i>ExtGWT Rich Internet Application Cookbook will teach you to quickly build&nbsp; stunning functionality into your own apps with ExtGWT</i>.<br /><br />This is a catalog of practical solutions to get your ExtGWT web app up and running in no time, with tips for persistence and best practices. You begin by playing with panels, windows, and tabs, to learn the essentials. Next, you engage yourself with forms, buttons, toolbars and menus to build on further. Dealing with the UI and the trees will follow to help you make stunning user interfaces. Then you will be taught to work with Listview, Views, and Gridpanels, the more complex problems. The book will then deal with charts, visualization, and drag and drop to take you to the next level. Finally, you will wind up with serialization, persistence, and custom theming. Now, you are an expert!</p>
Table of Contents (22 chapters)
ExtGWT Rich Internet Application Cookbook
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Preface
Event Handling — Making Those GUIs Do Something
Jakarta Commons-FileUpload

Leveraging icons in the wild


There is a huge collection of icon sets floating on the web that we can take advantage of, especially in making our UI look radically different. Some popular ones include Silk, Tango, Fugue, and SweetiePlus.

The Icons interface that we currently have is not so flexible. If we want to combine icons from the Silk and Tango sets, then we must dump all the image files in that same package folder, risking over-writing some. Also, if we want to use only the Tango icons, we will have problems since there's no namespace structure.

To make it easy to use all these icons and others yet to be discovered, in an intuitive way, we'll re-factor the Icons interface to serve as a factory while the ClientBundleinterface will be extended to provide, say a SilkIcons interface for the Silk collection, and a FugueIcons interface for the Fugue icons set.

// The Icons "factory"
package com.example.client.icons;
public interface Icons {
SilkIcons Silk = GWT.create(SilkIcons.class);
FugueIcons Fugue = GWT.create(FugueIcons.class);
}
// Silk icons set
package com.example.client.icons.silk;
public interface SilkIcons extends ClientBundle{
ImageResource accept();
}
// Fugue icons set
package com.example.client.icons.fugue;
public interface FugueIcons extends ClientBundle {
FugueX32 x32 = GWT.create(FugueX32.class);
ImageResource acorn();
}
// Fugue 32x32icons set
public interface FugueX32 extends ClientBundle {
ImageResource folder();
ImageResource document();
}

This makes for a fluid interface from the client code perspective, such as Icons.Fugue.x32.document(). Our earlier example will now be as follows:

TabItem homeTab = new TabItem("Terms");
homeTab.setIcon(AbstractImagePrototype.create(Icons.Silk.accept()));
Button btn = new Button("Document");
btn.setScale(ButtonScale.LARGE);
btn.setIconAlign(IconAlign.TOP);
btn.setIcon(AbstractImagePrototype.create((Icons.Fugue.x32.document()));