Learning to run


Published on

XPages for Lotus Notes Client Developers

Published in: Technology, Business
1 Comment
  • Hi there. I'm posting all my slides on my slideshare page now. I was wondering if you wouldn't mind taking this down to avoid confusion? I messaged you, but havent heard back yet. Thanks!
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Learning to run

  1. 1. 1 Learning To RunXPages for Lotus Notes Client Developers Presenter: Kathy Brown
  2. 2. 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
  3. 3. What this session is... • Tips and transitions for Notes client developers
  4. 4. What this session is not... • A step-by-step how to • Best practices • Advanced topics
  5. 5. Building Blocks • Forms • Views • Subforms • Framesets • Outlines • Pages
  6. 6. Building Blocks • XPages • Core Controls • Container Controls • Custom Controls
  7. 7. 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!)
  8. 8. Customer NameCustomer IDCustomer AddressCustomer Purchases Customer Name Customer Address Widget ID Widget Name Widget Description Widget ID Widget Name Widget Description Widget Image
  9. 9. 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
  10. 10. 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
  11. 11. DDE
  12. 12. Quick Tip • Window --> Reset Perspective is your friend
  13. 13. The Outline • Easily locate items on the Xpage • Drag & drop items to new locations
  14. 14. Source• Easily change values or properties• See the Matrix
  15. 15. Design Pane
  16. 16. Properties
  17. 17. Core Controls
  18. 18. What’s with those “group” controls?
  19. 19. Something familiar* • Edit Box • Rich Text • Multiline Edit Box • List Box • Combo Box * Sort of
  20. 20. 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 “#”
  21. 21. More Core Controls
  22. 22. Core Controls - Label • Why use a label? • More control • More programmability
  23. 23. Core Controls - Errors • Use to display ... errors
  24. 24. 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
  25. 25. Repeat Controls • No traditional Notes Client equivalent and 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
  26. 26. 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
  27. 27. 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
  28. 28. Quick Tip • CTRL+SHIFT+F in the source
  29. 29. @Formula in Xpages• @Formula is available for use in Server Side JavaScript (SSJS)• Not all @Formula are supported in Xpages
  30. 30. @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
  31. 31. @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
  32. 32. @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
  33. 33. @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)
  34. 34. @Formula Help
  35. 35. @Formula Help• Help file is not very helpful!• @Name(“[CN]”, name) - needs those quotes!• @UserName() - needs those parentheses!
  36. 36. @Name in Help
  37. 37. 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/Recycle1 http://bit.ly/Recycle2
  38. 38. Xpages Domino Object Map
  39. 39. Close...
  40. 40. But Not Quite
  41. 41. Scoped Variables • applicationScope • sessionScope • viewScope • requestScope
  42. 42. Quick Tip • Turn off “Synchronize Navigator with Editor Tab”
  43. 43. CSS and Themes• Roll your own or• Start with a framework* • http://bit.ly/XpageFramework • http://blueprintcss.org ✴Start with a framework
  44. 44. Firebug • Use it
  45. 45. Where To Get Help • http://www-10.lotus.com/ldd/ddwiki.nsf • http://www-10.lotus.com/ldd/ddwiki.nsf/dx/ NotesDocumentCollection_sample_JavaScript_code_for_XPages • Help files not so helpful
  46. 46. Quick Tip • Create different search scopes for the not-so-helpful help file
  47. 47. 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/
  48. 48. Test Server - Get One • Typical Lotus Client development can get away with “testing” on a production server • Doing that with Xpages...
  49. 49. 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
  50. 50. Quick Tip • Turn on “Select controls dialog box”
  51. 51. Quick Tip • Visible versus Hide When
  52. 52. Quick Tip • Turn off Build Automatically
  53. 53. Quick Tip
  54. 54. Quick Tips • Upgrade whenever possible • Learn Eclipse
  55. 55. 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
  56. 56. THANK YOU• kathy@runningnotes.net• @RunningKathy or @NotesDevTips• http://runningnotes.net