Within Notes and Expeditor, it's possible to set the Windows and Themes -> Open each document in its own tab preference to ensure that newly opened perspectives do so in the client UI. This is the default "tabbed" behavior you're likely well familiar with.
Even with this set, it's possible for some perspectives to open within a new window. This behavior might be non-obvious given the aforementioned preference. Ensure that the "Always Open in New Window" context menu item is not checked by right mouse clicking the item in the launcher (Open menu). If it is checked, this will - well - always open the launcher item in a new window.
The developerWorks Connections platform will be sunset on December 31, 2019. On January 1, 2020, this blog will no longer be available. More details available on our FAQ.
Coding IBM Collaboration Solutions
From archive: November 2010 X
I have a question about something that has been on the back burner for quite a while. Is it worth developing a Notes widget to list open PMRs? You could imagine a Side Shelf view that lists the PMRs currently with IBM support and provide basic operations: update text, change severity, etc. A benefit of integrating into Notes is the Live Text (previously auto-recognizer). Live text would allow the receiver of an email from IBM support to single click to access PMR details. We did this internally on a project I helped developed, and I'm glad to have seen it proposed by external developers. The widget would not provide a native interface to PMR information, rather it would be a bridge to the IBM SR web site. Off hand, the following should be relatively easy to implement:
Does this add any benefit over the existing features of the SR site? Is there something that would be a nice value added feature when integrated with your Lotus Notes client?
The other day someone pointed out that the Axis plugins within Expeditor default to the HTTP 1.0 transport version. This could cause some problems - possibly for long running web services that are subject to limitation or requirements of external proxy web servers. The Axis code within Expeditor will set the HTTP version to 1.1 if required. To do so, you can update the default code emitted by the Axis web service client wizard which builds the Java skeleton code. The wizard will create a Java class of the form
The imports should already be present in the class. Simply add the above to the createCall() method body.
I never like to duplicate information, and Mikkel has a very succinct article on the subject Java class line numbers for plugin developers, but developers targeting Lotus Notes, Expeditor, or Sametime should make two changes. You may have noticed stack traces that appear as:
The difference from most Java stack traces is that the line numbers are missing. This is done intentionally for performance reasons, but can be a problem for a developer or anyone (IBM support) who needs the line numbers to review source code. The simple solution is to update the jvm.properties file by commenting out two properties:
The latter property disables the shared classes cache. If the class had previously been cached without line numbers, you'll need to remove the class from the cache. The only way to do this is by deleting the shared classes cache file from disk. Delete the file located in <workspace>\.config\org.eclipse.osgi. You should have a ~40MB file, which has as part of its name the xpdplat_.jvm name value seen in the vmarg.Dshare property. To prevent future development issues, it's suggested to disable the shared classes file altogether.
If at a future date you want to re-enable the cache, simply uncomment the vmarg.Dshare property and launch the client. For more information on the shared classes cache, see the developerWorks article Java technology, IBM style: Class sharing.
Did you know you can add an additional layer of indirection within Expeditor? For example, consider you've create a composite application to deliver to clients in the organization. Within this application is your indispensable component that provides personalized content to users. To do so, it needs to locate input relative to the current user of the client.
One way is to to do as Chuck suggests in Using Dynamic Variable Substitution in Composite Applications and use Managed Settings to provide the preferences, which are inherently personalized for the user. The component can then read the preference key value pair and dynamically substitute this already personalized information into the component.
Bob sheds light on the extension point that does this in his blog entry Creating your own dynamic variable resolver.
Additional details on creating your own variable resolver can be seen in the new Expeditor Wiki article: Sample: Variable Substitution.