Thoughts on Implementing MVC with Microstation

I had recently had a discussion with some colleagues about using the MVC (Model-View-Controller) architecture to allow the UI portions to be reused across different applications with different business logic.  I decided that I would implement MVC with a dialog I was working on to prove to myself that it could be done.

The first thing I struggled with was whether or not selection should be part of the controller or the view.  If it was part of the controller then should every action be an operation on the selection or should there also be ways to perform an action on an unselected operation?  If it was not part of the controller then it would not be possible for multiple views to share information about what was selected.  I ended up looking at some other controller implementations, specifically the NSArrayController.  That controller contained logic for selection.  I realized that it did make sense to have selection in the controller in because other controls (such as a delete button) may operate on the selection.

I implemented a MapViewList and a defined a IMapController interface.  Wait.  Something is missing; the M or model.  Did I need to implement a IMapModel interface?  No, the dgn is the model.  It is not a nice interface if I am only concerned with getting out my Map objects, but it does let me access the elements that represent my data and get notifications when they are changed.  Maybe the M should stand for Microstation?