Best is to use the debugger and step through the events when you click in OpenOLAT.
First, the clicks will be routed to a Component by the AuthenticatedDispatcher.execute(). The component does whatever it has to do in the UI and normally fires an event to the Controller which is listening to the component. The controller does whatever it has to do with the UI model, creates new Controllers, adds componentes and controller views to velocity Containers and might fire some controller events to its listeners.
Once all this dispatching phase is finished, the current window (which is a component/container) is told to draw itself. This will recursively traverse the component hierarchy and all dirty components are found. Normally, only the dirty components are redrawn. This means that html is generated which is packed to a JSON file which is sent to the browser which then does DOM replacmeents. This is the OpenOLAT AJAX mode. In some cases the request will render the entire page and not just some elements, we call this a full-page-refresh.
To find out the details you have to dig into the code and use the debugger to step through.