If you’ve been developing Domino applications for any length of time, you will be aware of the Design Synopsis. Mainly you’ll be aware of it as a major selling point for third-party tools like those of TeamStudio or Ytria. If you’re new to Domino development with XPages, you’re not missing anything.
With Notes 8.5 we got Domino Designer on Eclipse. There have been a lot of complaints and frustrations with Eclipse, but Eclipse provided a number of underlying benefits. Some of these are restricted to certain editors, like Compare With -> Local History and the more powerful Compare With -> Each Other.
Another is the Search functionality. A conversation on Twitter today demonstrated that there is still mileage in blogging about it. This is not something IBM added into Domino Designer, it’s standard Eclipse functionality. And it is exceptionally powerful. The menu option is Search -> File. It provides this dialog box, with a wealth of options.
The first is Containing text and as you can see from the help there are wildcard options as well as entering full or partial text. Case sensitivity can be applied using the checkbox. The drop-down also gives access to previous searches which persist across sessions. And if basic text is not enough for you and you’re a Regular Expressions expert, there’s a checkbox to specify that the containing text entered is a regular expression.
The next section File name patterns is one that many developers may overlook, leaving the default wildcard option “*”. The dialog box presented when clicking Choose… may initially look scary, but it’s actually extremely powerful. It allows the developer to refine the types of design elements covered. Some useful options are:
- *.css: any stylesheets, regardless of location within the NSF
- *.fa: formula language agents
- *.field: shared fields
- *.folder: folders
- *.form: forms
- *.frameset: framesets
- *.ja: Java agents
- *.java: any Java classes not in agents or script libraries
- *.javalib: Java script libraries
- *.lsa: LotusScript libraries
- *.lss: LotusScript script libraries
- *.outline: outlines
- *.page: Page design elements
- *.shac: shared actions
- *.subform: subforms
- *.theme: themes
- *.view: views
- *.xsp: XPages and Custom Controls
- *.xsp-config: Custom Control properties / definition files
One or more file types can be selected. Be aware that your selection also persists, so you need to be careful if you do change it, because it may be a little while before you do another search.
To be honest, I’ve never used Consider derived resources and I’m not sure how relevant this would be to searching an NSF.
Scope is very powerful. Enclosing projects is not applicable to searching an NSF from what I can see. Workspace is the Eclipse workspace, not the Lotus Notes workspace page. It searches all databases within your Domino Designer workspace, i.e. databases open in Designer. Selected resources can be useful for searching, for example, a subset of views selected prior to beginning the search. Working set allows you to search over one or more working sets. One thing to note is that if you search a working set, it will only search databases that have been opened. Any databases not opened will be skipped.
The search results allow you to navigate between results, remove one or all search results or expand / collapse search results. The final section allows you to run the search again, cancel a search or run previous searches. Double-clicking on a match will allow you to open the relevant design element. For standard notes Client design elements, these are opened as DXL. XPages and Custom Controls open to the source pane.
One option on the Search box I’ve deliberately omitted until now is Replace… which allows you to do a find and replace. This allows you to replace the searched text with new text, but the Preview > button is where the real power comes. This allows you to preview and select which matches you replace.
If you’ve used the Compare With… -> Each Other functionality, this dialog box will look familiar. Clicking on a match allows you to see the current code and how it will look if the replace is processed for that match. Unticking matches will ensure those matches are not replaced. If more than one match is found on a design element, buttons allow you to step through the changes. So you can quickly find and replace matches.
This functionality surpasses the old Design Synopsis. It only searches design elements whereas third party products also allow you to search documents. But it is a very powerful tool in the developer’s toolbox.