Menu interfaces
FIG. 23 shows three structures for system objects representing a “Menu interface” 2300, a “Menu” 2310 and a “Menu item” 2320. Among other fields, a menu interface object has a specific Type_ID (8) 2305, a referred type identifier Ref_Type_ID 2307 for the type of user objects to which the menu interface is concerned, and a {list of menus} 2330 that records the menus included in the interface. The menu structure contains a specific Type_ID (9) 2315, a referred type identifier 2317 and a {list of menu items} 2340 for specifying the items included in each menu. Finally, the menu item structure describes a specific Type_ID (10) 2325, a referred type identifier 2327 and an identifier of the action Action_ID 2350 associated with the menu item. When the user clicks on a menu item, the system will instantiate the referred action, that must be supported by a toolkit associated to the type of the object.
These structures allow the user to configure his or her own organization of the menu interfaces. The inventive system will provide means for selecting one of the available menu interfaces for the object in focus, specifically, those menu interfaces whose Ref_Type_ID fields contain a type identifier that is the same or an ancestor of the type of the object. In principle, the Ref_Type_ID fields of the menus have to be equal to the Ref_Type_ID of the menu interfaces that contain those menus, and the same logic applies for the menu items contained in a menu. However, it may be convenient to use different identifiers. For example, if there are few actions programmed specifically for objects of type <Photo> (e.g. red-eye suppression), it may be interesting to define a menu for this type containing a menu item for each action, and include that menu in a more general menu interface for objects of type <Image> (see examples in the 'Type derivation' page). Obviously, the system will not activate the photo-related menu when the menu interface is activated for a generic image.
The converse situation may also apply. For example, when designing a specific menu interface for objects of type <Avatar>, it may be convenient to append menus or menu items for type <Sequence>, in order to manipulate the image sequence of an avatar in a specific manner (see examples in the 'Toolkits' page). When the user selects a menu item referencing a sequence-related action for an avatar object, the inventive system must check the existence of such an action for sequences in a toolkit for avatar objects, which makes it possible to override the original action for sequences.