About the Authors | p. xiii |
About the Technical Reviewer | p. xv |
Acknowledgments | p. xvii |
Introduction | p. xix |
Introducing Rich Internet Applications (RIAs) | p. 1 |
A Short History | p. 1 |
Mainframe Applications | p. 2 |
Client/Server Applications | p. 3 |
Web Applications | p. 3 |
Rich Web Applications | p. 4 |
Introducing Ajax | p. 5 |
Asynchronous | p. 5 |
JavaScript | p. 8 |
XML | p. 9 |
From AJAX to Ajax | p. 11 |
Advantages and Disadvantages of RIAs | p. 12 |
RIA Benefits | p. 13 |
RIA Shortcomings | p. 13 |
When Should You Use Ajax? | p. 14 |
Different Approaches to Building RIAs | p. 14 |
Handwritten JavaScript | p. 14 |
Flex | p. 15 |
Java Applets and JavaFX | p. 16 |
Silverlight | p. 17 |
OpenLaszlo | p. 17 |
Echo2 | p. 18 |
GWT | p. 19 |
Summary | p. 19 |
Introducing Google Web Toolkit (GWT) | p. 21 |
Why GWT? | p. 21 |
From JavaScript to Java | p. 21 |
Considerations for Using GWT | p. 22 |
The Basics | p. 23 |
Java to JavaScript Compiler | p. 23 |
JRE Emulation Library | p. 25 |
UI Library | p. 29 |
GWT Application Layout | p. 31 |
Module Descriptor | p. 32 |
Public Resources | p. 34 |
Introducing the Sample Application | p. 36 |
Handy Development Tools | p. 38 |
Web Developer Add-on | p. 38 |
Firebug | p. 40 |
LiveHTTPHeaders | p. 42 |
Cacheability Engine | p. 43 |
Summary | p. 43 |
Getting Started | p. 45 |
Installing GWT | p. 45 |
Project Structure | p. 47 |
Utility Scripts | p. 48 |
Application Creator Script | p. 48 |
Project Creator Script | p. 50 |
Writing Code | p. 50 |
Cleaning Up Generated Code | p. 51 |
Start Coding | p. 51 |
Running Code | p. 52 |
Styling Code with CSS | p. 54 |
Debugging | p. 56 |
Summary | p. 57 |
GWT UI Components | p. 59 |
GWT Component Model | p. 60 |
The RootPanel | p. 61 |
Basic Widgets | p. 62 |
The Label Widget | p. 62 |
The HTML Widget | p. 63 |
The Button Widget | p. 64 |
The ToggleButton Widget | p. 65 |
The Hyperlink Widget | p. 67 |
Form Widgets | p. 68 |
Panels | p. 78 |
Creating the Sample Application | p. 79 |
Designing the Main Look and Feel of GWTasks | p. 79 |
Showing the Categories and Task Lists | p. 82 |
Enhancing the User Experience with HorizontalSplitPanel | p. 85 |
Summary | p. 87 |
Building an Advanced UI | p. 89 |
Using Tables | p. 89 |
Using Grid | p. 89 |
Using FlexTable | p. 91 |
Climbing Trees | p. 94 |
Using PopupPanel and DialogBox | p. 97 |
PopupPanel | p. 97 |
Using DialogBox | p. 99 |
Componentizing the Code Base | p. 101 |
Extending GWT Panels | p. 101 |
Using Composites | p. 105 |
Creating the TitledPanel Component | p. 113 |
LoginPane and MainPane-The Missing Components | p. 122 |
GWT Application Architecture | p. 125 |
Layers and Packages | p. 126 |
Application Events | p. 129 |
Managing the Data | p. 133 |
Some Last Words on Styles | p. 139 |
Summary | p. 139 |
Server Integration | p. 141 |
GWT RPC | p. 141 |
Defining the Interface | p. 141 |
Implementing the Server Side | p. 144 |
Implementing the Client Side | p. 145 |
Alternatives to GWT RPC | p. 149 |
Basic Ajax | p. 149 |
JSON | p. 151 |
Summary | p. 156 |
Testing GWT Applications | p. 157 |
What Is Testing? | p. 157 |
Unit Testing | p. 158 |
Basic Unit Testing | p. 158 |
GWT JUnit Integration | p. 161 |
Comparing Basic and GWT Unit Testing | p. 164 |
Functional Testing | p. 164 |
Introducing Selenium | p. 165 |
Benchmarking | p. 181 |
What Is Benchmarking? | p. 182 |
Writing a Benchmark | p. 182 |
Summary | p. 186 |
Advanced Topics | p. 187 |
Internationalization (i18n) | p. 187 |
A Few Words on Java Resource Bundles | p. 188 |
The Constants Interface | p. 189 |
The ConstantsWithLookups Interface | p. 192 |
The Messages Interface | p. 194 |
Formats | p. 196 |
Image Bundles | p. 197 |
Using Image Bundles Within GWTasks | p. 199 |
Tree Image Bundles | p. 202 |
Browser History and Back Button Support | p. 203 |
GWT History View | p. 204 |
The History Class | p. 205 |
Revisiting Hyperlinks | p. 207 |
Bookmark Support | p. 208 |
Integrating GWTasks with History Navigation | p. 208 |
JavaScript Native Interface (JSNI) | p. 211 |
Writing Native JavaScript Methods | p. 211 |
Calling GWT Methods from JavaScript | p. 213 |
Exception Handling | p. 214 |
Uploading Files | p. 215 |
Monitoring Progress on the Server | p. 218 |
Monitoring Progress on the Client | p. 219 |
Summary | p. 220 |
IDE Support | p. 223 |
Eclipse | p. 223 |
IntelliJ IDEA | p. 226 |
Resources | p. 229 |
Index | p. 231 |
Table of Contents provided by Ingram. All Rights Reserved. |