The Vaadin core library is just the beginning. Vaadin is designed to be highly extendable with third-party components, themes, data binding implementations, and tools. The add-ons are an important part of the Vaadin ecosystem, supporting also different business models for different needs.

Table of Contents

15. Using Vaadin Add-ons
15.1. Overview
15.2. Downloading Add-ons from Vaadin Directory
15.3. Compiling Add-on Widget Sets
15.3.1. Compiling Widget Sets in Eclipse
15.3.2. Compiling Widget Sets with an Ant Script
15.3.3. Troubleshooting
15.4. Removing Add-ons
15.5. Using Add-ons in a Maven Project
15.5.1. Adding a Dependency
15.5.2. Enabling Widget Set Compilation
15.5.3. Updating and Compiling the Project Widget Set
16. Vaadin Calendar
16.1. Overview
16.2. Installing Calendar
16.3. Basic Use
16.3.1. Setting the Date Range
16.3.2. Adding and Managing Events
16.3.3. Getting Events from a Container
16.4. Implementing an Event Provider
16.4.1. Custom Events
16.4.2. Implementing the Event Provider
16.5. Configuring the Appearance
16.5.1. Sizing
16.5.2. Styling
16.5.3. Visible Hours and Days
16.6. Drag and Drop
16.7. Using the Context Menu
16.8. Localization and Formatting
16.8.1. Setting the Locale and Time Zone
16.8.2. Time and Date Caption Format
16.9. Customizing the Calendar
16.9.1. Overview of Handlers
16.9.2. Creating a Calendar
16.9.3. Backward and Forward Navigation
16.9.4. Date Click Handling
16.9.5. Handling Week Clicks
16.9.6. Handling Event Clicks
16.9.7. Event Dragging
16.9.8. Handling Drag Selection
16.9.9. Resizing Events
17. Vaadin Timeline
17.1. Overview
17.2. Using Timeline
17.2.1. Data Source Requirements
17.2.2. Events and Listeners
17.2.3. Configurability
17.2.4. Localization
17.3. Code example
17.3.1. Prerequisites
17.3.2. Create the data sources
17.3.3. Create the Vaadin Timeline
17.3.4. Final Touches
18. Vaadin JPAContainer
18.1. Overview
18.2. Installing
18.2.1. Downloading the Package
18.2.2. Installation Package Content
18.2.3. Downloading with Maven
18.2.4. Including Libraries in Your Project
18.2.5. Persistence Configuration
18.2.6. Troubleshooting
18.3. Defining a Domain Model
18.3.1. Persistence Metadata
18.4. Basic Use of JPAContainer
18.4.1. Creating JPAContainer with JPAContainerFactory
18.4.2. Creating and Accessing Entities
18.4.3. Nested Properties
18.4.4. Hierarchical Container
18.5. Entity Providers
18.5.1. Built-In Entity Providers
18.5.2. Using JNDI Entity Providers in JEE6 Environment
18.5.3. Entity Providers as Enterprise Beans
18.6. Filtering JPAContainer
18.7. Querying with the Criteria API
18.7.1. Filtering the Query
18.7.2. Compatibility
18.8. Automatic Form Generation
18.8.1. Configuring the Field Factory
18.8.2. Using the Field Factory
18.8.3. Master-Detail Editor
18.9. Using JPAContainer with Hibernate
18.9.1. Lazy loading
18.9.2. The EntityManager-Per-Request pattern
18.9.3. Joins in Hibernate vs EclipseLink
19. Mobile Applications with TouchKit
19.1. Overview
19.2. Considerations Regarding Mobile Browsing
19.2.1. Mobile Human Interface
19.2.2. Bandwidth
19.2.3. Mobile Features
19.2.4. Compatibility
19.3. Creating a Project Targeting Multiple Devices
19.3.1. Using TouchKit Add-on in a Project
19.3.2. Application
19.4. Mobile User Interface Components
19.4.1. NavigationView
19.4.2. Toolbar
19.4.3. NavigationManager
19.4.4. NavigationButton
19.4.5. Popover
19.4.6. Switch
19.4.7. VerticalComponentGroup
19.4.8. HorizontalComponentGroup
19.4.9. TabBarView
19.4.10. EmailField
19.4.11. NumberField
19.4.12. UrlField
19.5. Mobile Features
19.5.1. Geolocation
19.6. Testing and Debugging on Mobile Devices
19.6.1. Debugging
20. Vaadin TestBench
20.1. Overview
20.2. Installing Vaadin TestBench
20.2.1. Test Development Installation
20.2.2. A Distributed Testing Environment
20.2.3. Downloading and Unpacking the Installation Package
20.2.4. Installation Package Contents
20.2.5. Example Contents
20.2.6. Installing the Recorder
20.2.7. Installing Browser Drivers
20.2.8. Test Node Configuration
20.3. Preparing an Application for Testing
20.4. Using Vaadin TestBench Recorder
20.4.1. Starting the Recorder
20.4.2. Recording
20.4.3. Selectors
20.4.4. Playing Back Tests
20.4.5. Editing Tests
20.4.6. Exporting Tests
20.4.7. Saving Tests
20.5. Developing JUnit Tests
20.5.1. Starting From a Stub
20.5.2. Finding Elements by Selectors
20.5.3. Running JUnit Tests in Eclipse
20.5.4. Executing Tests with Ant
20.5.5. Executing Tests with Maven
20.5.6. Test Setup
20.5.7. Creating and Closing a Web Driver
20.5.8. Basic Test Case Structure
20.5.9. Waiting for Vaadin
20.5.10. Testing Tooltips
20.5.11. Scrolling
20.5.12. Testing Notifications
20.5.13. Testing Context Menus
20.5.14. Profiling Test Execution Time
20.6. Taking and Comparing Screenshots
20.6.1. Screenshot Parameters
20.6.2. Taking Screenshots on Failure
20.6.3. Taking Screenshots for Comparison
20.6.4. Practices for Handling Screenshots
20.6.5. Known Compatibility Problems
20.7. Running Tests in an Distributed Environment
20.7.1. Running Tests Remotely
20.7.2. Starting the Hub
20.7.3. Node Service Configuration
20.7.4. Starting a Grid Node
20.7.5. Mobile Testing
20.8. Known Issues
20.8.1. Testing the LoginForm
20.8.2. Using assertTextPresent and assertTextNotPresent
20.8.3. Exporting Recordings of the Upload Component
20.8.4. Running Firefox Tests on Mac OS X