Learning to run

Post on 21-Jan-2015

1,496 views 1 download

Tags:

description

XPages for Lotus Notes Client Developers

transcript

Learning To Run

Presenter: Kathy Brown

1

XPages for Lotus Notes Client Developers

Who am I

• Kathy Brown• Lotus Notes Developer, primarily for the Notes client, until recently•Co-author of the Lotus User Group Notes Developer Tips Newsletter• Speaker at Lotusphere and various LUGs• Twitter addict•Runner

What this session is...

• Tips and transitions for Notes client developers

What this session is not...

• A step-by-step how to• Best practices• Advanced topics

Building Blocks

• Forms• Views• Subforms• Framesets• Outlines• Pages

Building Blocks

• XPages• Core Controls• Container Controls• Custom Controls

Separation of Data and UI

• Traditional Notes Dev• Forms combine data and UI

• XPages• Separate data from UI•Create forms just as data

holders, no need to prettify•Create views for lookups, no

need to prettify (no need for dual sorting!)

Customer NameCustomer IDCustomer AddressCustomer Purchases

Widget IDWidget NameWidget DescriptionWidget Image

Customer NameCustomer AddressWidget IDWidget NameWidget Description

Data Binding

• Because data and UI are separate, we need to “bind” data to our elements

• Xpage•Can define a domino document or view as a data source

• Custom Controls and Container Controls like Panel•Can define a domino document or view as a data source

• Repeat Controls and certain Core Controls•Use data binding

Data Binding

• Simple data binding• Select a source from a list, or add another source• Select an item to bind to•Example: select a document from the source and a field from that

document to bind to• Javascript•Utilize the JavaScript editor to write Server Side Javascript (SSJS)•Example:

database.getView(“movies”).getAllDocumentsByKey(genre);• Advanced•Use expression language, scoped variable, component parameter or

custom code for data binding

DDE

Quick Tip

• Window --> Reset Perspective is your friend

The Outline

• Easily locate items on the Xpage• Drag & drop items to new locations

Source

• Easily change values or properties• See the Matrix

Design Pane

Properties

Core Controls

What’s with those “group” controls?

Something familiar*

• Edit Box• Rich Text• Multiline Edit Box• List Box• Combo Box

* Sort of

Quick Tip

• When adding @formula values for a combo box or list box, the default condition is “Compute on Page Load”. Remember to change that to “Compute Dynamically” in the script editor

OR go to the Source tab and change the “$” to “#”

More Core Controls

Core Controls - Label

• Why use a label?

• More control• More programmability

Core Controls - Errors

• Use to display ... errors

Panel Control

• Sort of, kind of, like a layer...on steroids

• Or like an embedded view...on steroids

• Or like if a layer and an embedded view had a baby

Repeat Controls

• No traditional Notes Client equivalentand that’s a good thing

• A repeat control allows you place controls inside it (like Edit boxes or computed values, but also more repeat controls!) that repeat on the page

Container Controls

• Include Page - allows you to include an Xpage on another Xpage• Table - we all know about this one!• View - kind of like an embedded view, but better• Tabbed Panel - multiple panels with...wait for it...tabs!• Section - we know about these, too

Custom Controls

• Closest traditional equivalent are subforms• Create custom controls to hold other controls stored together• Can be a “create once, use multiple times for footers and headers, for

example

Quick Tip

• CTRL+SHIFT+F in the source

@Formula in Xpages

• @Formula is available for use in Server Side JavaScript (SSJS)• Not all @Formula are supported in Xpages

@Functions Not Supported in Xpages

@AbstractSimple @CheckAlarms @DeleteField @DoWhile

@Accessed @CheckFormulaSyntax @DialogBox @EditECL

@ACos @Command @DocChildren @EditUserECL

@AddToFolder @Compare @DocDescendants @EnableAlarms

@AdminECLIsLocked @ConfigFile @DocFields @Environment

@All @Cos @DocLength @Eval

@AllChildren @DB2Schema @DocLevel @Exp

@AllDescendants @DbCommand @DocLock @FileDir

@Ascii @DbExists @DocMark @FloatEq

@ASin @DbManager @DocNumber @FontList

@ATan @DDEExecute @DocOmmittedLength @For

@ATan2 @DDEInitiate @DocParentNumber @FormLanguage

@BrowserInfo @DDEPoke @DocSiblings @GetAddressBooks

@BusinessDays @DDETerminate @DocumentUniqueID @GetCurrentTimeZone

@Certificate @DeleteDocument @Domain @GetDocField

