Skip to main content

Launching a Window from a View

Nathan T. Freeman and Chris Blatnick was planning on presenting an UI technique that we developed for our Integrated Business Framework products at their presentation at Lotusphere 2007 but unfortunately there was not enough time. Nathan and Chris did a great job in demonstrating the importance of UI design. So I am posting it here. Below is a description of how it works and a sample database that demos it. Link It has been tested in Notes 6, 6.5, and Notes 7. Credit to this technique should be given to Robert Burton from our development team.

Though Lotus Notes had the tab window concept way before Firefox and Microsoft IE, we dislike how it works because you can open window after window and pretty soon you might have a dozen windows open. If you open a document in a view same thing happens. The user can start losing track of their task. Instead, we wanted the user to focus on the task in hand. You could have launched it in a different frame, but screen real estate is limited especially at a resolution of 1024 x 768. So we developed this technique for opening a document, form, or frameset in a separate window. This technique also works for opening a document or form in a dialog box.

In this technique, when you double click to open a document in a view, the document will open in a new Notes window that is separate from the existing Notes tab window. How does this work? First, we create a frameset with two frames. The view is display in one frame and the other frame we display a blank form or page and we make this frame very small.

This technique utilizes the ability of a view to open a document using a different form through form formulas. What we do is place the information about the form we want to launch in the form formula of the view and store it in the Notes.ini during the double click target event of the view. This information includes the document ID and name of the form that you would like to display. The information is passed to a launching form through environment variables when you double click on the document in the view. The view opens a launching form instead using the form formula and it opens up in frame that you can make very small (I-frame Web analogy). Contained in the launching form is code to launch a dialog box or a javascript window. The onload process of the launching form reads the environment variable that you set when you double clicked on the document in the view and determines the document and form to use for display. For a javascript window we create a Notes URL from the information to launch the new window and for a dialog box we use the document ID and form to get a handle to the document and open the dialog box.

In the demo, launch the frameset and double click on the document in the view.

Comments

Chris Blatnick said…
Nice post, Richard! Nathan showed me your example at Lotusphere. Really cool! Welcome to the blogsphere...looking forward to reading more stuff from you. Cheers...Chris
Ravi said…
I have been following the similar technique of opening a notes form via the notes URL.The user will be provided with a non-modal dialog. This was working fine till 8.0.1. Since 8.5.x the width and height parameter are being ignored. As I was searching for a fix, I stumbled across your post and nathan's post.

Did you guys find the same issue?
RK,

It works in the basic client, but you are correct it fails to control the width and height in the standard client. More troubling is that in a few standard clients which I cannot determine, it crashes the Lotus Notes Standard client. It works fine on the Basic client. The problem seem to occur on the Eclipse client.
Ravi said…
It doesn't seem to respect the width/height in basic and standard.
Regarding the crash, I had the same, and I found that it was due to the window name parameter I was generating by computation. I changed it and it works fine.

Moreover, in standard client, if you have a dialogbox to select values, the main window is collapsed.

Popular posts from this blog

Creating Twitter Bootstrap Widgets - Part II - Let's Assemble

Creating Twitter Bootstrap Widgets - Part I - Anatomy of a Widget Creating Twitter Bootstrap Widgets - Part II - Let's Assemble Creating Twitter Bootstrap Widgets - Part IIIA - Using Dojo To Bring It Together This is two part of my five part series "Creating Twitter Bootstrap Widgets".   As I mentioned in part one of this series, Twitter Bootstrap widgets are built from a collection standard HTML elements, styled, and programmed to function as a single unit. The goal of this series is to teach you how to create a Bootstrap widget that utilizes the Bootstrap CSS and Dojo. The use of Dojo with Bootstrap is very limited with the exception of Kevin Armstrong who did an incredible job with his Dojo Bootstrap, http://dojobootstrap.com. Our example is a combo box that we are building to replace the standard Bootstrap combo box. In part one, we built a widget that looks like a combo box but did not have a drop down menu associated with it to allow the user to make a select

The iPhora Journey - Part 8 - Flow-based Programming

After my last post in this series -- way back in September 2022, several things happened that prevented any further installments. First came CollabSphere 2022 and then CollabSphere 2023, and organizing international conferences can easily consume all of one's spare time. Throughout this same time period, our product development efforts continued at full speed and are just now coming to fruition, which means it is finally time to continue our blog series. So let's get started... As developers, most of us create applications through the conscious act of programming, either procedural, as many of us old-timers grew up with, or object-oriented, which we grudgingly had to admit was better. This is true whether we are using Java, LotusScript, C++ or Rust on Domino. (By the way, does anyone remember Pascal? When I was in school, I remember being told it was the language of the future, but for some reason it didn't seem to survive past the MTV era).  But in the last decade, there a

The iPhora Journey - Part 4 - JSON is King - The How

  The iPhora Journey - Part 1 - Reimagining Domino The iPhora Journey - Part 2 - Domino, the Little Engine that Could The iPhora Journey - Part 3 - Creating an Integrated UI Framework The iPhora Journey - Part 4 - JSON is King - The Why The iPhora Journey - Part 4 - JSON is King - The How As we mentioned yesterday, in reimagining Domino, we wanted Domino to be a modern web application server, one that utilized a JSON-based NoSQL database and be more secure compared to other JSON-based NoSQL platforms. A Domino document existing within a Domino database is the foundational data record used in iPhora, just as it is with traditional Domino applications. But instead of just storing data into individual fields, we wanted to store and process the JSON in a Domino document.  However, text fields (AKA summary fields) in Domino documents are limited to only 64 KBytes, and that is a serious limitation. 64 KBytes of JSON data does not even touch what the real world typically transfers back and fo