The Learning Continuum Company has released a new course, Introduction to Domino Designer 8.5, available for free. This course provides the basics of getting started with Domino Designer 8.5 to develop Notes and Domino applications, including using XPages. This new course is available immediately.
We've talked about how to create a View component so it follows that we need a Form component to compliment it.
Let's take another look at the src folder of our Flex app. Notice I've added a folder called "forms" to keep each different form in -- one for the documents in the contacts view and one for the companies view.
These two forms are based on the Form.mxml component that you can see in the net.codestore.flex.* package/folder. This Form component contains all the things common between both the forms based on it. Things like the layout of the fixed-position button bar, the validation routine, the HTTP service to fetch and post the data from the server.
Let's look at the Contact.mxml code, as below:
Notice how the main root tag is a Form. This means it is based on the Form component I mentioned. In the Form component I've defined 3 different objects that can be used to define the form -- content, buttons and the validators. Using these three properties of the Form we can quickly build a form without worrying about adding all the bits that are already in Form.mxml.
It's inside Form.mxml that we add the buttons and content in to the right place. It's also where we loop the array of validators at the point the form is submitted and prevent submission on failure.
Here's the code that runs when the Form element is first opened:
[Bindable]
public var validators:Array; [Bindable]
public var content:Container; [Bindable]
public var buttons:Array; private function initForm():void{//Add each of the buttons passed to the form in to the action bar buttons.forEach(function(element:*, index:int, arr:Array):void{ bar.addChild(element); }); //Add the main form container in to the right place. formContainer.addChild(content);
}
That should give you an idea how it works. Notice the three public bindable properties, which we used to define the main elements of the form.
How To Open a Form
From some place in our script, say in the double-click event of the view, all we have to do in order to open a document using one of our forms is run code like this:
import forms.*; private function openDocumentInTab(id:String):void{var form:Contact = new Contact(); form.isNewDoc = false; form.documentUnid = id; //Add it to the tabbed navigator tabs.addChild(form);
}
Because we've told it to import everything in the src/forms/ folder we can then create objects of the type "Content" (or "Company") as if they were built-in components. Thus we have access to the public properties of the objects, such as isNewDoc and documentUnid.
Obviously there's more to it than this, but hopefully you'll get the idea? The concept it quite simple and works quite well. If you need to alter the behaviour of the underlying Form element then you can do and the change will apply to all "forms" built on it.
What Next?
I think I've had enough of this Flex App Basics series of articles and I'm sure you probably have. I'm not even sure they've followed enough of a pattern to call them a series anything. They're more like random jottings that don't really piece together too well. Hopefully they'll have given you ideas on different methodologies though.
On Monday I'll package all the Contact Manager code together and upload it here. While it's nowhere near being a finished app it's good enough for you to rip apart and learn from. If I get the time to I'll try to keep adding on top of it.
This article continues our series on Lotusphere 2010. Last week, we discussed overall changes at Lotus and Project Vulcan. This week, we're looking at mobility and collaboration.
There's another theme that was big at Lotusphere: mobility and smartphones. Not only were there a bunch of Lotus and partner announcements, everywhere you went, you saw people using them. Even while standing around having a conversation, most participants had a phone in the hand, too, probably checking the 'Sphere twitter streams.
This trend isn't going away, and there were even some prophets suggesting that the smartphone will replace the laptop as the weapon of choice for many people, and as the prime interface for many business applications, too.
I'm not sure I subscribe to the former idea. I can't see the current awkward two-thumb typing interface on a small device replacing a keyboard, but then I could also be wrong, and maybe voice will become the large-scale data entry vehicle with future smartphones.
But as was obvious from both products and sessions, custom mobile business apps, and partner apps that work on mobiles are here to stay. For example:
BlackBerry launched their new Quickr and updated Connections products just before Lotusphere. Pity they appear to need another back-end server to support them, though.
Teamstudio announced an XPages toolset, Voyager, that will you to use XPages to design apps for Blackberries, and which will support offline as well as online capability.
Lotus said that a future release of Traveler (oh, how I hate the American spelling!) will support Android phones, starting with the Nexus One, in the second half of 2010. I'd speculate that this will come with Notes/Domino 8.5.2.
Lotus have a new iPhone product, Traveler Companion. This is free, already available and, by all accounts, a popular download on the iPhone App Store. It adds encryption capabilities to Traveler on an iPhone.
Lotus also announced future Nokia Symbian features, including Sametime presence awareness and Sametime Unified Telephony integrated into the device's address book, to be available sometime towards the end of 2010.
Can we talk? Another pervasive theme was collaboration itself. That's not a new theme to Lotusphere by any means. After all, it's one of the founding tenets of Notes itself.
But there was much more emphasis on the value, and indeed the whole point, of collaboration from a more social perspective. It can't be lost on Lotus that having started the whole collaboration software business, their lead has been somewhat eroded recently by things like Google Wave, and even SharePoint.
One way they plan to do that is via social analytics, which will pervade the product set in the future as the promise of project Vulcan starts to be delivered. This is the analysis of what interests you, taken from your profile, and who and what content you collaborate with.
There's a new initiative that's aimed at helping customers "get it" in terms of how collaboration is now a critical differentiator between companies, in how they interact with customers and suppliers and how they work internally to deliver more value, faster and better, through collaboration.
There's new Collaboration Agenda initiative, a consulting offering -- which partners can also get involved in -- aimed at helping companies to transform how they operate by liberating the knowledge and expertise they have.
Through workshops, customers can see how, by changing processes to become more collaborative and connecting people and technology in the right context, they can start to rebuild themselves. The workshops teach customers how to work more effectively with people inside and outside the firewalls, becoming more expertise-led enterprises, and "raise the collective intelligence of the organisation by allowing all members to easily tap into it".
Or, in other words, just "get it".
Lotus product updates In the meantime, the individual product lines continue to move forward, and I'm sure you'd like to know what's coming up next. That's next week.
Mick Moignard has been working and traveling with Lotus Notes since Release 2.0 in 1991. Mick is a DominoPower Senior Technical Editor and a Principal CLP with Unipart Expert Practices, a Lotus Advanced Partner in the UK. If you want to discuss anything to do with this article, or indeed anything else to do with Notes and Domino, contact Mick at Mick_Moignard@unipart.co.uk. Unipart Expert Practices will also happily discuss any opportunities you may have with any Notes and Domino application development or infrastructure projects you need help with. Unipart Expert Practices can be found at http://www.unipartep.com.
I get a few calls every now in then when a user has clicked on the header of a sortable column and they do not know why their type ahead search is not working. They also don't know what happened to any catagorized column. They might have even clicked on the column in a prevoius session. Maybe changing the color of the column or the header when that column is sorted or some indication in the area where the catagorized column is fot how to get it back? I just think the colored in up or down arrow is not enough. Thank you.
I use hotmail for my personal mail and I would like to be able to retrieve my hotmail mail with my Lotus Notes client. If this is already possible I do apologize, but I don't think that it is. I would think that a lot of users either have a hotmail or gmail personal account. Thank you.
When typeahead is invoked in ELSE (Eclipse LotusScript Editor) it doesn't seem to use the correct casing for the methods/properties (as outlined in the documentation). Given with SSJS we are compelled to ensure the correct casing is always used I think we should insist that ELSE also provides the documented casing.
Before ELSE (Eclipse LotusScript Editor) the old Domino Designer client always ensured that the correct indentation was applied whenever I added new lines of LotusScript code. Now I must manually select the code and type <Crtl><I> to force a block of code to be indetde correctly. I would much rather have the option to have the indentation occur automatically as I am writing the code. When creating complex blocks with nested if/the/else and while loops etc. it helps a lot to have the statements indeted to the correct level automatically.
The biggest thing I miss with the new Eclipse help for Domino Designer is the presence of a detailed index that includes all the classes, methods, properties etc that are contained in the various languages. I keep using the original NSF help because of this one feature. Being able to type the first few characters of an @Function, LS statement, or Class is so much faster to locate the needed information. Search provides too much rubbish and the table of contents take sofreveer to naigate to the correct page (if its there!).
The biggest thing I miss with the new Eclipse help for Domino Designer is the presence of a detailed index that includes all the classes, methods, properties etc that are contained in the various languages. I keep using the original NSF help because of this one feature. Being able to type the first few characters of an @Function, LS statement, or Class is so much faster to locate the needed information. Search provides too much rubbish and the table of contents take sofreveer to naigate to the correct page (if its there!).
When editing a LS, JS, or SSJS library that contains multiple classes/object I would like the ability to open a specific class/object in a new tab. This would allow me to work on two (or more) classes/objects at the same time and not lose my current place when I switch between related classes/objects. At the moment if I am editing a property/method in one class and which to check other code in the same LS library I must scroll away from where I am working and then navigate my way back to where I was.
Sometimes I am working on Rich Text Fields and I am interested in the content not the format. Why Lotus do not add a context-menu option called "Copy as plain text" in order to get just the content. Right now I have to copy paste it in wordpad copy again and past it again. Would be very convenient!
Sometimes I am working on Rich Text Fields and I am interested in the content not the format. Why Lotus do not add a context-menu option called "Copy as plain text" in order to get just the content. Right now I have to copy paste it in wordpad copy again and past it again. Would be very convenient!
This would be extremely useful when I am creating a view with many fields. Especially when that view is specifically used for importing data. Thank You.
Frank van der Linden has contributed
a reusable XPage control to render RSS feeds inside a custom XPage. Here is the catalog
entry and here the documentation. Technically this sample shows how to
invoke Java from the server side JavaScript so that ...
Explanation: Specify the types of MIME files to be excluded from consideration for compression. File types specified should be a subset of those types specified in the "HTTPIncludeMIMETypes" NOTES.INI setting. To enter multiple MIME types, separate each type with a semicolon (;). Applies to: ...
Explanation: Allows you to enable compression for Domino Web engine output. This option is disabled by default. Compression of output only applies to HTTP clients that support gzip (GNU zip) compression. Applies to: Servers UI equivalent: Available on Web Site document from the Internet Sites view ...
Explanation: Specify the minimum size of content that can be compressed. Applies to : Servers Default Value: 300 bytes UI equivalent: Available on Web Site document from the Internet Sites view of Domino Web Server Configuration document. Syntax: DominoGzipMinBytesToCompress
Explanation: Specify the MIME types to consider for compression. MIME types that are specified in the "DominoExcludeMIMETypes" NOTES.INI setting will not be compressed even if they fit the parameters of MIME types to be included for compression. To enter multiple MIME types, separate each type ...
With the new Domino Attachment Object Service (DAOS) feature available within Domino 8.5 there are new considerations for saving Domino data on IBM i when BRMS on-line saves are involved