During the first phase of the project I had to make several design decisions. My mentor was a big help on each of them and so far I am pleased with how they turned out. Reading through the chats we had, I am amazed at how many decisions were based on the input of my mentor.
The biggest decision was to base the dashboard on Forms. My DashboardForm subclasses Form. To provide callbacks to the Controllers that are associated with the panels, it intercepts the httpSubmission method. In this case, the idea was mine, but it solidified during a discussion with my mentor.
Another nice example of my interaction with my mentor is the way that adding things to the dashboard is currently handled. I was originally thinking along the lines of directly adding the FormFields to that Form. My mentor suggested using an intermediary object, and thus DashboardPanel was born. After implementing it, I stumbled across a problem with the log tab. When I talked about this to my mentor he told me that Session is initiated at a later stage, making it necessary to insert data that is loaded via Session at a later point. This lead to the method getPanelContent, which allows adding data at a later stage.
Yesterday, I ported dbprofiler to my dashboard. It was amazing to see how easy and fast this could be done. It took me longer to switch the jQuery table sorter to an implementation that works with current versions of jquery than to move dbprofiler to my dashboard. If you want to see how it works check out the dashboard branch.