Information on new features and improvements in Domino® Designer.
This topic lists the new features and changes for Domino Designer 9.0 Social Edition.
Periodic updates to Domino Designer Help are available on the Web. To download the latest Designer Help file, go to the Documentation Library section of developerWorks® at http://www.lotus.com/ldd/doc. Click Technical Library then by product, then Domino Designer, and then, finally, the release you would like to see.
In the area of Domino Designer in general, the following additions or changes have been made:
JAR design element -- A new JAR design element has been introduced in this release. The JAR design element gives you the ability to work with packaged Java™ code/libraries that are included in the application NSF. This design element is only available to XPage applications, where the JAR is automatically loaded by the XPages runtime. This feature frees you from having to deploy the JARS to a server and/or include the source files uniquely in the application database. While JAR files can be added to the NSF through the virtual system, the JAR design element automatically manages the classpath and places the JAR file into web-inf/lib, which is the recommended location for JAR files used in a J2EE application. The JAR design element is found in the Application Navigator following the Code element.
You create a JAR element using steps similar to that of creating an image resource - in other words, the JAR is imported into the application in rather than creating it new. The design element list panel has an Import JAR button that lets you select and import the desired JAR file.
There is no need for JARS to have aliases and, as such, they are not supported. The design list for JAR is fairly simple and identical to that for files, with the exception that the Alias column is removed. As the size information of a JAR could be needed, that is included as a Bytes column. Finally, all the New menus have entries for this new element in the list of design elements as well.
From any of the various ways to create a JAR, you are presented with the following standard Eclipse dialog to choose a file, with the list filtered to include jars. You then select the JAR(s) you need, press Save, and the JAR is then imported into the application.
When selected in either the Designer design list panel or in the Application Navigator, a JAR element provides the standard set of property panels, but also includes a Basics panel to let you add a comment, rename the JAR, or manage the Replace flag (this feature is provided because since JARs are an imported element, you may want to be able to maintain the Note ID).
Just as with other file design elements, an Export function is also available and JARS can be signed with the Sign action.
The classpath is adjusted for each JAR in the NSF, so any design time compilations can resolve any references to the jar. The changes to .classpath are not persisted to disk, so that older versions of Designer do not malfunction.
At runtime, the JAR note is expanded to the XPage runtime file system in web-inf/lib, and is available to server JS on an XPage, as well as any Java class referenced in that environment.
Palette state saving feature -- For this release, the XPages editor's palette now remembers its state from one XPage to the next. It also remembers states between sessions of Domino Designer.
PNG file support for image resources -- For this release, you now have the ability to import PNG files into Designer as image resources. This file type is now a selection choice in the Image type combo box. This ability lets you use PNG files in places where image resources are used (for example, XPages, forms, views, outlines, etc.).
XPages Source Editor Hyperlink navigation functionality -- For this release of Domino Designer, the XPages Source Editor supports hyperlink navigation. Hyperlink navigation describes generic Eclipse functionality where text within an editor can be made into a hyperlink.
By pressing on CTRL and hovering over text within any editor in Eclipse, Eclipse provides feedback to the editor that the user is trying to perform hyperlink navigation. Each editor may opt into hyperlink navigation, by providing a hyperlink object(s) for the region pointed at by the cursor. For this release, the XPages source editor now has the ability use this functionality.
The functionality is always on with no current option or preference to disable it. Support for hyperlink navigation is also provided on a control by control basis. Hyperlink navigation is only applicable to certain controls, and in most cases only to certain attributes on certain controls. Consider using this feature while editing custom controls. When you press CTRL and hover over a Custom Control in the source editor, hyperlink navigation lets you navigate directly to that Custom Control.
For example, hovering over string.propertiesand clicking on the resulting hyperlink in the your code, opens the selected design element.
Hover help functionality for XPages Source Editor – Eclipse currently provides a simple framework for allowing editors to provide hover help based on where your cursor is when hovering within an editor. One example of this is the hover help in the Eclipse Java editor. By hovering over a particular Java construct while in the editor, the editor is able provide additional information on that construct. In Domino Designer, the LotusScript® editor currently provides hover help support for items within the LS editor.
For this release, you can also get help in the XPages source editor. With this feature, you can get information about the 'node' that is currently being hovered over. Similar to hyperlink navigation (see previous), the Eclipse editor framework provides positioning information to the hover help layer, which is interpreted and resolved back to a DOM node within the XPage. Once the DOM node is resolved, the editor provides a description for the current tag (and attribute). All tags and attributes that provide a description for themselves via xsp-config are able to have that information made visible in the hover help functionality within the XPages source editor.
This feature is controlled using a preference within the Domino Designer Preferences tab. The feature is turned on by default, with a time-out of 500 milliseconds associated with the preference. That is, once the cursor has been 'at rest' for greater than 500 ms (milliseconds) the Eclipse editor framework invokes the XPages source editor hover help. At that point, the XPages hover help calculates which node the cursor is hovering over. Based on the node information, the functionality resolves the node against the XPages registry and retrieves a description for the node. The feature is also designed to work with the 'this.attribute' notation which is used extensively within XPages. The hover help information takes the following form in the help window if it is hovering over a tag (and not an attribute):
Tag Display Name (tagName)
Description:
If the cursor is hovering over an attribute of a tag the help takes the following form in the help window:
Tag Display Name (tagName)
Description:
Attribute Display Name (attributeName)
Attribute Description:
As mentioned, the information is pulled from the XPages registry, so the feature works with all tags - not just core XPages controls. Finally, pressing F2 while the hover help is displaying sends focus to the hover help window which let you resize the window
Memory management improvements – For this release, memory management improvements have been made in Domino Designer specifically in the area of the XPages editor. Certain previously identified memory leaks have been investigated and fixed. In the past, these leaks would sometimes surface when editing large complex XPages (i.e., XPages containing several complex design elements) with many control visualizations. These leaks would then lead to a Java Out Of Memory exception and cause Domino Designer to crash.
Content assist help – This release introduces content assist functionality in the XPages source editor. This feature lets you use content assist when working in 'source mode' in an XPage. Similar to other Eclipse editors, pressing CTRL+SPACE will activate the content assist functionality.
Content assist within Eclipse's XML editor (and the XPages source editor) is driven through the use of a schema. Domino Designer dynamically builds a schema based on the current Notes® application. The schema contains help information for each attribute of each tag within the XPages runtime. In order to enable the content assist within the XPages editor, the XSP markup must be modified to notify the XPages source editor of the location of the schema which is being used. Each new XPage created within Domino Designer npw contains the following meta data in the 'view' control of the XPage:
xsi:schemaLocation="http://www.ibm.com/xsp/core xsdxp://localhost/xsp~core.xsd
A similar location definition will be added for each namespace that is added to the XPage. When dropping controls from the palette to an XPage, Domino Designer checks if the control's namespace URI has a schema location associated with it. If it does not, a location is generated and added to the XSP markup. Domino Designer then dynamically generates a schema for the given namespace based on the contents of the FacesRegistry (which contains definitions for all XPages' controls). This lets Domino Designer add the necessary markup to the XPage.
If you already have existing XPages, you must add a new control to the XPage (via drag and drop from the Controls Palette) in order to enable the new content assist functionality.
Detection of content types and editable content type field – All contributed contents types are now detected by Domino Designer.
Editable content type field – The content type field for computed fields and view columns is now also editable. When developing controls for the Social Enabler, the content type field for the Computed Field control and for view columns was formerly read only. This was not acceptable as customers want to contribute their own content types. In the case of the Social Enabler there are several content type available.
None of these were showing up in the computed field or in the view column as options, meaning you need go to the All Properties view to enter these values. Even then, the formal panel would still display the old value of Text, even when the value was set to something else.
This change correct that problem. The view column Display panel and the computed field Basics panel now support all of the registered content types, and those fields are editable you can enter your own content type names if you desire.
Support of converters added to the XPages Checkbox control – For this release, the Checkbox control now accepts converters.
Boolean converters added to controls that accept converters – For this release, controls that accept converters now accept Boolean converters. The Boolean converter lets values saved through an XPage be stored within the data source as Boolean objects, as opposed to strings. Domino Designer now allows the Boolean converter to be added as a converter on any XPage control that supports converters.
Close Application functionality – For these release, you can now manually close applications which are open in the Domino Designer Applications navigator. To access this functionality, a new menu item has been added to the Applications Navigator which lets you manually close an application which was previously opened in the Applications Navigator.
This new menu item is only enabled when an Application is selected, and the same application is already open. The menu item will be disabled when a node in the design element tree is selected.
This menu item is notified when an application is opened without selection changing. For example, say that Application A is closed and you attempt to select the menu. In this case, the Close Application menu item will be disabled. On the other hand, if you open Application A without changing selection within the navigator and again try to select the menu, the Close Application menu item will then be enabled.
When selected, the Close Application menu item will close the currently selected application along with closing all design elements from that application that are currently open.
Applications not in Working Set functionality -- Domino Designer users use working sets to filter the contents of the Applications Navigator view. Working sets let you group applications into categories, which in turn let you view only applications in a specific working set or in multiple working sets at once. This lets you organize and clean up the Applications Navigator so you can focus/view a subset of the applications which you have in the Applications Navigator. Unfortunately, an issue in this area has always been that it was difficult to determine which applications were NOT contained in any working set.
On the Home Page, Domino Designer checks if all of the applications contained within the Applications Navigator are contained within a Working Set. If it is determined that one or more applications are not contained within one or more working sets then Designer reloads the Home Page. During that process it then adds a new Applications Not in a Working Set list item to the Home Page.
From the Applications Navigator, when you click on the menu button, Domino Designer determines if any of the applications are not in a working set. If it determines that one or more are not, then the newly added Applications Not in a Working Set menu item is enabled. Conversely, the same menu item will be disabled if all applications are organized in working sets or if there are no working sets (in which case all applications are not in a working set).
When the Applications Not in a Working Set feature is enabled, the Applications Navigator only shows applications which are not currently in a working set. The title bar of the Applications Navigator changes to say Other and the tool tip will read Applications Not in a Working Set.
You can add applications which are not currently contained in a working set to a working set. If it is the case that all applications that were not contained in a working set are then added to working sets while Applications Not in a Working Set is enabled, the Applications Navigator appears empty and the Home Page is reloaded. This time, however, the Applications Not in a Working Set item will not be visible and the Applications Not in a Working Set menu item in the Applications Navigator menu will be checked but disabled.
In the area of XPages, the following additions or changes have been made.
XPages Extension Library -- The XPages Extension Library provides additional controls that are ready to use. The controls include new container controls (such as the Application Layout, Data View and others), improved dialogs, pickers, in-place forms, Dojo components, dynamic content, and much more. The controls also support enhancements to the Domino® templates.
For further information on this feature, refer to the Adding controls from the XPages Extension Library section of this User Guide. For additional information and reference material on using the Extension Library controls, also refer to the Domino Designer XPages Extension Library documentation found in the Product Documentation section of the Notes and Domino Application Development wiki at http://www-10.lotus.com/ldd/ddwiki.nsf.
Updated application templates -- This release provides updated versions of the Notes/Domino Discussion and TeamRoom templates that have been extended to use new features from the latest release (discussion8xl.ntf and teamrm8xl.ntf). These templates can be used to create XPages applications that will run on the web, the Notes client, or on mobile devices. You are encouraged in particular to try the mobile application implementations as these templates are a good sample reference point for getting started with XPages mobile development. The Discussion and TeamRoom templates for this release are English only.
Application Layout control -- One highlight of the Extension Library is the Application Layout control (applicationLayout/com.ibm.xsp.extlib.component.layout.UIApplicationLayout). This control is an object for rendering the main application frame and the layout of an XPages application.
This control is used most effectively when placed in a custom control, where you can configure the layout once and then reuse the custom control on multiple XPages. You can set up a layout with up to three areas for titles and navigation links, a content area with as many as three columns, and up to two footer areas.
For complete information on how to use this control, refer to this Control Reference section found in this guide.
XPages Properties Editor -- An XPages Property Editor user interface has been added to make it easier to edit XPages properties when in the Eclipse Navigator view.
To display the Eclipse Navigator view, choose Window - Show Eclipse Views - Navigator.
Finally, the Source tab lets you display and edit the actual XPages properties source file in a text editor without the assistance of the XPages Properties Editor user interface.
Hover/mouse-over help is provided to give additional assistance on the various options and properties that you can set on these tabs.
Calendaring and Scheduling (C&S) back end Java classes – A framework and set of methods is available for a Java API exposing Domino calendar and scheduling functionality. These provide the ability to create, read, update, and remove calendar data in a personal mailfile using standardized iCalendar (RFC 5545) data format. They also allow explicit calendar actions on calendar entries and notices (accept, decline, cancel, etc). Refer to the next section of this topic for more complete details.
Runtime language support -- The XPages runtime in this release supports Language Groups 1, 2, and 3. The Discussion and TeamRoom templates are English only.
Template language support -- The Discussion and TeamRoom templates are English only.
Launch option to run server-based XPages applications directly on a Domino server – Because XPages Notes applications run in the local Notes XPD web container, all of the XPages Java classes (XPages and custom controls) must be copied across the network from the remote server to the Notes client to be executed. Similarly, all page resources (CSS, JavaScript, GIFs, etc.) must be fetched from the remote server, as well as the actual data documents. Moreover, if your XPages application leverages other Notes design artifacts (for example, using the computeWithForm feature), then large design elements like forms, subforms, shared fields and so forth must also be fetched remotely. On high latency networks, this can have significant performance impacts, particularly if your application has been designed primarily for the web and not optimized for the Notes client.
A Domino Designer launch option now lets you avoid this situation. The Notes client launch option is called Run server-based XPages applications directly on Domino server. When this option is checked and the application is launched by a Notes user, the XPages runtime is requested to run the application on the Domino server over HTTP. This option lets you request that remote applications be run on the Domino HTTP server - just as they are for the web user - and displayed in the Notes XPages container. The advantage to this approach is that a lot of network transactions are eliminated to improve performance.
For this request to be honored, a number of conditions must be in place. Primarily, you must have a Notes HTTP account set up. These accounts can be set up directly on the Notes client or remotely on the Domino server and then provisioned to the Notes client. To create or view Notes accounts select
in Notes. In attempting to honor the request to the XPages application on Domino, XPages iterates through all the Notes accounts defined in the Notes client installation until it finds an HTTP account that matches the name of the server where the application resides. Once those criteria are met, then a Domino XPages URL is constructed and the request is sent to the Domino server and the application then loads in the Notes client. If a matching account is not found or if the request to the server cannot be serviced (e.g. some other incorrect account detail) then you will be prompted to close the application window or to revert to running the application using the local Notes web container.The Notes Accounts framework and the underlying XULRunner browser automatically passes the user credentials to the web server for automatic authentication. Thus the user should not be challenged for authentication. If you are prompted for user name and password then the runtime Notes/Domino configuration is not correctly set up (for example, incorrectly configured Domino SSO). However, you should be able to verify this independently of XPages by simply entering a URL to the application via the Notes browser address widget on the Notes toolbar.
When running an application on the Domino server within the Notes client, all custom Notes functionality should function as it does when running in native XPages mode. For example, context menus should behave the same, dirty document save, client-side JavaScript functions. etc). One exception is that composite applications will not be able to utilize client property broker functionality when running on the server.
You can bypass setting this option in Domino Designer by setting a NOTES.INI feature, as follows: XPagesRunRemoteAppsOnServer=1. This setting will be applied to all XPages applications, not individual applications.
Spell checker added to CKEditor – A spell checker has been added to the CKEditor in XPages. It will be available on both the server and the client.
In the area of programmability and languages, the following additions or changes have been made:
Domino Data Services -- The Domino® Data Service is a REST API that accesses databases on Domino servers. It is part of Domino Access Services. The Domino Data Service receives requests and sends responses using HTTP and HTTPS protocols with body content in JSON format. The Domino Data Service allows you to obtain information on databases, views, folders, and documents. You can update, add, and delete documents.
For more complete information and reference material on using the Data Services, refer to the information found in the Product Documentation section of the Notes and Domino Application Development wiki at http://www-10.lotus.com/ldd/ddwiki.nsf.
Calendaring and Scheduling (C&S) back end Java classes – A framework and set of methods is available for a Java API exposing Domino calendar and scheduling functionality. These provide the ability to create, read, update, and remove calendar data in a personal mailfile using standardized iCalendar (RFC 5545) data format. They also allow explicit calendar actions on calendar entries and notices (accept, decline, cancel, etc).
The purpose of these initial classes and methods is to provide a basis for exploring development possibilities and for building small, simple calendar and scheduling prototype applications without needing to be fully versed in the internals of Notes Calendar and Scheduling.
Some of the new classes (with methods) that were added include the following:
Session.getCalendar
Creates a NotesCalendar object from the Database object. The database is not verified to be a valid C&S database until it is actually accessed.
lotus.domino.NotesCalendar getCalendar(lotus.domino.Database db)throws NotesException
The following information provides additional details for using these methods:
NotesCalendar.getEntry
Returns a NotesCalendarEntry object that is associated with the provided uid (iCal identifier). This does not do validity checking to be sure that the entry actually exists.
NotesCalendarEntry getEntry(String uid) throws NotesException
NotesCalendar.createEntry
Returns a NotesCalendarEntry from the iCal provided when given an iCalendar string (iCal) properly formatted according to RFC 5545.
NotesCalendarEntry createEntry(String iCal) throws NotesException
NotesCalendar.readRange
Returns an iCalendar string that represents all calendar entries that appear on your Notes calendar and start between the provided start and end times. For recurring entries, each instance within the range is output separately. This represents only summary data for each entry, but each entry will contain a UID that can be used to get a NotesCalendarEntry object with the getEntry method. The caller is responsible for parsing the output.
String readRange(DateTime start, DateTime end) throws NotesException
The following information provides additional details for using these methods:
NotesCalendarEntry.read
Returns the iCalendar string representing this calendar entry. If recurID is specified for a recurring entry, returns the iCalendar string for just that occurrence. recurID is expected to be a string representing the data/time that a particular instance was originally schedule at, formatted like an iCalendar RECURRENCE-ID. For example: 19960120T120000Z. See RFC 5545, section 3.8.4.4.
String read() throws NotesException
String read(String recurID) throws NotesException
NotesCalendarEntry.update
Given an iCalendar string (iCal) properly formatted according to RFC 5545, updates this calendar entry by passing in iCalendar. For recurring meetings, this is only currently supported for individual instances and the iCalendar input must contain a single VEVENT that specifies the appropriate instance with a RECURRENCE-ID, as defined in RFC 5545.
If no comments are specified, this will NOT send notices even if this is a meeting. If this is a meeting where the mailfile owner is the organizer, appropriate notices will be sent, including the comments provided. Currently, any provided comments are ignored.
void update(String iCal) throws NotesException
void update(String iCal, String comments) throws NotesException
NotesCalendarEntry.remove
Removes (deletes) a calendar entry from the mailfile. If recurID is specified, then only that occurrence is removed. If this calendar entry is a scheduled meeting, it will be properly cancelled or declined, and appropriate notices will be sent to the organizer or participants.
void remove() throws NotesException
void remove(recurID) throws NotesException
For complete information on these and additional classes and methods, refer to the Domino section of the Domino Designer XPages Reference.
The debugger user interface has also been updated to make the debugging process less complex in the Eclipse environment. A new Debug IBM Domino Designer Server-Side JavaScript toolbar button has been added to the main toolbar. For more complete information, refer to the Scripting in XPages section of the Programming section of the Domino Designer User Guide.
Property/preference for using uncompressed Dojo resources for debugging - A public property in the xsp.properties file called xsp.client.script.uncompressed can be edited and set to TRUE to enable easier debugging with uncompressed resources.
Selecting the Use uncompressed resource files (CSS & Dojo) check box in the XPage Properties Editor - Performance Properties tab of your application also enables this feature. The check box will edit this line in the xsp.properties file as follows: xsp.client.resources.uncompressed=true.
When set to true, this property lets Dojo resources be served up uncompressed with all the indentation, spaces, variable names and comments so that you can thoroughly debug your application. In a production environment, this property should be set to false to maximize application performance.
Technically, the uncompressed version of the resources is served up by a different library. You must have two libraries registered (for example, 1.7.2 for the compressed version and 1.7.2-u for the uncompressed version). The last version mentioned (1.7.2-u) is then only used if the property is set to True. The property is not present by default, which is equivalent to setting the property to False.
Preference to turn off auto-indenting in the LotusScript editor - A preference is provided that lets you turn auto-indenting on or off in the LotusScript editor. This preference is found in the General section of the LotusScript Editor Preferences tab. The current default value is that this feature is NOT enabled.
Preference to turn off auto-indenting in the LotusScript editor - A preference is provided that lets you turn auto-indenting on or off in the LotusScript editor. This preference is found in the General section of the LotusScript Editor Preferences tab. The current default value is that this feature is NOT enabled.
Send Mail simple action added – A Send Mail simple action has been added to an XPage lets you perform a pre-programmed activity that can be modified by arguments. Simple actions apply to event handlers and can be grouped. This simple action has been added to let send an email from an XPages application more easily. It also lets you send Embedded Experience email. Refer to the product documentation for more complete information.