Many complex applications that we create involve a large number of business objects on which the user needs to operate. Creating a unified menu to accomplish this can be quite challenging. Fortunately, as we begin to place the user’s focus more on the objects and tasks and less on the application itself, there are new window and menu constructs to support this design technique. As the user activates different objects, different commands need to be accessed in the user interface. Menus in the traditional application window are now being divided into three types: primary window menus, workspace menus, and active object menus. Each one of these types enhances usability by defining the appropriate user interface as the user activates or deactivates an object.
Primary Window Menu
This menu is the topmost container menu and controls the work area of the window. It also identifies the ‘main’ or high-level object and the commands normally associated with that object. This menu is displayed in the menu bar at all times, regardless of which object is active. If you have several main objects in the application, you should include a 16×16 pixel icon for each active object as part of the primary container window.
As we move away from MDI (Multiple Document Interface) applications, the workspace becomes the new window construct to support the organization of child windows. The workspace menu (typically labeled “window” on the menu bar) provides commands for managing the child windows displayed within it. Like the primary window menu, the workspace menu should always be displayed, regardless of which object is active.
Active Object Menu
An active object can define the menus that appear on the primary container’s menu bar. Actions that apply only to the active object should go on the active object menus. If no child objects are active, the object defined by the primary window container becomes the active object. Most of the menus on the menu bar are this type of menu. You should follow the normal menu naming conventions and use separator bars to create clear and intuitive menus. In addition to having a place on the application menu bar, an active object menu is often associated with the object itself via a right-click pop-up menu.