2. XPages Extension Library
Executive Summary
● Make the development of Domino Web applications easier and faster
● Lower the entry cost of Domino Web development
▬ Provide an extended set of out-of-the-box artifacts that encapsulate
many common patterns.
● Ease modernization of existing applications
● Make prototyping faster than ever
▬ Create a brand new, good looking, custom application in minutes!
▬ Simplify moving from prototype to an actual production ready
application
2
3. XPages Extension Library
What is the XPages Extension Library?
● A set of advanced, optimized, controls and other XPages assets
▬ Provide a rich UI to web applications through a set of new Web 2.0
controls/behaviors
▬ Does not require new knowledge beyond core XPages
● Integrates within Domino Designer
● Works on both the client and the server, and provides Mobile support
● Designed for performance from the ground-up
● Fully implemented using the XPages extensibility API
▬ Code source is available
▬ Installs on top of Notes/Domino 8.5.2
3
4. XPages Extension Library
Limitations with 8.5.2
● Focus on the runtime, not the design time experience
▬ Extensions will be added to Domino Designer
● UI is targeting OneUI and Vulcan
▬ Designed to support alternative themes
▬ Will require extensions to themes to fully take advantage of it
4
5. XPages Extension Library
What is Currently Available and Where?
● The Extension Library is currently under development
▬ Will be called 1.0 probably around the end of the 2010
▬ Also requires a complete tests set, localization...
▬ Code checked-in can change without notice (Open Source :-))
▬ Look and feel can also change
● A new project is available on openNTF, which comprises
▬ A compiled version of the library, as an Eclipse update site
▬ Needs more optimization on the Dojo side (custom build)
▬ A demo database showing the components in action
▬ A documentation being written and provided as a PDF file
▬ A Subversion repository containing the full source code
▬ Read only access unless more is requested. We have to limit the
committers and go through code reviews
5
6. XPages Extension Library
Where is the code on openNTF?
● One project is available
▬ It contains:
▬ The binary plug-ins, ready to install
▬ A sample database showing the features in action
▬ A PDF documentation
http://extlib.openntf.org/
● The source code is available from a Subversion Server. Anonymous has
read only access
▬ https://svn-166.openntf.org/svn/xpages
6
7. XPages Extension Library
What You Can Do With The Library
● Start to understand and experiment with this new capability
▬ You can already use the capability within your applications, just be
aware that this is under development and can change over time
● Report early feedback in order to influence the design of the component
● Inspect the source code to better understand the XPages Extensibility
API
▬ Contribute ideas, components, fixes, documentation
Spread out the message!
7
8. XPages Extension Library
● Define the first shot of the application in minutes
● Make this application looks good from the beginning
8
9. XPages Extension Library
Solution for the Writer's Block
● XPages makes it easy to create a new application but there is a gap
between the first shot and a full featured, well looking application
● At times, developers don't know where to start
▬ Requires a fair amount of work to put the main application layout
(code, CSS...), the navigation mechanism, selection handling ...
From this
To that
9
10. XPages Extension Library
Application Layout
● Abstract the main characteristics of an application into a set of
parameters
▬ Easy to configure using Domino Designer
● The XPages runtime renders the final application based on the layout
definition:
▬ The abstraction does not preclude how the app will be finally
rendered – Different renderers could be used
▬ Handles all the low level details (ex: displaying a pop-up menu,
maintaining some current page context...)
10
11. XPages Extension Library
OneUI Application Layout
● Get a running OneUI application in less than 5 minutes!
● Fully customizable OneUI rendering
▬ Abstracts all the OneUI application parts
▬ Can even be customized by providing a inherited renderer
● Get ready for the upcoming Vulcan look and feel
11
12. XPages Extension Library
● Extends the end user experience by providing new controls and
behaviors
▬ Match the new UI trends – Vulcan
● Make it easy to use for the XPages developer
▬ Well integrated in the XPages page lifecycle
▬ Easy Designer experience
12
13. XPages Extension Library
New Set of Dojo Controls
● Leveraging the Dojo form controls
▬ Extended set of input controls
▬ Spinner, sliders,...
▬ Dojo client side validation enabled
● New Dojo containers for high user interactivity
▬ Tabbed panels, layout...
13
14. XPages Extension Library
User Actions Through Outlines/Menus
● Provide a generic way for building action bars
▬ Hierarchical navigators, accordions, pop-up menus, trees...
▬ Content can be static (defined in the page), dynamic (retrieved from
a data source) or a mix of both.
▬ Easy mapping to actions (client and/or server side)
14
15. XPages Extension Library
Extended Editing Context
● Beyond the traditional web form/submit/navigate pattern
In Context Editing
▬ Editing the data “In Context”
▬ Provide various flavors of dialogs
Modal Dialog
Dynamic Tabbed Interface
Tooltip Dialog
15
16. XPages Extension Library
Value and Name Pickers
● Select data from any data source
▬ Domino view, Address Book, Managed bean..
● Integrated with the standard TypeAhead component
● Pluggable UI for high degree of customization
16
17. XPages Extension Library
New View Control with Custom Layout
● Easy data binding to view data
● Custom layout of the expandable detail section
● A new managed bean keeps the view context (current page, expanded
rows...)
17
18. XPages Extension Library
Interactive Views
● View content rendered in a scrollable grid
▬ Either the Dojo grid or the iNotes virtual list, depending on the need
▬ iNotes virtual list supports categorization, document hierarchy...
▬ Dojo grid supports editing and is not tied to Views
● Data is accessed using REST services provided by the XPages
▬ Custom columns can be computed, and events handled
▬ Documents can also be updated for the column pointing to fields
18
19. XPages Extension Library
Access to Calendar Views
● Visualize calendar Notes/Domino views
● Add CRUD operations through custom forms
19
20. XPages Extension Library
Dynamic Pages
● Make the content of a page dynamic
▬ Parts of the page are discarded/reconstructed on demand
● The user never leaves the current page
▬ Very efficient runtime behavior
● The context is kept using the URL hash technique
▬ Makes it “bookmarkable”, and enables the back button
20
21. XPages Extension Library
● Provide ready to use, well tested code, that handles common situations
● Wrap the Dojo complexity into components and simple actions
21
23. XPages Extension Library
Dojo Client Side Simple Actions
● Make Dojo easier to use through simple actions
▬ The Dojo code is generated based on the action properties
23
24. XPages Extension Library
● Define an architecture for hosting REST services within an XPage
● Make these REST services connected with Dojo store for easy
consumption
24
25. XPages Extension Library
Creating REST Services
● Defining a REST service architecture
▬ Definition of parameterizable REST service engines
▬ Created as a hierarchy of reusable, customizable services
▬ Independent from XPages: can be triggered from a servlet
▬ Multiple possible renderings: XML, JSON, binary...
● An XPages component can have 2 faces:
▬ It renders HTML during the render phase
▬ It can render other kind of data on postback request
▬ Identified by a path info in the URL, or a component client id
▬ High level of security: View columns/field can be hidden, postback
can be restricted to the pages running the service...
25
26. XPages Extension Library
XPages REST Service Component
● A new XPages component instanciates a REST service engine
▬ Delegates to the engine on postback calls
▬ Renders a Dojo store that connects to the service
● Many services are available
▬ Domino View, Document, Value picker...
▬ Can be consumed by client controls, like Dojo grid
26
27. XPages Extension Library
Calling Server Code using JSON RPC
● JSON RPC allows a client to call methods running on the server
▬ A client JavaScript object exposes methods that call a service
▬ The server provides the implementation of the method
▬ The Extension Library provides an engine that can be triggered
from a servlet or an XPages component
● An XPage component makes it easier
▬ Generates the client side JavaScript object that connects back to the
server
▬ Uses JavaScript on the server for the method implementation
▬ Allows complex JavaScript objects to be passed as parameters
27
28. XPages Extension Library
● Provide the necessary components to integrate with:
▬ Lotus Sametime
▬ Lotus Connections
28
29. XPages Extension Library
Content Type Rendering
● Computed fields, as well as view columns, supports a content type
property
▬ Generally support Text or HTML
▬ But can be extended to support custom rendering
● New renderers can be contributed through extension points
29
32. XPages Extension Library
● Enable developers to develop mobile apps via XPages'
rapid application development mechanism
● Enable developers to build mobile apps that look & feel
like native apps to achieve the best user experience
● Enable developers to build sophisticated mobiles apps
accessing native services and supporting offline
● Allow building mobile apps for Android™, iPhone® and
Blackberry® using XPages
32
33. XPages Extension Library
Use of HTML/JavaScript/CSS
● Based on the initial set of XPages controls provided on openNTF
▬ But using native controls
● Web technologies are used, with eventually native extensions
▬ Dojo Mobile – Since Dojo 1.5
▬ PhoneGap or other libraries to get access to native platform
services (wink toolkit?, cubiq.org?)
▬ Integration of new libraries (wink toolkit?, cubiq.org?)
33
34. XPages Extension Library
What the Library is Providing
● Automatic detection of the device based on the user agent
▬ Current device is available to JavaScript
● New themes targeting the mobile platforms
▬ Adapts to the look and feel of the platform
▬ 3 themes currently proposed: iPhone, BlackBerry and Android
● Set of new, mobile dedicated controls
▬ Application configuration/layout
▬ New renderers for existing controls (ex: view)
▬ Mobile specific controls (ex: on/off)
34
35. XPages Extension Library
Application Configuration/Layout
● Define one XPages that contain the entire application
▬ Uses a dynamic JSF tree on the server
▬ Allows smooth transition between the pages
● Application Configuration
▬ Defines the main options the mobile application
▬ Option menus, …
35