Hi all,

I am a developer that recently started a position in a new company that uses Zimbra as their webmail client for their customers. I am currently in the process of wrapping my head around the architecture of the software, and would appreciate some direction. I've browsed the forums quite extensively over the past few days, but haven't been able to find the answers to my questions. The documentation (or lack of it) hasn't helped me much either.

Let's start with the basics (assuming that I already have a dev installation). I've been trying to track down how events (i.e. button clicks, tree menu item clicks, etc) are captured, handled and acted on within Zimbra. I'd like to think that I have a decent understanding of how it all comes together, but please do correct me if I am (probably) wrong. Here's my basic understanding:

1.) User clicks on an actionable item on the canvas (i.e. a button on the toolbar, menu item in the tree, a message in the inbox)
2.) A listener that has been defined for one of the CONTROLLERS (i.e. toolbar) picks up on the event, and its defined OPERATION executes.
3.) Callback executes (if applicable)

A few questions / some clarification needed:

- Where are the default operations defined? For example, I'd like to peek at the operation that executes when the "Inbox" tree menu item is clicked.
- Similarly, where are the controllers defined/instantiated? For example, I'd like to see where the default compose listeners are hooked into the toolbar controller.

As a real-world example, let's say that I'd like to pinpoint exactly at what point in the code the maillist toolbar buttons get activated? Visually, they (i.e. Delete, move, print, Reply, Reply to All, Forward, etc) get activated when an email is selected, and deactivated when no email is selected.

Pardon my lack of understanding or improper use of terminologies - 3rd day on the job

Looking forward to some help!