@Functions Not Supported in Xpages@GetFocusTable @IsDocBeingRecalculated @Locale @OrgDir

@GetHTTPHeader @IsDocTruncated @Log @Password

@GetIMContactListGroupNames @IsEmbeddedInsideWCT @MailDbName @PasswordQuality

@GetPortsList @IsExpandable @MailEncryptSavedPreference @Pi

@GetProfileField @IsInCompositeApp @MailEncryptSentPreference @PickList

@GetViewInfo @IsModalHelp @MailSavePreference @Platform

@HardDeleteDocument @IsUsingJavaElement @MailSend @PolicyIsFieldLocked

@HashPassword @IsValid @MailSignPreference @PostedCommand

@InheritedDocumentUniqueID @IsVirtualizedDirectory @Matches @Power

@IsAgentEnabled @Keywords @NameLookup @Prompt

@IsAppInstalled @LanguagePreference @Narrow @RefreshECL

@IsCategory @LaunchApp @NoteID @RegQueryValue

@IsDB2 @LDAPServer @Nothing @Responses

@IsDocBeingEdited @Like @OpenInNewWindow @ServerAccess

@IsDocBeingMailed @Ln @OptimizeMailAddress @ServerName

@Functions Not Supported in Xpages@Set @TemplateVersion @URLHistory @ViewTitle

@SetDocField @ThisName @URLOpen @WebDbName

@SetEnvironment @ThisValue @UrlQueryString @WhichFolders

@SetHTTPHeader @TimeMerge @UserAccess @While

@SetProfileField @TimeToTextInZone @UserNameLanguage @Wide

@SetTargetFrame @TimeZoneToText @UserNamesList @Zone

@SetViewInfo @ToNumber @UserPrivileges DEFAULT

@ShowParentPreview @ToTime @UserRoles ENVIRONMENT

@Sign @Transform @V2If FIELD

@Sin @Unavailable @V3UserName REM

@Sort @UndeleteDocument @V4UserAccess SELECT

@Soundex @UpdateFormulaContext @ValidateInternetAddress

@Sqrt @URLDecode @VerifyPassword

@StatusBar @URLEncode @Version

@Tan @URLGetHeader @ViewShowThisUnread

@Formula Syntax

• Three syntactic changes to use @Formula in Xpages:•Use commas rather than semicolons•Use exact case

Example:var uname = @Name(“[CN]”, @UserName())

• “null” should be used in place of 0 for formulas such as @Adjust

Example:var aDate = @Adjust(@Created(), null, null, 5, null, null, null)

@Formula Help

@Formula Help

• Help file is not very helpful!• @Name(“[CN]”, name) - needs those quotes! • @UserName() - needs those parentheses!

@Name in Help

Server Side Javascript (SSJS)

• Server side Javascript is not LotusScript• BUT it is close enough to fool you

var someValue = entry.getColumnValues()[3]• Get a map

http://bit.ly/XpagesMap• Go green!

http://bit.ly/Recycle1http://bit.ly/Recycle2

Xpages Domino Object Map

Close...

But Not Quite

Scoped Variables

• applicationScope• sessionScope• viewScope• requestScope

Quick Tip

• Turn off “Synchronize Navigator with Editor Tab”

CSS and Themes

• Roll your own or• Start with a framework*• http://bit.ly/XpageFramework• http://blueprintcss.org

✴Start with a framework

Firebug

• Use it

Quick Tip

• Create different search scopes for the not-so-helpful help file

Learn Javascript and Java

• Javascript• http://www.w3schools.com/js/default.asp• http://bit.ly/JavaScriptDefinitive

• Java• http://bit.ly/HeadFirstJava• http://www.javavideotutes.com/

Test Server - Get One

• Typical Lotus Client development can get away with “testing” on a production server

• Doing that with Xpages...

Sample Applications - Get Some

• Download applications and dig through them to see how they were created• Frameworks on OpenNTF•Matt White and Tim Clark’s Show and Tell sample app

Quick Tip

• Turn on “Select controls dialog box”

Quick Tip

• Visible versus Hide When

Quick Tip

• Turn off Build Automatically

Quick Tip

Quick Tips

• Upgrade whenever possible• Learn Eclipse

Resources

• http://xpages101.net• http://notesin9.com• http://xpag.es/?cheatsheet• http://planetlotus.org• http://openntf.org• http://tlcc.com• http://ntf.gbs.com/nathan/escape.nsf/d6plinks/NTFN-8GP6RP

THANK YOU

• kathy@runningnotes.net• @RunningKathy or @NotesDevTips• http://runningnotes.net