just the facets ma'am - mwlug 2013
DESCRIPTION
Co-presented with Paul Della-Nebbia at MWLUG 2013. This presentation is all about facets in XPages. It explains the concepts, shows how you're already using facets without realizing it, and shows how to start making use of facets in your own custom controls. It digs further into how to use facets in developing form tables, data views, and the application layout control. Finally, it demonstrates why the Dynamic Content facet is a more performant option for dynamic components over the Switch Facet control or just using the Rendered property.TRANSCRIPT
MWLUG 2013
Just the Facets, Ma’am
Brad Balassaitis, PSC GroupPaul Della-Nebbia, TLCC
Just the Facets, Ma’am
2
Join special agents Joe Friday and Frank Smith (Brad B and Paul D) as they uncover all the facts, and just the facts, about facets. Watch as they filter through the opinions, rumors and misconceptions to get answers to all the tough questions like "What are facets?", "When and how should I use them?", "Who else is using them?" and "Why should I even care?" Witness as they discover the xp:key differences and benefits of both named and unnamed facets. Follow our pragmatic pair as they argue and each make a case for xe:dynamicContent or xe:switchFacet. Listen as they reveal the flexibility and power of facets in the Form Table, Data View and Application Layout design frameworks.
Paul Della-NebbiaFounding Partner
TLCC
Brad BalassaitisSenior Consultant/XPages Developer
PSC Group
What We’ll Cover …
• Callbacks, Facets and Keys• Adding an Editable Area to a Custom Control • Form Table design framework• Data View design framework • Application Layout design framework • Dynamic Content and Facets• Q & A
3
Callbacks, Facets, and Keys
What’s a facet?
A. A named area in a control, addressable via xp:keyB. The resulting drop location to add a component for an Editable
Area added to a custom control.C. A named child instead of a sequential one. Only used if the
parent chooses to. Sequential children are comparatively autonomous.
D. All of the above.E. None of the above.
4
Callbacks, Facets and Keys
What’s a callback?
A. An event on a custom control that can be coded return a value from its containing XPage.
B. A design editable area added to a custom control.C. Usually, an indication that your initial audition went well.D. All of the above.E. None of the above.
5
Callbacks, Facets and Keys
6… cont …
Callbacks, Facets and Keys
7
DemoXPage112
DemoXPage112
Named and Unnamed Facets …
8
… cont …
Named and Unnamed Facets
9
DemoXPage113
What We’ll Cover …
• Callbacks, Facets and Keys • Adding an Editable Area to a Custom Control • Form Table design framework • Data View design framework • Application Layout design framework • Dynamic Content and Facets• Q & A
10
Editable Area control
• Add Editable Area control (xp:callback) to Custom Control
11
Editable Area control
• Add custom control with callback to XPage• Add panel to editable area• Custom control gets this.facets tag and panel gets xp:key attribute
12
Creating Custom Layout Control
• Set up a layout structure in a custom control• Add Editable Area controls to each section
13
Creating Custom Layout Control
• Add layout control to an XPage and drop in content
14
What We’ll Cover …
• Callbacks, Facets and Keys • Adding an Editable Area to a Custom Control • Form Table design framework • Data View design framework • Application Layout design framework • Dynamic Content and Facets• Q & A
15
Form Table design framework
16
Tip: Alternative Approach
• Form Table and Form Layout Row
17
Add a Form Table to an XPage
• Procedure: Adding and configuring form rows
18
1
2
3
Add Form Layout Row to Form Table
… cont’d …
Tip: Alternative Approach
• Tip: Alternative approach to adding the Input controls
19
Multi-Column Form table
• Creating a Multi-Column Form table
20
Add a Form Table to an XPage
• Procedure: Form Buttons and Page Navigation
21
Add action controls & set navigation
What We’ll Cover …
• Callbacks, Facets and Keys • Adding an Editable Area to a Custom Control • Form Table design framework • Data View design framework • Application Layout design framework • Dynamic Content and Facets• Q & A
22
Data View versus View Panel control
23
24
Data View design framework
• Properties, Complex Properties, and Facets
Procedure: Creating a Data View
25
… cont …
• Add a Data View
Procedure: Creating a Data View
26
… cont …
• Data View Design
Procedure: Creating a Data View
27
… cont …
• Set the var property
Procedure: Creating a Data View
28
… cont …
• Summary Column and Extra Columns
Procedure: Creating a Data View
29
… cont …
• Data View Properties
Procedure: Creating a Data View
30
DemoXPage512View
• Computed Details
In-View Editing using a Dialog control
• Technique: In-View Editing using a Dialog Control …
31
… cont …
In-View Editing Using Dialog Control …
• Technique: In-View Editing Using a Dialog Control …
32
… cont …
1 2
return viewEntry.getNoteID();
In-View Editing Using Dialog Control …
• Technique: In-View Editing Using a Dialog Control …
33
34
var c = getComponent("dialog1"); c.hide("detailPanel");
DemoXPage543View … cont …
In-View Editing using a Tooltip Dialog
• Technique: In-View Editing using a Tooltip Dialog control
34
DemoXPage544View
XSP.openTooltipDialog("#{id:tooltipDialog1}","#{id:computedField2}")
In-View Editing using an In-Place Form
• Technique: In-View Editing using an In-Place Form Control
35
DemoXPage545View
36
Customizing Summary
• Technique: Customizing Summary• Add panel to Summary facet and add custom content into panel• Build link to open document
37
Toggle the Detail Row
• Toggle the Detail Row
DemoXPage554
What We’ll Cover …
• Callbacks, Facets and Keys • Adding an Editable Area to a Custom Control • Form Table design framework • Data View design framework • Application Layout design framework • Dynamic Content and Facets• Q & A
38
OneUI Version 2.1 Themes
39
The oneuiv2.1 Themes
40
OneUI version 2 Themes:<NotesDominoDataDirectory>\domino\html\oneuiv2.1
OneUI version 2 Theme definitions:<NotesDominoProgramDirectory>\xsp\nsf\themes
Setting a oneuiv2.1 Theme
• Procedure: Setting a oneuiv2.1 Theme for an Application
41
OR …
42
Extend oneuiv2.1 Theme
• Procedure: Creating a Theme That Extends a oneuiv2.1 Theme
DemoXPage721
(xrd9one.nsf )
Configuration Property & Facets
43… cont …
• Six facet areas
• Five bar areas
44
Adding Application Layout Control
• Procedure: Adding an Application Layout Control to an XPage …
… cont …
Configuration Property & Facets
45
Application Layout in a CC
• Designing an Application Layout in a Custom Control
46
Differences when Designing an Application Layout in a Custom Control versus an XPage
47
Example xe:applicationLayout Design
• Example xe:applicationLayout Design for Following Procedure
DemoXPage761_CustByNameView
48
Designing an Application Layout in a CC
• Procedure: Designing an Application Layout in a Custom Control
… cont …
49
Designing an Application Layout in a CC
• Procedure: Designing an Application Layout in a Custom Control
… cont …
50
Designing an Application Layout in a CC
• Procedure: Designing an Application Layout in a Custom Control
Recommendations for Facets …
• Design and Naming Recommendations for Facets …
51… cont …
Recommendations for Facets
• Design and Naming Recommendations for Facets
52
53
Demo App - Design Overview
• Overview for Design of Six XPages in Demonstration Application
Demo761_AppLayout.xsp
Application Layout Design Strategies …
54
Design Layout #1 – One Application Layout Custom Control for each Application
… cont …
Design Layout #2 – LeftColumn Navigation
Design Layout #3 – titleBarTabs Navigation with no LeftColumn facet
Application Layout Design Strategies …
55… cont …
Design Layout #4 – titleBarTabs with LeftColumn facet Navigation
Design Layout #5 – Application Suites via bannerApplicationLinks
Application Layout Design Strategies
56
Design Layout #6 – Web site Design
Design Layout #7 – Enabling the Search Bar in a Multi-Application Design
What We’ll Cover …
• Callbacks, Facets and Keys • Adding an Editable Area to a Custom Control • Form Table design framework • Data View design framework • Application Layout design framework • Dynamic Content and Facets• Q & A
57
Rendered Property (like Hide-When)
58
(viewScope.Country=="USA")?true:false
(viewScope.Country==“Canada")?true:false
DemoXPage231
Rendered Property and JSF Life Cycle
59
XPages Masterclass Video Series with Tony McGuckinhttp://tonymcguckin.wordpress.com/2013/04/22/xpages-masterclass-series-1/
Switch facet control
60
Procedure: Add Switch Control to XPage
61
Add/configure selectable facets to editable area
… cont …
62
Procedure: Add Switch Control to XPage
Configure “switch” functionality
Switch Control (with No Default Facet)
63
DemoXPage242 …
Dynamic Content control
• Dynamic Content Control and the XPages Component Tree …
64
… cont …
65
XPages Component Tree …
• Dynamic Content Control and the XPages Component Tree …
… cont …
66
XPages Component Tree
• Dynamic Content Control and the XPages Component Tree
switchFacet versus dynamicContent
DemoXPage253
Add Dynamic Content Control …
67… cont …
Add/configure selectable facets to editable area
Changing Content on Client Side
• Two ways to change content on client side:
68
1
2
Changing Content on Server Side
• Two ways to change content on server side:
69
1
2
DemoXPage251
var dc=getComponent("dynamicContent1");
dc.show("provinces")
Dynamic Rendering Techniques
• Comparison of Dynamic Rendering Techniques
70
What We’ll Cover …
• Callbacks, Facets and Keys • Adding an Editable Area to a Custom Control • Form Table design framework • Data View design framework • Application Layout design framework • Dynamic Content and Facets• Q & A
71
Some Key Points …
• Facets are named areas in a control, addressable via xp:key• Form Table, Data View and Application Layout controls
– framework controls to display Domino documents and views– Rapid XPages development of Web 2.0 apps in a oneui framework– details facet of xe:dataView like a built-in repeat
• Rendered property …– Like hide-when, often the first choice for dynamic content, but …
• Inefficient in JSF life cycle (recalculated in all 4 application-level phases)• Inefficient in component tree (rendered=“false”)
• Use xe:dynamicContent control – Offers greatest flexibility to dynamically switch content– Only the displayed facet is added to the component tree
representation for XPage
72
73
For more information …
• www.tlcc.com/mwlug– Seven XPages Courses!– Rapid XPages Development using Application Layout and Dojo UI
Controls– 20% off special offer to MWLUG attendees to September 30th
• openNTF.org– Extension Library Project and ExtLib Demonstrations application
• Xcellerrant.net – Brad Balassaitis Blog series– Dojo Grids in XPages– Data View series
Brad BalassaitisPSC GroupSenior Consultant/XPages DeveloperTwitter: @BalassaitisXcellerant.net
Q & A
74
Paul Della-NebbiaTLCC, founding partner, [email protected]: @pauldnwww.tlcc.com/mwlug