The IMenu class is a base class for all menu classes, including the following:
It provides functions to add, replace, remove, select, and disable menu items in the menu. This class also provides functions to access properties such as the following:
IMenu does not support conditional cascading behavior or the drawItem style (drawn buttons) in menus.
You can gain access to the window which underlies an IMenu by calling the IMenu::window method.
The Open Class Library provides a Motif callback routine to process the following menu events:
The bounding rectangle is returned after sending the message MM_QUERYITEMRECT. You can use the bounding rectangle if you need to draw menu items yourself.
You can gain access to the window which underlies an IMenu by calling the IMenu::window method.
To support menus loaded from a resource file, IMenu classes have the following requirements:
On Windows platforms, objects of the IMenu (and derived) classes do not have an underlying window. This is due to the implementation of menus in the Windows operating system as nonclient areas of the frame. Application code which relies on the fact that an IMenu has a window in the OS/2 or UNIX operating systems may not be portable to the Windows operating system.
Use these functions to construct and delete objects of the IMenu class. You cannot copy or assign IMenu objects because both the copy constructor and the assignment operator are private functions.
Protected constructors are provided for the use of derived classes to create objects of this class.
![]() |
public:
virtual ~IMenu()
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
Construct an IMenu object.
public:
IMenu(const IMenuHandle& menuHandle)
Constructs an IMenu object for an existing menu handle. The menu refered to by the specified handle is not automatically destroyed when the IMenu object is destroyed; you can change this by using setAutoDestroyWindow(true).
Windows | OS/2 | AIX |
Yes | Yes | No |
On X-Motif systems, the specified handle (actually an IWindowHandle) is wrappered in an IWindow object, available to you by calling IMenu::window.
On OS/2 systems, the specified handle (actually an IWindowHandle) is wrappered in an IWindow object, available to you by calling IMenu::window.
protected:
IMenu()
Provided for derived classes to call.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
You can add textual, graphical, submenu, or separator items to a menu object.
You can also construct an object of the
IMenuItem class and add it
to the menu object.
Note:
![]() |
Adds a bitmap menu item as the last item in a menu or submenu.
public:
virtual IMenu& addBitmap( unsigned long newItemId, const IResourceId& bitmapResId, unsigned long intoSubmenuId = 0 )
Use this version to load a bitmap from the resource library you specified when you created the IResourceId object.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
X-Motif provides specific widgets and gadgets for menus. A menu bar must contain only CascadeButton widgets or gadgets because they display a pull-down menu with additional choices. The pull-down menus can contain the following:
public:
virtual IMenu& addBitmap( unsigned long newItemId, const IBitmapHandle& itemBitmap, unsigned long intoSubmenuId = 0 )
Use this version to add a bitmap that you already have loaded into a menu item.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
X-Motif provides specific widgets and gadgets for menus. A menu bar must contain only CascadeButton widgets or gadgets because they display a pull-down menu with additional choices. The pull-down menus can contain the following:
public:
virtual IMenu& addBitmap( unsigned long newItemId, unsigned long bitmapResId, unsigned long intoSubmenuId = 0 )
Use this version to load a bitmap from the default resource library.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
X-Motif provides specific widgets and gadgets for menus. A menu bar must contain only CascadeButton widgets or gadgets because they display a pull-down menu with additional choices. The pull-down menus can contain the following:
![]() |
public:
virtual IMenu& addItem( IMenuItem& menuItem, unsigned long intoSubmenuId = 0 )
Adds a menu item, represented by an IMenuItem, as the last item in a menu or submenu.
IAccessError | The system could not insert the menu item. This may be due to lack of system resources. |
IInvalidRequest | The menu item could not be updated with the bitmap. |
IInvalidRequest | The bitmap handle is invalid or missing. Verify that the bitmap handle is valid or that the bitmap resource exists. |
Windows | OS/2 | AIX |
Yes | Yes | Yes |
X-Motif provides specific widgets and gadgets for menus. A menu bar can contain only CascadeButton widgets or gadgets because they display a pull-down menu with additional choices. The pull-down menus can contain the following:
![]() |
Adds a separator menu item as the last item in a menu or submenu. Use this function to add items to your menu without creating a menu item object first.
public:
virtual IMenu& addSeparator( unsigned long newItemId, unsigned long intoSubmenuId )
Use this version of the function if you need to be able to access the separator item later. Use newItemId to specify the identifier you want to use to access the separator.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
public:
virtual IMenu& addSeparator( unsigned long intoSubmenuId = 0 )
Use this version to add a separator with an unspecified item identifier.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
Creates a submenu and adds it to the menu item.
public:
virtual IMenu& addSubmenu(unsigned long itemId)
IInvalidRequest | An attempt was made to add the menu bar as a submenu. The menu bar cannot be added as a submenu. |
IInvalidRequest | A submenu already exists for the menu item. Only one submenu can be added to a menu item. |
Windows | OS/2 | AIX |
Yes | Yes | Yes |
public:
virtual IMenu& addSubmenu( unsigned long itemId, const IResourceId& submenuResId )
IInvalidRequest | An attempt was made to add the menu bar as a submenu. The menu bar cannot be added as a submenu. |
IInvalidRequest | A submenu already exists for the menu item. Only one submenu can be added to a menu item. |
Windows | OS/2 | AIX |
Yes | Yes | Yes |
To support menus loaded from a resource file, IMenu classes have the following requirements:
![]() |
Adds a text menu item as the last item in a menu or submenu. You can use this function to add items to your menu without creating a menu item object first.
public:
virtual IMenu& addText( unsigned long newItemId, const char* itemText, unsigned long intoSubmenuId = 0 )
Use this version to specify a character string for the menu item text.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
X-Motif provides specific widgets and gadgets for menus. A menu bar must contain only CascadeButton widgets or gadgets because they display a pull-down menu with additional choices. The pull-down menus can contain the following:
public:
virtual IMenu& addText( unsigned long newItemId, const IResourceId& textResId, unsigned long intoSubmenuId = 0 )
Use this version to load the menu item text from a resource library.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
X-Motif provides specific widgets and gadgets for menus. A menu bar must contain only CascadeButton widgets or gadgets because they display a pull-down menu with additional choices. The pull-down menus can contain the following:
Cursored operations use objects of the IMenu::Cursor nested class to designate which menu item is to be acted upon. You can use these functions to access each item in the menu without knowing the menu item identifiers.
![]() |
public:
virtual IMenu& add(IMenuItem& menuItem, Cursor& cursor)
Adds the specified menu item at the specified cursor position by pushing down everything after the cursor.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
virtual IMenu& addAsNext( IMenuItem& menuItem, Cursor& cursor )
Adds the specified menu item as the next item and sets the specified cursor on it.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
Cursor cursor( unsigned long itemId, unsigned long inSubmenuId = 0 ) const
Returns an object of the nested class IMenu::Cursor and sets the cursor to point to the specified menu item.
IInvalidRequest | The menu item identifier is invalid. Verify that the identifier represents an item in the menu. |
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
virtual IMenu& deleteAt(Cursor& cursor)
Deletes the menu item at the position of the specified cursor and sets the cursor to the previous menu item.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
virtual IMenuItem elementAt(const Cursor& cursor) const
Returns an IMenuItem that describes the menu item at the cursor position.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
virtual IMenu& removeSubmenuAt(Cursor& cursor)
Removes the menu item and submenu indicator at the specified cursor position. Typically, you use this function to remove a cascading menu.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
Use these members to query and set the drag-item provider for objects of this class. Note that the drag-item provider for an IMenu object (such as an IMenuBar) is different from the drag-item provider for an IWindow object (such as an IEntryField).
![]() |
public:
IDMItemProvider* itemProvider() const
Returns a pointer to the drag-item provider (IDMItemProvider) for this menu.
Windows | OS/2 | AIX |
No | Yes | Yes |
![]() |
public:
IMenu& setItemProvider(IDMItemProvider* dragProvider)
Sets a pointer to the drag-item provider (IDMItemProvider) for this menu.
Windows | OS/2 | AIX |
No | Yes | Yes |
These members provide utilities used to implement this class.
![]() |
public:
virtual IMenu& disableUpdate()
Disables drawing changes to a menu on the screen.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
virtual IWindowHandle handle() const
Returns the menu handle.
Windows | OS/2 | AIX |
No | Yes | Yes |
The returned handle is a unique 32-bit identifier for this menu in the same way a window handle is a unique identifier for IWindow-derived classes. However, this handle is not a window handle on all platforms; on the Windows operating system, it is a menu handle.
![]() |
public:
virtual IMenu& hide()
Hide this menu so it cannot be seen on screen.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
virtual unsigned long id() const
Returns the menu identifier of the menu.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
virtual bool isFrameWindow() const
If this object represents a frame window, true is returned. Otherwise, false is returned. Because menus are not frame windows, false is always returned.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
virtual bool isValid() const
If this object represents a valid menu, true is returned. If the menu does not exist, or has already been destroyed, false is returned.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
static IMenuHandle menuWithParent(IWindow& parent)
Returns the menu handle of the menu associated with the given parent window. If the given window has no menu, 0 is returned. This method is one way to obtain the menubar associated with an IFrameWindow.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
virtual IWindow* owner() const
Returns the menu's owner. This function may return 0 if either of the following occurs:
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
virtual IMenu& show(bool showMenu = true)
Makes the menu visible.
Note:
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
virtual IWindow* window() const
Returns the IWindow object which underlies this menu (for those platforms where menus have underlying windows).
Windows | OS/2 | AIX |
No | Yes | Yes |
![]() |
protected:
void setWindow(IWindow* window)
Sets the IWindow object which underlies this menu (for those platforms where menus have underlying windows). This method must be called in the constructor(s) of any IMenu-derived class. If an IMenu-derived class constructor constructs an IWindow to pass in this call, that class's destructor is also responsible for deleting it and then calling this method with a 0 pointer. This insures that the parent class destructor does not also try to destroy the underlying IWindow.
It is not necessary for classes derived from IMenuBar, IPopUpMenu, ISubMenu or ISystemMenu to call this method; those classes take care of it.
Windows | OS/2 | AIX |
No | Yes | Yes |
Menu item properties are general characteristics of a menu item. You can create an IMenuItem object for an item in the menu to manipulate properties of the item. You can also directly obtain certain properties of the menu, such as the number of items contained in it or the rectangle of a particular item.
![]() |
public:
virtual unsigned long conditionalCascade( unsigned long itemWithSubmenuId )
Returns the default item for a conditionally cascading menu. You can use this function to retrieve the default item previously set by IMenu::setConditionalCascade. An exception is thrown if either of the following conditions exist:
Windows | OS/2 | AIX |
Yes | Yes | Ignored |
![]() |
public:
virtual IMenu& enableUpdate(bool enableWindow = true)
Enables or disables drawing changes to a menu on the screen.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
bool isShowing() const
If any part of the menu is showing, true is returned.
Otherwise, false is returned.
Note:
Windows | OS/2 | AIX |
Yes | Yes | Yes |
On Windows platforms, this method behaves the same as isVisible; that is, it returns true if the menu is marked visible even if it is obscured by another window.
![]() |
public:
bool isVisible() const
If the menu's style is set to visible, true is returned.
Otherwise, false is returned.
Note:
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
unsigned long itemHelpId(unsigned long menuItemId) const
Returns the identifier of the help panel that is to be displayed when help is requested for the menu item. To display the help panel, you must first associate the window owning this menu with a help instance. See the IHelpWindow class for more information.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
IRectangle itemRect(unsigned long itemId) const
Returns the bounding rectangle of a menu item.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
The bounding rectangle is the rectangle returned by sending the message MM_QUERYITEMRECT.
![]() |
public:
virtual IMenuHandle menuHandle() const
Returns the handle object for the menu.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
IMenuItem menuItem(unsigned long itemId) const
Returns an IMenuItem object. If the menu does not have a menu item with an ID equal to itemId, an exception is thrown.
IInvalidRequest | The menu item identifier is invalid. Verify that the identifier represents an item in the menu. |
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
unsigned long numberOfItems( unsigned long forSubmenuId = 0 ) const
Returns the number of menu items for the specified submenu. If you specify 0, the count is returned for the IMenu object.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
In X-Motif, the library queries the resource XmNnumChildren to determine the number of items in a menu or submenu.
![]() |
Invalidates or updates all or part of the menu.
public:
virtual IMenu& refresh( IWindow::RefreshType type = IWindow::paintAll )
This method invalidates the entire window according to the specified type of refresh protocol.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
public:
virtual IMenu& refresh( const IRectangle& invalidRectangle, bool immediate = false )
This method invalidates the area specified by the given rectangle.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
virtual IMenu& removeConditionalCascade( unsigned long itemWithSubmenuId )
Removes conditional cascade behavior from the specified menu item.
IInvalidRequest | The menu item identifier is invalid. Verify that the identifier represents an item in the menu. |
Windows | OS/2 | AIX |
Yes | Yes | Ignored |
X-Motif does not support conditionally cascading menus.
![]() |
public:
virtual IMenu& setConditionalCascade( unsigned long itemWithSubmenuId, unsigned long defaultItemId )
Enables conditionally cascading menus. You can use this function to change the default item on a menu that is already a conditionally cascaded menu. An exception is thrown if either of the following conditions exist:
IInvalidRequest | The menu item identifier is invalid. Verify that the identifier represents an item in the menu. |
Windows | OS/2 | AIX |
Yes | Yes | Ignored |
X-Motif does not support conditionally cascading menus.
![]() |
public:
virtual IMenu& setItemHelpId( unsigned long menuItemId, unsigned long helpTopicId )
Stores the identifier of the help panel that is to be displayed when help is requested for the menu item. To display the help panel, you must first associate the window owning this menu with a help instance. See the IHelpWindow class for more information.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
You can remove menu items or submenus by providing the item identifier of the item to remove.
![]() |
public:
virtual IMenu& deleteItem(unsigned long itemId)
Deletes the item with the specified identifier from the menu.
IInvalidRequest | The menu item identifier is invalid. Verify that the identifier represents an item in the menu. |
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
virtual IMenu& removeSubmenu( unsigned long itemWithSubmenuId )
Removes the menu item's submenu indicator and destroys the submenu.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
You replace a menu item to change the text or graphic displayed on the button face or to create a submenu. You can also replace a menu item with an IMenuItem object. It is often convenient to create an IMenuItem object using menuItem, make the appropriate changes to the IMenuItem object, and then replace the item in the menu object using setItem.
![]() |
Causes a menu item to display a bitmap.
public:
virtual IMenu& setBitmap( unsigned long menuItemId, unsigned long newBitmapResId )
Use this function when you want Open Class Library to load the bitmap from the default resource library.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
public:
virtual IMenu& setBitmap( unsigned long menuItemId, const IBitmapHandle& bitmapHandle )
Use this function when you already have the bitmap loaded.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
public:
virtual IMenu& setBitmap( unsigned long menuItemId, const IResourceId& newBitmapResId )
Use this function when you want Open Class Library to load the bitmap from the resource library you specified when you created the IResourceId object.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
virtual IMenu& setItem(const IMenuItem& menuItem)
Replaces a specified menu item's style and representation.
IInvalidRequest | The system could not insert the menu item. This may be due to lack of system resources. |
IInvalidRequest | The menu item could not be updated with the bitmap. |
IInvalidRequest | The bitmap handle is invalid or missing. Verify that the bitmap handle is valid or that the bitmap resource exists. |
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
virtual IMenu& setSubmenu( unsigned long itemId, const IResourceId& submenuResId )
Creates a menu and sets it as the menu item's submenu.
IInvalidRequest | An attempt was made to add the menu bar as a submenu. The menu bar cannot be added as a submenu. |
Windows | OS/2 | AIX |
Yes | Yes | Yes |
To support menus loaded from a resource file, IMenu classes have the following requirements:
![]() |
Replaces a specified menu item's text.
public:
virtual IMenu& setText( unsigned long menuItemId, const char* newText )
IInvalidRequest | The system could not insert the menu item. This may be due to lack of system resources. |
Windows | OS/2 | AIX |
Yes | Yes | Yes |
public:
virtual IMenu& setText( unsigned long menuItemId, const IResourceId& newTextResId )
Windows | OS/2 | AIX |
Yes | Yes | Yes |
Selection functions allow you to determine if a menu item is selectable (enabled) or is displaying a selection state indicator. You can also change these properties.
![]() |
public:
virtual IMenu& checkItem( unsigned long itemId, bool check = true )
Places a select state indicator to the left of the specified item. The default visual of this indicator is a check mark.
IInvalidRequest | The menu item identifier is invalid. Verify that the identifier represents an item in the menu. |
IInvalidRequest | The system could not insert the menu item. This may be due to lack of system resources. |
Windows | OS/2 | AIX |
Yes | Yes | Yes |
The select state indicator is a square object to the left of the specified item.
In Motif, the resources XmNset and XmNindicatorOn are set to check or uncheck a menu item.
The select state indicator is a check mark to the left of the specified item.
![]() |
public:
virtual IMenu& disableItem(unsigned long itemId)
Prevents the menu item with the specified identifier from being selected.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
In X-Motif, the resource XmNsensitive is set by invoking XtSetSensitive to enable or disable a menu item.
![]() |
public:
virtual IMenu& enableItem( unsigned long itemId, bool enable = true )
Makes a menu item selectable.
IInvalidRequest | The menu item identifier is invalid. Verify that the identifier represents an item in the menu. |
IInvalidRequest | The system could not insert the menu item. This may be due to lack of system resources. |
Windows | OS/2 | AIX |
Yes | Yes | Yes |
In X-Motif, the resource XmNsensitive is set by invoking XtSetSensitive to enable or disable a menu item.
![]() |
public:
bool isItemChecked(unsigned long itemId) const
If the menu item with the specified identifier is checked, true is returned. Otherwise, false is returned.
IInvalidRequest | The menu item identifier is invalid. Verify that the identifier represents an item in the menu. |
Windows | OS/2 | AIX |
Yes | Yes | Yes |
In X-Motif, the resources XmNset and XmNindicatorOn are queried to determine if a menu item is checked.
![]() |
public:
bool isItemEnabled(unsigned long itemId) const
If the menu item with the specified identifier is selectable, true is returned. Otherwise, false is returned.
IInvalidRequest | The menu item identifier is invalid. Verify that the identifier represents an item in the menu. |
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
virtual IMenu& selectItem(unsigned long itemId)
Selects the menu item with the specified identifier.
IInvalidRequest | The menu item identifier is invalid. Verify that the identifier represents an item in the menu. |
Windows | OS/2 | AIX |
Yes | Yes | Yes |
In X-Motif, the resource XmNset is set to select a menu item.
![]() |
public:
virtual IMenu& uncheckItem(unsigned long itemId)
Removes the select state indicator from the menu item with the specified identifier.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
In X-Motif, the resources XmNset and XmNindicatorOn are set to check or uncheck a menu item.
IMenu defines objects of the nested class IMenu::Style. You can use these styles with the function IMenu::setDefaultStyle.
![]() |
public:
static Style defaultStyle()
Returns the default style. The default style is IMenu::classDefaultStyle unless you have changed it using IMenu::setDefaultStyle.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
static void setDefaultStyle(const Style& aStyle)
Sets the default style for all subsequent menus.
This member function is not thread safe. In a multithreaded application, it should only be called when a conflict is not possible. A conflict can arise if you set the default style on one thread at the same time that it is being queried on another. In this situation, the query would take place while the style is in an unknown state.
When you create a menu class and do not specifically specify menu styles in the constructor, the Open Class Library queries the default style. Therefore, the only safe place to call this member function is when no other application threads that create menus are active.
Another way to avoid a conflict in a multithreaded application is to specifically specify window styles on window construction, rather than calling this member function.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
static const Style classDefaultStyle
Specifies the original default style for this class, which is IMenu::noStyle.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
static const Style noStyle
Specifies that no style applies to the menu.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
![]() |
public:
static const Style visible
Serves the same purpose as IWindow::visible.
Windows | OS/2 | AIX |
Yes | Yes | Yes |
virtual ~INotifier()
virtual INotifier& disableNotification() = 0
virtual INotifier& enableNotification( bool enable = true ) = 0
INotifier()
virtual bool isEnabledForNotification() const = 0
virtual INotifier& notifyObservers( const INotificationEvent& event ) = 0
virtual INotifier& notifyObserversAsync( const INotificationEvent& event )
const IThreadId& threadId() const
virtual ~IStandardNotifier()
virtual IStandardNotifier& disableNotification()
virtual IStandardNotifier& enableNotification( bool enable = true )
virtual bool isEnabledForNotification() const
IStandardNotifier(const IStandardNotifier& copy)
IStandardNotifier()
virtual INotifierAddress notifierAddress() const
virtual IStandardNotifier& notifyObservers( const INotificationEvent& anEvent )
virtual IStandardNotifier& notifyObserversAsync( const INotificationEvent& anEvent )
IStandardNotifier& operator =( const IStandardNotifier& aStandardNotifier )
static INotificationId const allChangesId
static INotificationId const deleteId
virtual IStandardNotifier& addObserver( IObserver& observer, const IInterest& interest )
virtual IStandardNotifier& notifyObservers( const INotificationId& nId )
virtual IObserverList& observerList( const IInterest* anInterest = 0 ) const
virtual IStandardNotifier& removeAllObservers()
virtual IStandardNotifier& removeObserver( IObserver& observer, const IInterest& interest )
virtual IStandardNotifier& removeObserver( IObserver& observer )
virtual INotifier& addObserver( IObserver& observer, const IInterest& interest )
virtual INotifier& notifyObservers( const INotificationId& id ) = 0
virtual IObserverList& observerList( const IInterest* anInterest = 0 ) const = 0
virtual INotifier& removeAllObservers() = 0
virtual INotifier& removeObserver(IObserver& observer) = 0
virtual INotifier& removeObserver( IObserver& observer, const IInterest& interest )