class interface MENU_BAR

creation
   make (par: OVERLAPPED_WINDOW)
      --  Create a menu bar, when set up, the menubar shall be attach-ed 
      --  to the parent window.

      require
         valid: par /= Void
      ensure
         done: is_valid;
         keep_reference: par = parent

feature(s) from MEMORY
   --  Removal :

   dispose
      --  Low-level API free resource


   full_collect
      --  Force a full collection cycle if garbage collection is
      --  enabled; do nothing otherwise.


feature(s) from MENU
   --  Menu items management

   add_popup (item: POPUP_MENU)
      --  Add a popup menu at the end of the current menu.
      --  It cannot be removed.

      require
         valid_menu: is_valid;
         valid_item: item /= Void

   add_separator
      --  Add a separator at the end of the current menu.
      --  It cannot be removed.

      require
         valid: is_valid

   add_item (item: MENU_ITEM)
      --  Add an item at the end of the current menu.
      --  Use item.detach to remove the item.

      require
         valid_menu: is_valid;
         existing_item: item /= Void;
         unattached_item: not item.is_valid
      ensure
         attached: item.is_valid

feature(s) from MENU
   is_valid: BOOLEAN

feature(s) from MENU_BAR
   --  Installation & Destruction

   attach
      --  Attach menu bar to parent window, attachment should be done 
      --  when the menu is completed.

      require
         valid: is_valid

feature(s) from MENU_BAR
   --  Action(s)

   paint
      --  Update a menu bar.

      require
         valid: is_valid

invariant
   valid_parent: parent /= Void;
   items_ok: items /= Void;

end of MENU_BAR