Introduce a new event type, UserAction. Each action has a unique string identifier. Change Activities fire such events (user-wants-details, user-saved-changes) instead of calling PlaceController#goTo directly. The same objects that map place changes to activities also map user events to new places.
(Originally "per the description in http://code.google.com/events/io/2010/sessions/architecting-production-gwt.html")