Functions and structures to build context aware menus.
This file defines the menu service which provides common, context-aware logic for building menus. Similar to the invocation framework, the menu service can construct menus and action bars based on a specified type. However, the menu service also considers the domain-specific context of the data objects rather than relying on simple types. For example, the menu service understands the context of a phone number and its relationship to a contact. The menu service populates the menu/action-bar with the appropriate actions based on the state of the phone number such as whether it's related to a known contact or not.
The menu service determines the appropriate actions to add to the menu based on the context of the request. However, the menu service still defers to the invocation service to locate all the registered targets/providers of those actions.