Table of Contents
Preface
Chapter 1: Getting Started
Chapter 2: The Staples of Ext
Chapter 3: Forms
Chapter 4: Buttons, Menus, and Toolbars
Chapter 5: Displaying Data with Grids
Chapter 6: Editor Grids
Chapter 7: Layouts
Chapter 8: Ext JS Does Grow on Trees
Chapter 9: Windows and Dialogs
Chapter 10: Effects
Chapter 11: Drag-and-Drop
Chapter 12: It's All about the Data
Chapter 13: Code for Reuse: Extending Ext JS
Chapter 14: The Power of Ext JS: What Else Can You Do?
Index
- Chapter 1: Getting Started
- About Ext
- Ext: Not just another JavaScript library
- Cross-browser DOM (Document Object Model)
- Event-driven interfaces
- Ext and AJAX
- Getting Ext
- Where to put Ext
- Including Ext in your pages
- What do those files do?
- Using the Ext library
- Time for action
- The example
- Not working?
- Adapters
- Using adapters
- I'm asynchronous!
- Localization
- English only
- A language other than English
- Multiple languages
- Ext JS online community
- Summary
- About Ext
- Chapter 2: The Staples of Ext
- Ready, set, go!
- Spacer image
- Widget
- Time for action
- What just happened?
- Using onReady
- More widget wonders
- Meet JSON and the config object
- The old way
- The new way—config objects
- What is a config object?
- How does JSON work?
- Time for action
- Lighting the fire
- The workhorse—Ext.get
- Speed tip
- Summary
- Ready, set, go!
- Chapter 3: Forms
- The core components of a form
- Our first form
- Nice form—how does it work?
- Form fields
- Validation
- Built-in validation—vtypes
- Styles for displaying errors
- Custom validation—create your own vtype
- Masking—don't press that key!
- Radio buttons and check boxes
- It's not a button, it's a radio button
- X marks the check box
- The ComboBox
- Database-driven ComboBox
- TextArea and HTMLEditor
- Listening for form field events
- ComboBox events
- Buttons and form action
- Form submission
- Talking back—the server responses
- Loading a form with data
- Static data load
- Object reference or component config
- Instantiated
- Component config
- Summary
- Chapter 4: Buttons, Menus, and Toolbars
- A toolbar for every occasion
- Toolbars
- The button
- Menu
- Split button
- Toolbar item alignment, dividers, and spacers
- Shortcuts
- Icon buttons
- Button handlers—click me!
- Load content on menu item click
- Form fields in a toolbar
- Toolbars in windows, grids, and panels
- Summary
- Chapter 5: Displaying Data with Grids
- What is a grid anyway?
- Displaying structured data with a GridPanel
- Setting up a data store
- Adding data to our data store
- Defining your data for the data store
- Specifying data types
- Setting up a data store
- Displaying the GridPanel
- How did that work?
- Configuring the GridPanel
- Defining a Grids column model
- Using cell renderers
- Formatting data using the built-in cell renderers
- Creating lookup data stores—custom cell rendering
- Combining two columns
- Generating HTML and graphics
- Built-in features
- Client-side sorting
- Hidden/visible columns
- Column reordering
- Displaying server-side data in the grid
- Loading the movie database from an XML file
- Loading the movie database from a JSON file
- Loading data from a database using PHP
- Programming the grid
- Working with cell and row selections
- Listening to our selection model for selections
- Manipulating the grid (and its data) with code
- Altering the grid at the click of a button
- Advanced grid formatting
- Paging the grid
- Grouping
- Grouping store
- Summary
- Chapter 6: Editor Grids
- What can I do with an editable grid?
- Working with editable grids
- Editing more cells of data
- Edit more field types
- Editing a date value
- Edit with a ComboBox
- Reacting to a cell edit
- What's a dirty cell?
- Reacting when an edit occurs
- Deleting and adding in the data store
- Removing grid rows from the data store
- Adding a row to the grid
- Saving edited data to the server
- Sending updates back to the server
- Deleting data from the server
- Saving new rows to the server
- Summary
- Chapter 7: Layouts
- What are layouts, regions, and viewports?
- Our first layout
- Splitting the regions
- I want options
- Tab panels
- Adding a tab panel
- Widgets everywhere
- Adding a grid into the tabpanel
- Accordions
- Nesting an accordion layout in a tab
- Placing a toolbar in your layout
- A form to add new movies
- Tricks and advanced layouts
- Nested layouts
- Icons in tabs
- Programmatically manipulating a layout
- Now you see me, now you don't
- Give me another tab
- Summary
- What are layouts, regions, and viewports?
- Chapter 8: Ext JS Does Grow on Trees
- Planting for the future
- From tiny seeds...
- Our first sapling
- Preparing the ground
- A tree can't grow without data
- JSON
- A quick word about ID
- Extra data
- XML
- JSON
- Tending your trees
- Drag and drop
- Sorting
- Editing
- Trimming and pruning
- Selection models
- Round-up with context menus
- Handling the menu
- Filtering
- The roots
- TreePanel tweaks
- Cosmetic
- Tweaking TreeNode
- Manipulating
- Further methods
- Event capture
- Remembering state
- StateManager
- Caveats
- Summary
- Chapter 9: Windows and Dialogs
- Opening a dialog
- Dialogs
- Off the shelf
- Confirmation
- It's all progressing nicely
- Roll your own
- Behavior
- Off the shelf
- Windows
- Starting examples
- Paneling potential
- Layout
- Configuration
- When I'm cleaning windows
- The extras
- Desktopping
- Further options
- Framing our window
- Manipulating
- Events
- State handling
- Window management
- Default window manager behavior
- Multiple window example
- Customer service WindowGroups
- Summary
- Chapter 10: Effects
- It's elementary
- Fancy features
- It's ok to love
- Fxcellent functions
- Methodical madness
- Fading
- Framing
- Woooo: ghosting
- Highlighting
- Huffing and puffing
- Scaling the Ext JS heights
- Sliding into action
- Switching from seen to unseen
- Shifting
- And now, the interesting stuff
- Methodical madness
- The Fx is in
- Anchoring yourself with Ext
- Options
- Easy does it
- Multiple effects
- Chaining
- Queuing
- Concurrency
- Blocking and Ext.Fx utility methods
- Elemental
- Making a move
- Using Ext components
- Bring out the flash
- You're maskin', I'm tellin'
- Data binding and other tales
- Considering components
- QuickTipping
- You're maskin', I'm tellin'
- Summary
- Chapter 11: Drag-and-Drop
- Drop what you're doing
- Life's a drag
- Sourcing a solution
- Approximating
- Snap!
- Drop me off
- But wait: Nothing's happening!
- Sourcing a solution
- Interacting the fool
- Zones of control
- Changing our lists
- Zones of control
- Registering an interest
- Extreme drag-and-drop
- DataView dragging
- Dealing with drag data
- Proxies and metadata
- Dropping in the details
- Drag-drop groups
- Nursing our drag-drop to health
- It's all in the details
- Configuration
- It's all under control
- Managing our movement
- Global properties
- Scroll management
- Dragging within components
- TreePanel
- GridPanel
- Using it in the real world
- Summary
- Chapter 12: It's All about the Data
- Understanding data formats
- Basic remote panel data
- Gotchas with HTML data
- Other formats
- The data store object
- Defining data
- More on mapping our data
- Pulling data into the store
- Defining data
- Using a DataReader to map data
- Using a custom DataReader
- Getting what you want: Finding data
- Finding data by field value
- Finding data by record index
- Finding data by record ID
- Finding data by field value
- Getting what you want: Filtering data
- Remote filtering: The why and the how
- Understanding data formats
- Dealing with Recordset changes
- Many objects take a Store
- Store in a ComboBox
- Store in a DataView
- Stores in Grids
- Summary
- Chapter 13: Code for Reuse: Extending Ext JS
- Object-oriented JavaScript
- Object-oriented programming with Ext JS
- Inheritance
- Break it down and make it simple
- Sounds cool, but what does it mean?
- Now, what was this overriding stuff?
- Understanding packages, classes, and namespaces
- Packages
- Classes
- Namespaces
- What's next?
- Ok, what do we extend?
- Creating a custom namespace
- Our first custom class
- Overriding methods
- Understanding the order of events
- When can we do what?
- What is an event-driven application?
- When can we do what?
- Creating our own custom events
- Our first custom component: Complete
- What's next? Breaking it down
- Using xtype: The benefits of lazy instantiation
- Using our custom components within other objects
- Summary
- Chapter 14: The Power of Ext JS: What Else Can You Do?
- So much to work with
- Form widgets
- DateField
- TimeField
- NumberField
- CheckboxGroups and RadioGroups
- HtmlEditor
- Data formatting
- Basic string formatting
- Formatting dates
- Other formatting
- Managing application state
- Basic 'state'
- How do I get that window?
- Using the back button in Ext JS applications
- Accessing the DOM
- Finding DOM elements
- Manipulating the DOM
- Working with styles
- Ext JS for the desktop: Adobe AIR
- Ext JS community extensions
- DatePickerPlus
- PowerWizard
- TinyMCE
- SwfUploadPanel
- ColorPicker
- Additional resources
- Samples and demos
- Ext JS API
- Ext JS forums
- Step-by-step tutorials
- Community manual
- Spket IDE
- Aptana Studio
- Summary
- Where do we go from here?


