I spend the majority of my design time in the 'Source' panel and I find it easier to type in <xp:button><</xp:button> than try to select the control off of the ridiculous accordion gizmo that holds the Custom Controls. If you have a bunch of categories then it is next to useless because you only get a couple of controls showing and I find scrolling a major pain. I'm sure that IBM could do a LOT better than that. In any case I'm not blaming IBM for my Worm hole experience but it didn't help much.
So if you type in the <xp:button></xp:button> you can add the properties in and events in the panel and all is well. I created an onClick event and away we went. I worked perfectly. However, I did not add an id=something to the button. I saved the page and tested the button and it worked fine. Case closed? Well not quite. I installed the application on my clients server. The next day I get a message "If I click on white space on the page I get a very strange message about not being able to get a component" Users always give very informative responses. So I tried it and sure enough click on white space (why would I never have thought of doing that) we get some very stranhe behavior. Try as I could I could not figure out what the issue is. Posted a question on StackOverFlow and got point in the right direction. Any control that has an event handler Must Have An ID or it gets fired when the page is clicked on. So after many hours of unbillable time I found the button (actually I had several buttons with no ID). Set the ID and the problem went away. IMHO the ID should be a required property on a button.
Just a warning.