- Extract the dojo package into your server's domino/html directory
- Add a script tag referencing dojo.js to your Domino design element (form, page, etc.)
- Call the functions
BP301 - Advanced Object Oriented Programming for LotusScriptThe main thrust was showing how inheritance can be used to create elegant object hierarchies. Personally I don't find that very advanced, it's fairly standard OOP practice and I've been doing that since LS finally got classes. I did glean the following nice tidbits:
- When debugging you can use Getthreadinfo(11) to return the name of the class that generated the error. Getthreadinfo(10) will give you the name of the function that the error occurred in.
- LSI_Info(14) will return the full call stack. I think this only works on Notes 6.5+, but it might go back further.
- A common practice is to put each group of classes into its own script library. When you reference script libraries on a form, they all get loaded before the form will display. This can take a noticeable amount of time. You can dynamically load only the script libraries you need at a particular point in time by using the LotusScript statement Execute. I hadn't heard of this one before. Unfortunately Bill was running short on time, so you'll have to check the presentation for the full details. He said he would post it on his blog shortly.
ID102 - Designing a world class user experienceThis was Mary Beth's session, and it was great to get a behind the scenes look at what they did to come up with all the new stuff. One of the cool things was they identified their five large core audiences, found out what the most popular magazine was for each, then cut pictures out of them and made a collage. They then presented these to users and asked them to pick. What they ended up with was the color palette and some good guidance for the UI as a whole. They also went into detail about how they defined a "world class user experience", and all the components that went into it. Really really interesting stuff.
Here are some nifty takeaways about Notes 8:
- If Notes crashes you won't have to reboot to reload it. I'm sure everyone reading this knows how to kill the processes or uses some utility to kill them, but this is a great step forward in usefulness.
- Preferences are unified. No more trying to explain to you users that some preferences are in Files > Preferences > User Preferences but others are in Tools > Preferences.
- Find free time was cleaned up. Each person, room and resource has a check box so you can choose to include or omit them from the free time search. This means if there is someone whose schedule you don't care about, you can not have their availability affect the overall free time search.
- I think Mary Beth misstated this, but on the off chance it's correct I'll repeat it anyway: If you send someone an Internet e-mail, and that person is also on Notes 8, message recall will remove the message from the recipient's e-mail. Quite frankly, that scares the bejeezus out of me if it's true.
- Synchronize Contacts is an entry on the Replicator!!
- The Workspace still doesn't roam. BUT -- if you click the Open button there is an entry for Applications, which is analogous to your Databases folder, and your Workspace tabs are listed as folders. This portion does roam. Why they can do this but they can't figure out how to copy desktop6.ndk around is anybody's guess.
AD303 - Extreme MakeoverNothing extreme, in any sense of the word, was shown. It was all very high level and nothing went into any depth. He showed adding HTML tags to a Notes form, then adding a stylesheet. That's covered in Designer help. I was looking for something a little more out of the box.
BP101 - Why your interface mattersA simply amazing and jaw-dropping display of some of the most amazing Notes client UI's I've ever seen. I use a lot of the techniques shown individually, but I've never had the time to wire them all together. Seeing what you can do with that makes me want to start, though. A particularly funny moment was when Nathan showed using a table border (the box with the drop shadow option on it) to put whitespace around a table, giving it padding. I've been doing that for years, but apparently it was an epiphany for most of the crowd. But then, I'm not Nathan's target audience of "straight white males". :-)
One thing Chris pointed out, and it definitely bears repeating, is that designing a good user interface is hard and it takes longer, but it is worth the effort. I think Nathan also said that he thinks our job is to make the user's life easier, not our own, so the work required is worth it. It's a sentiment I definitely take to heart and it's good to see some other people putting the users first.
Here are some good tips I picked up that I plan to start using:
- Make the data stand out. Most people put darker labels and lighter data. Nathan has the concept of making the label a lighter color, like a dark gray, and the data 1 pt larger and a darker color, like black. This makes the data stand out, and I think it's a great idea.
- Put key info into the form header. On a Memo form the top part with all the address info is actually in the form header. The Body field is on the bottom portion of the form. You can do the same thing, which means the lower section of the form will scroll, leaving the header in place with key info stationary in the header.
- Use caption tables to give users expandable sections in Notes. The UI for them is a little strange to me, but I can see that they can be useful.
- Not all databases need user-facing views. You can give users other methods of accessing data, such as layers with a Z-order to simulate popups. I've done similar things from VB, so seeing an implementation in Notes really made me happy.
BOF507 - OpenNTFIt really really sucked having to hike from the Dolphin all the way over to Yacht & Beach for the BOF, but I did it and I'm glad I did. I'm horrible with guessing crowd sizes, but the room was full and I'd say there were at least 60 people there. One topic that kept coming up was transforming DXL and updating UI elements. Nathan has the idea of using it to aid in making apps multilingual. Andre Guirard wants to use it to build an extensible (Nathan suggested wiki-driven) best practices rules engine. Tim (forgot his last name) wanted to use it to change action bar attributes on all the views in a database. Which, incidentally, I'm already working on.
There was also discussion of audience members using the Quick Elementer project, which lets you easily copy design elements between databases, and Qenos Workflow, which is a full-featured workflow framework.