329 Lotus blogs updated hourly. Who will post next? Home | Downloads | Events | Jobs | Twitter | Bookmarks | Pods | Blogs | Search | myPL | About 
 
Latest 7 Posts
locating XPage components with XspQuery
Sun, Apr 14th 2013 242
your how is not your what
Wed, Apr 3rd 2013 351
Developer2013 and IamLUG
Mon, Apr 1st 2013 192
my new favorite quote
Sat, Mar 23rd 2013 317
Taking the scary out of Java in XPages: fixing the API
Thu, Mar 21st 2013 235
Taking the scary out of Java in XPages: knowing the entry points
Sat, Mar 2nd 2013 404
Taking the scary out of Java in XPages: Prologue
Tue, Feb 26th 2013 346
Top 10
I have seen the future, and it is phabulous
Sat, Dec 8th 2012 672
SSJS is a crutch
Fri, Feb 22nd 2013 666
the next step in the journey
Wed, Jan 9th 2013 641
org.openntf.xsp.extlib
Mon, Jan 21st 2013 523
Needle in the Stack Part 2: talk to data, not to components
Thu, Jan 17th 2013 419
Passthru vs. component - my perspective
Sat, Feb 16th 2013 413
Taking the scary out of Java in XPages: knowing the entry points
Sat, Mar 2nd 2013 404
your how is not your what
Wed, Apr 3rd 2013 351
Taking the scary out of Java in XPages: Prologue
Tue, Feb 26th 2013 346
fasten your seat belt, Dorothy
Thu, Oct 11th 2012 336


demo application from the recent X-Series webinar
Tim Tripcony    

Two weeks ago I participated in the latest X-Series webinar sponsored by GBS and TLCC. You can watch the replay of that webinar here.

Prior to the Q&A panel, each of the panelists gave a brief presentation about specific topics related to XPage application development. The topic of my presentation was "creating flexible user interface features using Repeat Controls". If you've done much development with XPages, you've likely already used Repeat Controls at least occasionally, but my goal was to demonstrate that, when we eschew some of the more obvious controls IBM has provided us for representation of data collections (such as the View Panel and Data Table), the comparatively blank canvas of a Repeat sets us free to provide any data representation we (and, hopefully, our users) want. In many cases, the additional development effort required is still minimal, but what we get in return is the freedom to go beyond the tabular grid representation we've been giving users since 1989 and allow them to interact with precisely the same data, but in ways that more closely resemble the modern interfaces they're accustomed to experiencing in other computing contexts.

You can browse the demo application I used to provide just a few examples of this premise, or download it to peruse the actual code.

The final example that this demo app contains is an illustration of the pattern I've taken to calling "infinite form". Every Notes developer has at least inherited, if not created, at least one app containing a form that included a notion of "line items"... this pattern is common within business objects such as expense reports, purchase requisitions, and the like. Originally, this pattern was typically implemented in Notes forms by creating a "field grid": a table with one column for each data point that must be recorded for each line item (e.g. unit price, quantity, description, etc.), and a row for each line item. The end result, then, was fields named something like UnitPrice_1, UnitPrice_2... UnitPrice_50, and so on. This, of course, was difficult to maintain. Either we had to create a ridiculous amount of hide-when formulae to suppress disclosure of unnecessary rows until the user requested more, or simply show them all the fields whether they needed them or not. And, predictably, the users would eventually need more rows than the form contained, so we'd find ourselves adding 50 more fields and 50 more hide-whens to the form.

With the advent of embedded views, it became common to create a pseudo-relational structure by treating each line item as a separate response document displayed within an embedded view inside the parent document. In some ways, this pattern was far more maintainable, because we no longer had to care how many line items might be needed. But it presented new challenges: sometimes the responses needed to be updated when the parent document changed; in order to allow removal of line items, either the users must be granted deletion rights or logic had to be added allowing them to stamp a field on the document that would remove it from the view. We'd simply traded one set of maintenance concerns for another. So in many cases, the field grid pattern continued to be used despite another option having become available.

With a simple use of a Repeat, we can have the best of both worlds: the simplistic data structure of the field grid pattern with the limitlessness of the response doc / embedded view approach. The demo app shows this pattern in action, but during the webinar I felt I kind of rushed that portion of the demo in order to avoid eating into Q&A time. So I've promised Leedy I'll record a Notesin9 on this specific design pattern, which should allow a more thorough walkthrough of how the code works and the associated benefits. In the meantime, if you have any questions about this or the other patterns represented in the demo app, just let me know.


---------------------
http://xmage.gbs.com/blog.nsf/d6plinks/TTRY-8WQ99N
Jul 31, 2012
224 hits



Recent Blog Posts
242


locating XPage components with XspQuery
Sun, Apr 14th 2013 12:00a   Tim Tripcony
Several years ago, I wrote a utility Java class designed to make it easy to search for components within the current XPage instance based on various criteria. I've found it enormously useful, and, apparently, so has Keith Strickland, because he added it to org.openntf.xsp.extlib, complete with a few refinements. As an example of how you might use this, examine the following line of code: List requiredFields = new XspQuery() .addInstanceOf(UIInput.class) .addEquals("required", true) .loc [read] Keywords: ldd lotus dojo java javascript openntf oracle server
351


