Introduction |
|
xvi | |
|
Lesson 1 Understanding Rich Internet Applications |
|
|
2 | (12) |
|
Understanding the Evolution of Computer Applications |
|
|
4 | (2) |
|
Breaking away from the Page-based Architecture |
|
|
6 | (1) |
|
Identifying the Advantages of Rich Internet Applications |
|
|
7 | (1) |
|
|
7 | (1) |
|
|
8 | (1) |
|
|
8 | (1) |
|
|
8 | (6) |
|
Asynchronous Javascript and XML (Ajax) |
|
|
8 | (1) |
|
|
9 | (1) |
|
|
10 | (1) |
|
|
11 | (2) |
|
Windows Presentation Foundation/XAML/Expression |
|
|
13 | (1) |
|
|
14 | (24) |
|
Getting Started with Flex Application Development |
|
|
16 | (1) |
|
Creating a Project and an MXML Application |
|
|
16 | (5) |
|
Understanding the Flex Builder 2 Workbench |
|
|
21 | (2) |
|
|
23 | (7) |
|
Creating a Second Application Page and Working in Design Mode |
|
|
30 | (5) |
|
Getting Ready for the Next Lesson |
|
|
35 | (3) |
|
Lesson 3 Laying Out the Interface |
|
|
38 | (26) |
|
Learning About Containers |
|
|
40 | (1) |
|
Laying Out the E-commerce Application Using Design Mode |
|
|
41 | (6) |
|
Working with Constraint-based Layouts |
|
|
47 | (5) |
|
|
52 | (4) |
|
|
54 | (2) |
|
Laying Out an Application in Source Mode |
|
|
56 | (8) |
|
Adding and Controlling View States with MXML |
|
|
60 | (4) |
|
Lesson 4 Using Simple Controls |
|
|
64 | (22) |
|
Introducing Simple Controls |
|
|
66 | (1) |
|
Using Flex Explorer to Learn About Simple Controls |
|
|
67 | (1) |
|
|
68 | (4) |
|
|
72 | (3) |
|
Using Data Binding to Link a Data Structure to a Simple Control |
|
|
75 | (2) |
|
Using a Form Layout Container to Lay Out Simple Controls |
|
|
77 | (5) |
|
Adding Radio Buttons and Date Fields to the Dashboard |
|
|
82 | (4) |
|
Lesson 5 Handling Events and Data Structures |
|
|
86 | (22) |
|
Introducing Handling Events and Complex Data Structures |
|
|
88 | (2) |
|
Using the <mx:Model> Tag with a Creation Complete Event |
|
|
90 | (3) |
|
Building a Custom ActionScript Class |
|
|
93 | (4) |
|
Building a Method to Create an Object |
|
|
97 | (3) |
|
Building Shopping Cart Classes |
|
|
100 | (6) |
|
Exploring the Event Object |
|
|
106 | (2) |
|
Lesson 6 Using Remote XML Data with Controls |
|
|
108 | (42) |
|
Retrieving XML Data with HTTPService |
|
|
110 | (3) |
|
|
111 | (1) |
|
Using Collections as Data Providers |
|
|
112 | (1) |
|
Understanding Security Issues |
|
|
112 | (1) |
|
Populating a List with Retrieved XML as an ArrayCollection of Objects |
|
|
113 | (3) |
|
Populating a ComboBox Control and Programmatically Adding an Option |
|
|
116 | (3) |
|
Using XML Data with a Tree Control |
|
|
119 | (11) |
|
Understanding E4X operators |
|
|
120 | (3) |
|
Populating a Tree Control with XML Data |
|
|
123 | (7) |
|
Retrieving XML Data and Transforming it into an ArrayCollection of Custom Objects |
|
|
130 | (5) |
|
Using Data Binding with Complex Data Structures |
|
|
135 | (2) |
|
Sorting and Manipulating Shopping Cart Data |
|
|
137 | (10) |
|
|
147 | (3) |
|
Lesson 7 Creating Components with MXML |
|
|
150 | (36) |
|
Introducing MXML Components |
|
|
152 | (5) |
|
Understanding the Basics on How to Create a Custom Component |
|
|
153 | (1) |
|
Creating a Custom Component Step by Step |
|
|
154 | (1) |
|
Using Custom Components in Application Architecture |
|
|
155 | (2) |
|
Creating an Update/Delete Product Component and Instantiating It |
|
|
157 | (4) |
|
Popping Up Product Information When Clicking the Update and Delete Buttons |
|
|
161 | (7) |
|
Creating Another Value Object |
|
|
168 | (2) |
|
Creating a Data Manager Component for All Three Applications |
|
|
170 | (7) |
|
Using the New Data Manager Component |
|
|
177 | (4) |
|
Implementing Add Product Functionality |
|
|
181 | (1) |
|
Creating and Using a Component for the Dashboard Application |
|
|
182 | (4) |
|
Lesson 8 Using Controls and Repeaters with Data Sets |
|
|
186 | (30) |
|
Introducing Using Data Sets |
|
|
188 | (5) |
|
Understanding HorizontalList and TileList Components |
|
|
189 | (1) |
|
Implementing a labelFunction |
|
|
190 | (1) |
|
Implementing an itemRenderer |
|
|
191 | (2) |
|
Displaying the Categories Using a HorizontalList and an itemRenderer |
|
|
193 | (4) |
|
Displaying Grocery Products Based on Category Selection |
|
|
197 | (12) |
|
Using a Repeater to Loop Over a Data Set |
|
|
197 | (1) |
|
Retrieving Data from Repeated Components |
|
|
198 | (2) |
|
Addressing Components Built by a Repeater |
|
|
200 | (1) |
|
Understanding Performance Differences Between TileList and Repeater |
|
|
201 | (1) |
|
Displaying Grocery Items Based on Category |
|
|
201 | (8) |
|
Coding States to Display Detailed Product Information |
|
|
209 | (2) |
|
Placing Products in the Shopping Cart |
|
|
211 | (5) |
|
Lesson 9 Using Custom Events |
|
|
216 | (26) |
|
Understanding the Benefits of a Loosely Coupled Architecture |
|
|
219 | (1) |
|
|
219 | (2) |
|
Declaring Events for a Component |
|
|
221 | (1) |
|
Identifying the Need for Custom Event Classes |
|
|
222 | (1) |
|
Building and Using the CategoryEvent |
|
|
223 | (4) |
|
Creating and Using the ProductEvent Class |
|
|
227 | (9) |
|
Using ProductEvent to Remove a Product from the Cart |
|
|
231 | (2) |
|
Using ProductEvent to Add a Product to the Cart |
|
|
233 | (3) |
|
Understanding Event Flow and Event Bubbling |
|
|
236 | (6) |
|
Lesson 10 Creating Custom Components with ActionScript 3.0 |
|
|
242 | (18) |
|
Introducing Building a Component with ActionScript 3.0 |
|
|
244 | (1) |
|
Creating the Structure of the Class |
|
|
244 | (3) |
|
Overriding the createChildren() Method |
|
|
247 | (7) |
|
Creating a Button in ActionScript |
|
|
248 | (1) |
|
Using the addChild() Method to Add the Button to your Component |
|
|
248 | (1) |
|
Understanding chrome and rawChildren |
|
|
249 | (1) |
|
Using addChild on rawChildren to Add Elements to the Chrome |
|
|
250 | (4) |
|
Overriding the updateDisplayList() Method |
|
|
254 | (6) |
|
Lesson 11 Using DataGrids and Item Renderers |
|
|
260 | (22) |
|
Introducing DataGrids and Item Renderers |
|
|
262 | (1) |
|
Adding a Generic DataGrid to ChartPod |
|
|
262 | (2) |
|
Adding HTTPService Calls to Dashboard |
|
|
264 | (4) |
|
Displaying the Shopping Cart with a DataGrid |
|
|
268 | (14) |
|
Add Inline Editing Control for DataGridColumn |
|
|
270 | (1) |
|
Create an MXML Item Renderer for Displaying the Product |
|
|
271 | (3) |
|
Create an Inline MXML Item Renderer for Displaying the Remove Button |
|
|
274 | (5) |
|
Update ShoppingCartItem with Set and Get Functions |
|
|
279 | (3) |
|
Lesson 12 Using Drag and Drop |
|
|
282 | (24) |
|
Introducing the Drag and Drop Manager |
|
|
284 | (1) |
|
Dragging and Dropping Between Two DataGrids |
|
|
285 | (3) |
|
Dragging and Dropping Between a DataGrid and a List |
|
|
288 | (5) |
|
Using a Nondrag-Enabled Component in a Drag-and-Drop Operation |
|
|
293 | (6) |
|
Dragging a Grocery Item to the Shopping Cart |
|
|
299 | (7) |
|
Lesson 13 Implementing Navigation |
|
|
306 | (26) |
|
|
308 | (3) |
|
Using a TabNavigator in the Data-entry Application |
|
|
311 | (3) |
|
Adding a Home Page and Checkout Page in the E-commerce Application |
|
|
314 | (4) |
|
Creating the First Step of the Checkout Process Displayed by a ViewStack |
|
|
318 | (7) |
|
Completing the Checkout Process Using the ViewStack |
|
|
325 | (7) |
|
Lesson 14 Using Formatters and Validators |
|
|
332 | (20) |
|
Introducing Formatters and Validators |
|
|
334 | (1) |
|
Using a Formatter Class to Display Currency Information in the E-commerce Application |
|
|
335 | (3) |
|
|
338 | (4) |
|
Using Regular Expressions to Validate Data (Part 1) |
|
|
342 | (2) |
|
Using Regular Expressions to Validate Data (Part 2) |
|
|
344 | (2) |
|
Building a Custom Validator Class |
|
|
346 | (6) |
|
Lesson 15 Using the History Manager |
|
|
352 | (12) |
|
Introducing History Management |
|
|
354 | (2) |
|
Implementing History Management within a Navigator Container |
|
|
356 | (1) |
|
Building a Custom History Manager |
|
|
357 | (7) |
|
Lesson 16 Customizing the Look and Feel of a Flex Application |
|
|
364 | (28) |
|
Applying a Design with Styles and Skins |
|
|
367 | (1) |
|
|
367 | (17) |
|
Setting Styles Inline with Tag Attributes |
|
|
369 | (1) |
|
Understanding Style Inheritance |
|
|
370 | (1) |
|
Setting Styles with the <mx:Style> Tag |
|
|
371 | (3) |
|
Setting Styles with CSS files |
|
|
374 | (10) |
|
|
384 | (8) |
|
|
385 | (1) |
|
|
385 | (7) |
|
Lesson 17 Accessing Server-side Objects |
|
|
392 | (44) |
|
Introducing Server-side Objects |
|
|
395 | (1) |
|
Using the Event Model Remote Server Calls |
|
|
396 | (1) |
|
Configuring an Application to Work Locally |
|
|
396 | (2) |
|
Using a Web Service in the Dashboard |
|
|
398 | (7) |
|
Handling Web Service Results |
|
|
401 | (2) |
|
Calling Web Service Methods |
|
|
403 | (2) |
|
Using a Web Service in the DataEntry Application |
|
|
405 | (6) |
|
Uploading Files to the Server |
|
|
411 | (4) |
|
Centralizing Web Service Access |
|
|
415 | (7) |
|
Using Remote Object to Save an Order |
|
|
422 | (9) |
|
Update Flex Compiler Command |
|
|
424 | (1) |
|
Raise Order Confirmed Event in the Checkout Process |
|
|
425 | (1) |
|
Create and Call Remote Object |
|
|
426 | (4) |
|
Pass in ShoppingCart into Checkout Component |
|
|
430 | (1) |
|
Change State of the Application Back to Welcome |
|
|
430 | (1) |
|
Mapping ActionScript Objects to Server Objects |
|
|
431 | (5) |
|
|
436 | (32) |
|
Exploring Flex Charting Components |
|
|
438 | (2) |
|
|
438 | (1) |
|
|
438 | (1) |
|
|
438 | (2) |
|
Laying Out the Initial Charts |
|
|
440 | (1) |
|
|
441 | (7) |
|
Specifying the Charts Series |
|
|
442 | (6) |
|
Adding Horizontal and Vertical Axes to Line and Column Charts |
|
|
448 | (6) |
|
Adding Legends to the Charts |
|
|
454 | (2) |
|
Limiting the Labels Shown on an Axis |
|
|
456 | (1) |
|
|
457 | (1) |
|
|
457 | (1) |
|
|
457 | (1) |
|
|
458 | (5) |
|
Adding Animations to the Charts |
|
|
463 | (1) |
|
Customizing the Look of Charts with Styles |
|
|
464 | (4) |
|
Lesson 19 Introducing Adobe Flex Data Services |
|
|
468 | (16) |
|
Introducing Flex Data Services (FDS) |
|
|
470 | (2) |
|
|
472 | (2) |
|
Creating a Flex Builder Project with FDS |
|
|
474 | (4) |
|
Using the Flex Proxy Service |
|
|
478 | (3) |
|
Creating a Named Proxy Service Destination |
|
|
481 | (3) |
|
Lesson 20 Pushing Data with Adobe Flex Data Services |
|
|
484 | (16) |
|
Understanding Flex Message Services |
|
|
486 | (1) |
|
Creating a New Project in Flex Builder |
|
|
486 | (4) |
|
Understanding How the Flex Message Service Works |
|
|
490 | (1) |
|
Enabling RemoteObject Calls to a ColdFusion Server |
|
|
491 | (2) |
|
Configuring a Message Destination |
|
|
493 | (2) |
|
Using the <mx:Consumer> Tag |
|
|
495 | (5) |
|
Lesson 21 Synchronizing Data with Adobe Flex Data Services |
|
|
500 | (18) |
|
Introducing the Data Management Service |
|
|
502 | (1) |
|
Configuring Data Management Services |
|
|
503 | (4) |
|
Creating the Data Management CFCs |
|
|
507 | (5) |
|
Using Data Management Service Data in an MXML Application |
|
|
512 | (3) |
|
Creating and Deleting with the Data Management Service |
|
|
515 | (2) |
|
|
517 | (1) |
|
Lesson 22 Creating Transitions and Behaviors |
|
|
518 | (10) |
|
Introducing Behaviors and Transitions |
|
|
520 | (4) |
|
Using Behaviors on Components |
|
|
520 | (2) |
|
Using Transitions on View States |
|
|
522 | (2) |
|
Implementing Effects on a Component |
|
|
524 | (2) |
|
Adding Effects to View States |
|
|
526 | (2) |
|
Lesson 23 Printing From Flex |
|
|
528 | (20) |
|
Introducing Flex Printing |
|
|
531 | (1) |
|
Printing for the First Time from Flex |
|
|
531 | (3) |
|
Using the PrintDataGrid in a Nonvisible Container |
|
|
534 | (3) |
|
Building the Printable View in a Separate Component |
|
|
537 | (4) |
|
Scaling the Printed Output |
|
|
541 | (2) |
|
Printing a Receipt from the Checkout Process |
|
|
543 | (5) |
|
Lesson 24 Using Shared Objects |
|
|
548 | (12) |
|
Introducing Shared Objects |
|
|
550 | (3) |
|
|
551 | (1) |
|
|
552 | (1) |
|
Building a SharedObject to Store Shopping Cart Data |
|
|
553 | (3) |
|
Reading Data from an Existing Shared Object |
|
|
556 | (4) |
|
Lesson 25 Debugging Flex Applications |
|
|
560 | (22) |
|
Introducing Debugging Techniques |
|
|
562 | (1) |
|
Watching Server-Client Data Exchange |
|
|
562 | (3) |
|
Learning More About the Debugger |
|
|
565 | (7) |
|
Learning More Details About Setting Breakpoints |
|
|
565 | (1) |
|
Inspecting Variables and Their Associated Values in the Debugger |
|
|
566 | (6) |
|
Handling Errors with try-catch |
|
|
572 | (10) |
|
Using the try-catch Syntax |
|
|
573 | (1) |
|
Understanding the Error Types |
|
|
574 | (1) |
|
Using Multiple catch Blocks |
|
|
575 | (1) |
|
Example Using Only One catch Block |
|
|
575 | (1) |
|
Example Showing Bad Practice of Using the Error Base Class in the First catch Block |
|
|
576 | (1) |
|
Using the finally Statement |
|
|
577 | (1) |
|
Using the throw Statement |
|
|
578 | (1) |
|
Creating Your Own Error Classes |
|
|
578 | (4) |
|
APPENDIX A Setup Instructions |
|
|
582 | (6) |
|
|
582 | (1) |
|
|
583 | (1) |
|
|
583 | (1) |
|
|
584 | (1) |
|
|
585 | (1) |
|
Installing the ColdFusion Extensions for Adobe Flex Builder 2 |
|
|
586 | (1) |
|
Starting Flex Data Services and ColdFusion |
|
|
586 | (1) |
|
Installing Flash Debug Player |
|
|
587 | (1) |
Index |
|
588 | |