contents


preface
acknowledgments
about this book
about the cover illustration

Part 1 Basics

1 GWT
1.1 Unplanned consequences (or the road to GWT)
1.2 Exploring the toolkit
1.3 Setting up your development environment
1.4 Summary
2 Building a GWT application: saying “Hello World!”
2.1 What’s a GWT application?
2.2 Examining the options for building an application
2.3 Creating the HelloWorld application with the GPE
2.4 Running HelloWorld in development mode
2.5 Finding out where it went wrong
2.6 Compiling HelloWorld for web mode
2.7 Understanding modules vs. packages
2.8 Digging deeper into the uncompiled application
2.9 Reviewing the deployable application part of a GWT application
2.10 Building on your understanding
2.11 Summary
3 Building a GWT application: enhancing HelloWorld
3.1 Reexamining the example application
3.2 Updating the HTML
3.3 Enhancing the code
3.4 Creating your user interface
3.5 Manipulating the page
3.6 Handling events
3.7 Managing history
3.8 Styling components
3.9 Securing your application
3.10 Building on your understanding
3.11 Summary

Part 2 Next steps

4 Creating your own widgets
4.1 What is a widget, again?
4.2 Creating a new widget from the DOM
4.3 Extending an existing widget
4.4 Extending a panel
4.5 Creating a composite
4.6 Using layout panels
4.7 Applying animation to widgets
4.8 Exploring the lifecycle of a widget
4.9 Getting Elemental, my dear Watson!
4.10 Summary
5 Using client bundles
5.1 Client bundle basics using DataResources
5.2 Text resource types
5.3 ImageResource
5.4 CssResource
5.5 Summary
6 Interface design with UiBinder
6.1 Binding the designer’s HTML to Java code
6.2 Handling events with UiBinder
6.3 Introducing the UiBinder expression language
6.4 Applying style with UiBinder
6.5 Using the Eclipse plug-in with UiBinder
6.6 Summary
7 Communicating with GWT-RPC
7.1 Surveying GWT-RPC
7.2 Learning GWT-RPC with Twitter
7.3 Fetching data from Twitter the non-GWT way
7.4 Defining a GWT-RPC-compatible model
7.5 Building and deploying the server side
7.6 Writing the client
7.7 Debugging GWT-RPC
7.8 Securing GWT-RPC against XSRF attacks
7.9 Summary
8 Using RequestFactory
8.1 Enabling annotation processing
8.2 Understanding RequestFactory architecture
8.3 Understanding the example project in this chapter
8.4 Making calls to the server
8.5 Using custom Locators and ServiceLocators (the “long way”)
8.6 Summary
9 The Editor framework
9.1 Framework and editor overview
9.2 Examining the chapter’s examples
9.3 Editor types
9.4 Constructing your first editor
9.5 Binding an editor with drivers
9.6 Editor subinterfaces
9.7 Accessing the RequestContext
9.8 Alternate way to construct an editor
9.9 Adapters
9.10 Summary
10 Data-presentation (cell) widgets
10.1 Understanding cells
10.2 Creating custom cells
10.3 Reviewing GWT’s cell widgets
10.4 Looking at a CellList
10.5 Walking through a CellTree
10.6 Browsing a CellBrowser
10.7 Constructing a CellTable
10.8 Building a DataGrid
10.9 Summary
11 Using JSNI—JavaScript Native Interface
11.1 What is JSNI?
11.2 Should you use JavaScript Native Interface?
11.3 Benefiting from the Google Plugin for Eclipse
11.4 Interacting with the browser
11.5 Handling objects from JavaScript
11.6 Wrapping a third-party library
11.7 Exposing an API to JavaScript
11.8 Summary
12 Classic Ajax and HTML forms
12.1 Understanding the underlying technology
12.2 Using RequestBuilder
12.3 Posting data with RequestBuilder
12.4 Using the JSON API and JsonpRequestBuilder
12.5 Using JSON with JS overlay
12.6 Using the XML API and RequestBuilder
12.7 Using FormPanel
12.8 Summary
13 Internationalization, localization, and accessibility
13.1 Making a user feel comfortable
13.2 Using static string internationalization
13.3 Using static-string i18n with UiBinder
13.4 Determining the locale for static-string internationalization
13.5 Internationalizing client bundles through static internationalization
13.6 Dynamic string internationalization
13.7 Localization of dates, times, and currencies
13.8 Displaying the right direction
13.9 Accessibility
13.10 Summary

Part 3 Advanced

14 Advanced event handling and event busses
14.1 Understanding events
14.2 How GWT manages events
14.3 Previewing and canceling events
14.4 Preventing default actions
14.5 Programmatically firing events
14.6 Creating your own events
14.7 Event busses
14.8 Summary
15 Building MVP-based applications
15.1 What is MVP?
15.2 Looking at the PhotoApp’s MVP foundations
15.3 Building MVP yourself
15.4 Altering an MVP application
15.5 Activity and Place (GWT’s reference MVP approach)
15.6 Fitting editors/data-presentation widgets into MVP
15.7 Summary
16 Dependency injection
16.1 Dependency injection—the fundamentals
16.2 Guice—a Java dependency injection framework
16.3 GIN—how DI differs in a GWT application
16.4 When to avoid DI
16.5 Summary
17 Deferred binding
17.1 What is deferred binding?
17.2 Pulling it all together
17.3 Using GWT properties to drive deferred binding
17.4 Managing explosive permutation numbers
17.5 Determining a property value
17.6 Coping when deferred binding isn’t enough
17.7 Summary
18 Generators
18.1 What does a generator do?
18.2 What can a generator do?
18.3 Indicating what generator to use and when
18.4 Configuration properties
18.5 Pulling it all together
18.6 Preparing to write a generator
18.7 Creating your own generator
18.8 Using your new generator
18.9 Summary
19 Metrics and code splitting
19.1 Using the lightweight metrics tool
19.2 Using the Compile Report
19.3 Making use of code splitting
19.4 Summary

index