your how is not your what
Wed, Apr 3rd 2013 11:36a   Tim Tripcony
I've noticed a pattern emerging when I'm asked for help with XPages. Here's a representative conversation: "I'm trying to do [X] and it's not working. How can I do that?" "What are you trying to accomplish?" "I already told you. I'm trying to do [X]." "No, that's how you're trying to do it. What are you trying to do?" For example, replace "[X]" with "reach into a repeat control from outside it" (since this has become the most frequent topic I'm asked about [read] Keywords: xpages application
192


Developer2013 and IamLUG
Mon, Apr 1st 2013 7:33a   Tim Tripcony
I will be presenting at two upcoming conferences, Developer2013 and IamLUG. Developer2013 will be held at the MGM Grand in Las Vegas April 30 to May 2, and is organized by THE VIEW. I will be presenting the following sessions: Doing more with less code in XPages "Work smarter, not harder." We're all expected to, but are rarely told how. In XPages, however, we have many opportunities to do precisely that. This session will equip you with techniques for writing less code to achieve th [read] Keywords: domino lotus notes notes client xpages application applications desktop development facebook interface laptop linkedin mobile twitter
317


my new favorite quote
Sat, Mar 23rd 2013 5:20p   Tim Tripcony
"We go about our daily lives understanding almost nothing of the world. We give little thought to the machinery that generates the sunlight that makes life possible, to the gravity that glues us to an earth that would otherwise send us spinning off into space, or the atoms of which we are made and on whose stability we fundamentally depend. Except for children (who don’t know enough not to ask the important questions), few of us spend much time wondering why nature is the way it is; where the [read] Keywords: wiki
235


Taking the scary out of Java in XPages: fixing the API
Thu, Mar 21st 2013 4:00a   Tim Tripcony
Suppose you had a motivation to learn a new spoken language. As an example, let's imagine that you live in the U.S., but your job requires you to occasionally visit Paris, so you've decided to learn French. But you're not planning to move there, just spend a week there every couple months. So you don't want to learn the entire language, just enough to facilitate basic interaction whenever you're there. So you briefly considered taking a semester-long course at a local community college, but [read] Keywords: domino ibm lotus lotusscript notes xpages application best practice community css database google java openntf oracle twitter wiki
404


Taking the scary out of Java in XPages: knowing the entry points
Sat, Mar 2nd 2013 3:02a   Tim Tripcony
Before we dive in to this first topic, I should mention Declan's series, "XPage Java Roots". Declan has been shifting more of his code to Java, so just as he did with his epic "Learning XPages" series, where he documented his initial experiences with XPages itself, he is now documenting his experience of learning how to take advantage of Java in XPage development. It's a safe bet that this series will be a very useful reference, so whether or not my own perspective on this topic prov [read] Keywords: admin agent domino ibm lotus lotusscript notes script library xpages application applications database development eclipse interface java javascript oracle server wiki xml




346


Taking the scary out of Java in XPages: Prologue
Tue, Feb 26th 2013 9:50p   Tim Tripcony
The discussion following my last post made stark the need for greater availability of information that makes the nature of Java more accessible to Domino developers. Credit for the title of this post goes to Declan, who is considering writing a series of blog posts on this topic. I will be doing the same; hopefully there will be a fair amount of duplication. As David Leedy is fond of stating, it's a good thing when several people share the same information, because that makes it easier for the [read] Keywords: domino xpages application java
666


SSJS is a crutch
Fri, Feb 22nd 2013 10:50p   Tim Tripcony
I've been debating for quite a while whether I should write this post. It obviously makes a potentially controversial statement. A fellow developer who knew I was drafting it put my hesitance into perspective: "you really want to be that guy?" This was my response: I want to be the guy who saves people pain. But sometimes to do that, you have to tell your friend if she wants to stop being punched in the face, she needs to leave the guy who keeps punching her in the face. This post is ju [read] Keywords: agent domino formula language ibm lotus lotusscript notes xpages applications development java javascript openntf wiki
413


Passthru vs. component - my perspective
Sat, Feb 16th 2013 9:40p   Tim Tripcony
Paul Withers posted a thorough article explaining the differences between namespaced XPage components (e.g. ) and their corresponding passthru elements (e.g. ), providing numerous examples of what actually happens when these objects are constructed. I've always heard (and often repeated) that passthru elements are more efficiently processed than their namespaced equivalents, so Paul's post inspired me to offer my own perspective. Simply put, there's practically no difference... but there a [read] Keywords: acl domino xpages application development properties security
523


org.openntf.xsp.extlib
Mon, Jan 21st 2013 5:20a   Tim Tripcony
About 18 months ago, I created an OpenNTF project called Community Control Library. The fundamental reason for creating the project was my belief that the single factor keeping the Domino community from realizing the true potential of the platform is the assumption that the XPages Extension Library is the extension library, not an extension library. Let's briefly revisit its history: IBM starts an internal project, code named "Porus" (in reference to the Greek / Roman god of plenty), inte [read] Keywords: domino ibm notes policies xpages application applications best practice community development openntf wiki




Created and Maintained by Yancy Lent - About - Blog Submission - Suggestions - Change Log - Blog Widget - Advertising - Mobile Edition