Latest Updates

Products & Applications

Showtime
My Blackberry Enterprise Server Push Utility for the Lotus Notes Client, allows you to create Jobs for individual Channel, Message, and Browser Content Pushes, as well as allows you to delete Pushed Channel Icons from defined recipient devices.

Time Tracker
The idea is simple. At the start of your day - upon completion of your first task - create an entry highlighting what you did and whether you feel it was an efficient or inefficient use of your time. Based on several requests, you can also select the priority, apply categories, or even align your time against a project.

For Lotus Notes Client v8.0 and above, you can use the Time Tracker Widget to make this process even easier!

Zephyr
My Configuration-based Rich Text Mail Merge and Emailing Utility, Zephyr allows you to create rich, data-driven emails to support automated workflow - all via Microsoft Word Mail Merge-like architecture. Dear <firstname> allows you to personalize each email message not only to the individual recipient, but also to the individual application workflow event!

xCopy
xCopy is a simple configurable xCopy client for the Lotus Notes client. By creating and defining xCopy Profiles, you can batch process your file backup or remote upload jobs. With the addition of the xCopy sidebar widget, you can easily kick-off these jobs, and modify both the xCopy Profiles and xCopy itself.

Community & Resources

Lotus Technical Information & Education Community

The Lotus Technical Information & Education community is comprised of IBM, business partner, and customer subject matter experts who use product wikis, published articles, white papers, community blogs and the latest in social media to build and share high quality technical content.

OpenNTF.org - Open Source Community for Lotus Notes Domino

OpenNTF is devoted to enabling groups of individuals all over the world to collaborate on IBM Lotus Notes/Domino applications and release them as open source.

developerWorks Lotus : Wikis

Share your deployment experiences and best practices in our wikis and help IBM to create scenarios for successful deployments. Contribute to the community by collaborating on shared content and leverage the shared knowledge from that community.

IBM XPages Custom Controls: Portlet and titlePane

08/27/2012 11:45:00 AM by Chris Toohey

IBM XPages Custom Controls I tend to attack the actual development phase of a project the same way most authors work on a manuscript: blast through, getting it on the page (warts and all), just to fill the page. If you can keep the momentum going, slamming through the project, and establish a first draft, you should have the time to revisit the project as a whole and find areas which require revisions.

For example, in the current project that I've been working on... my first pass consisted of me coding to match the user experience established in the project outline and UI wireframes. Once that was finished, I was able to dive back into the code to see where improvements -- functionality, code singularity, and ease-of-maintenance -- could be made.

This project, which unlike the majority of my dayjob projects, I'll actually be able to show you... but until we're finished and for the purposes of this post, the project required that I display both NotesData and external data from various web services and APIs in small, consumable bites.

At the UI level, I was using dijit.TitlePane and dojox.widget.Portlet-based xp:div Controls throughout this project. During my second pass through the project, I had created Custom Controls for these two widgets ("portlet.xsp" and "titlePane.xsp", respectively).

After seeing Mark Roden's article on using the dijit.TitlePane in XPages, I thought I'd beef up my controls, make them more general-use, and share them with the community.

portlet and titlePane Custom Controls

Let's take a look at the portlet.xsp Custom Control in use. Here's a screencap of the "portlet.xsp" Custom Control (and the XPages usage markup below that), where I've clicked on the "?" icon to expose/expand the "settings"...

IBM XPages Custom Control: portlet.xsp Demo Example IBM XPages Custom Control: portlet.xsp Demo Example

<xc:portlet
   doLayout="false"
   closable="true"
   dragRestriction="true"
   title="Standard Portlet"
   toggleable="true">
    <xp:this.facets>
        <xp:div
           xp:key="settings">
            Settings goes here...
        </xp:div>
        <xp:div
           xp:key="body">
            Content Body goes here...
        </xp:div>
    </xp:this.facets>
</xc:portlet>

Now let's take a look at the actual "portlet.xsp" Custom Control XPages markup:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view
    xmlns:xp="http://www.ibm.com/xsp/core"
    dojoTheme="true">

    <xp:this.resources>
        <xp:dojoModule name="dojox.widget.Portlet" />
        <xp:styleSheet
            href="/.ibmxspres/dojoroot/dojox/widget/Portlet/Portlet.css" />
    </xp:this.resources>

    <xp:div
        dojoType="dojox.widget.Portlet"
        title="#{compositeData.title}">
        <xp:this.dojoAttributes>
            <xp:dojoAttribute
                name="closable"
                value="#{compositeData.closable}">
            </xp:dojoAttribute>
            <xp:dojoAttribute
                name="doLayout"
                value="#{compositeData.doLayout}">
            </xp:dojoAttribute>
            <xp:dojoAttribute
                name="dragRestriction"
                value="#{compositeData.dragRestriction}">
            </xp:dojoAttribute>
            <xp:dojoAttribute
                name="errorMessage"
                value="#{compositeData.errorMessage}">
            </xp:dojoAttribute>
            <xp:dojoAttribute
                name="extractContent"
                value="#{compositeData.extractContent}">
            </xp:dojoAttribute>
            <xp:dojoAttribute
                name="href"
                value="#{compositeData.href}">
            </xp:dojoAttribute>
            <xp:dojoAttribute
                name="loadingMessage"
                value="#{compositeData.loadingMessage}">
            </xp:dojoAttribute>
            <xp:dojoAttribute
                name="parseOnLoad"
                value="#{compositeData.parseOnLoad}">
            </xp:dojoAttribute>
            <xp:dojoAttribute
                name="preload"
                value="#{compositeData.preload}">
            </xp:dojoAttribute>
            <xp:dojoAttribute
                name="toggleable"
                value="#{compositeData.toggleable}">
            </xp:dojoAttribute>
        </xp:this.dojoAttributes>

        <xp:div dojoType="dojox.widget.PortletSettings">
            <xp:callback facetName="settings"></xp:callback>
        </xp:div>

        <xp:callback facetName="body"></xp:callback>

    </xp:div>

</xp:view>

Each of these controls use Editable Areas.

portlet.xsp uses two: "body" for the body-content on non-XHR-driven portlets and "settings" for an editable area for any portlet-specific settings/controls you wish to add.

titlePane.xsp uses just the "body" xp:callback, as it does not have a "settings" area.

Online Demo

Check out the online demo here: Portlet & titlePane Custom Controls

 
Marky RodenName:Marky RodenWebsite:http://www.xomino.comComment Thanks for sharing Chris :) Stephan H. WisselName:Stephan H. WisselWebsite:http://www.wissel.net/Comment Very neat indeed!

(not published)




Evaluate this Formula: @LowerCase(@Text("FOO"))