home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / include / isubmenu.hpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-22  |  6.7 KB  |  186 lines

  1. #ifndef _ISUBMENU_
  2. #define _ISUBMENU_
  3. /*******************************************************************************
  4. * FILE NAME: isubmenu.hpp                                                      *
  5. *                                                                              *
  6. * DESCRIPTION:                                                                 *
  7. *   Declaration of the class:                                                  *
  8. *     ISubmenu                                                                 *
  9. *                                                                              *
  10. * COPYRIGHT:                                                                   *
  11. *   IBM Open Class Library                                                     *
  12. *   (C) Copyright International Business Machines Corporation 1992, 1996       *
  13. *   Licensed Material - Program-Property of IBM - All Rights Reserved.         *
  14. *   US Government Users Restricted Rights - Use, duplication, or disclosure    *
  15. *   restricted by GSA ADP Schedule Contract with IBM Corp.                     *
  16. *                                                                              *
  17. *******************************************************************************/
  18. #include <imenu.hpp>
  19. #include <ihandle.hpp>
  20.  
  21. class IBitmapHandle;
  22. class IMenuItem;
  23. class IResourceId;
  24. class ISubmenuCursorData;
  25. class ISubmenuList;
  26. class ISubmenuData;
  27.  
  28. #pragma pack(4)
  29.  
  30. class ISubmenu : public IMenu {
  31. typedef IMenu
  32.   Inherited;
  33. public:
  34. /*------------------------------- Constructors -------------------------------*/
  35.   ISubmenu ( const IMenuHandle& submenuHandle );
  36.  
  37. virtual
  38.  ~ISubmenu ( );
  39.  
  40. /*-------------------------------- Properties --------------------------------*/
  41. virtual IWindowHandle
  42.   handle     ( ) const;
  43. virtual IMenuHandle
  44.   menuHandle ( ) const;
  45.  
  46. /*------------------------------- Adding Items -------------------------------*/
  47. virtual ISubmenu
  48.  &addItem      ( IMenuItem&           menuItem,
  49.                  unsigned long        intoSubmenuId = 0 ),
  50.  &addText      ( unsigned long        newItemId,
  51.                  const char*          itemText,
  52.                  unsigned long        intoSubmenuId = 0 ),
  53.  &addText      ( unsigned long        newItemId,
  54.                  const IResourceId&   newItemTextResId ,
  55.                  unsigned long        intoSubmenuId = 0 ),
  56.  &addBitmap    ( unsigned long        newItemId,
  57.                  const IBitmapHandle& itemBitmap,
  58.                  unsigned long        intoSubmenuId = 0 ),
  59.  &addBitmap    ( unsigned long        newItemId,
  60.                  const IResourceId&   newItemBitmapResId,
  61.                  unsigned long        intoSubmenuId = 0 ),
  62.  &addBitmap    ( unsigned long        newItemId,
  63.                  unsigned long        newItemBitmapResId,
  64.                  unsigned long        intoSubmenuId = 0 ),
  65.  &addSeparator ( unsigned long        newItemId,
  66.                  unsigned long        intoSubmenuId ),
  67.  &addSeparator ( unsigned long        newItemId = 0 );
  68.  
  69. /*----------------------------- Replacing Items ------------------------------*/
  70. virtual ISubmenu
  71.  &setItem   ( const IMenuItem&     menuItem ),
  72.  &setText   ( unsigned long        menuItemId,
  73.               const char*          newText ),
  74.  &setText   ( unsigned long        menuItemId,
  75.               const IResourceId&   newTextResId ),
  76.  &setBitmap ( unsigned long        menuItemId,
  77.               const IBitmapHandle& bitmapHandle ),
  78.  &setBitmap ( unsigned long        menuItemId,
  79.               const IResourceId&   newBitmapResId ),
  80.  &setBitmap ( unsigned long        menuItemId,
  81.               unsigned long        newBitmapResId );
  82.  
  83. /*------------------------------ Removing Items ------------------------------*/
  84. virtual ISubmenu
  85.  &deleteItem    ( unsigned long itemId      ),
  86.  &removeSubmenu ( unsigned long itemWithSubmenuId );
  87.  
  88. /*-------------------------------- Selection ---------------------------------*/
  89. virtual ISubmenu
  90.  &checkItem    ( unsigned long  itemId,
  91.                  Boolean        checked  = true ),
  92.  &uncheckItem  ( unsigned long  itemId ),
  93.  &enableItem   ( unsigned long  itemId,
  94.                  Boolean        enabled  = true ),
  95.  &disableItem  ( unsigned long  itemId );
  96.  
  97. /*----------------------------------- Undo -----------------------------------*/
  98. virtual ISubmenu
  99.  &undo ( );
  100.  
  101. class Cursor : public IVBase {
  102. public :
  103. /*---------------------------- Constructors -----------------------------*/
  104.   Cursor ( const ISubmenu& menu);
  105.  
  106. virtual
  107.  ~Cursor ( );
  108.  
  109. /*--------------------------- Cursor Movement ---------------------------*/
  110. virtual Boolean
  111.   setToFirst    ( ),
  112.   setToNext     ( ),
  113.   setToPrevious ( ),
  114.   setToLast     ( );
  115.  
  116. /*-------------------------- Cursor Validation --------------------------*/
  117. virtual Boolean
  118.   isValid    ( ) const;
  119. virtual void
  120.   invalidate ( );
  121.  
  122. private :
  123. /*--------------------------- Hidden Members ----------------------------*/
  124.   Cursor ( const Cursor& cursor );
  125.  
  126. /*------------------------------- Private -------------------------------*/
  127. friend class ISubmenu;
  128.  
  129. long
  130.   lCurrent;
  131. ISubmenu
  132.  *pSubmenu;
  133.  
  134. ISubmenuCursorData
  135.  *fCursorData;
  136. }; // ISubmenu::Cursor
  137.  
  138. /*--------------------------- Cursored Operations ----------------------------*/
  139. virtual IMenuItem
  140.   elementAt        ( const Cursor& cursor ) const;
  141.  
  142. virtual ISubmenu
  143.   &deleteAt        ( Cursor&     cursor   ),
  144.   &removeSubmenuAt ( Cursor&     cursor   ),
  145.   &add             ( IMenuItem&  menuItem,
  146.                      Cursor&     cursor   ),
  147.   &addAsNext       ( IMenuItem&  menuItem,
  148.                      Cursor&     cursor   );
  149. Cursor
  150.   cursor           ( unsigned long itemId ) const;
  151.  
  152. private:
  153. /*----------------------------- Hidden Functions -----------------------------*/
  154.   ISubmenu         ( const ISubmenu&      submenu );
  155. ISubmenu
  156.  &operator=        ( const ISubmenu&      submenu );
  157. IMenuItem
  158.   elementAt        ( const IMenu::Cursor& cursor ) const;
  159. ISubmenu
  160.   &deleteAt        ( IMenu::Cursor&       cursor   ),
  161.   &removeSubmenuAt ( IMenu::Cursor&       cursor   ),
  162.   &add             ( IMenuItem&           menuItem,
  163.                      IMenu::Cursor&       cursor   ),
  164.   &addAsNext       ( IMenuItem&           menuItem,
  165.                      IMenu::Cursor&       cursor   );
  166.  
  167. /*-------------------------------- Private -----------------------------------*/
  168. void
  169.   setUndoAddItem    ( unsigned long        itemId ),
  170.   setUndoChangeItem ( const IMenuItem&     origItem );
  171. unsigned long
  172.   menuItemId        ( const Cursor&        cursor ) const;
  173. IMenuHandle
  174.   hwndHandle;
  175. ISubmenuList
  176.  *fItemList;
  177.  
  178. ISubmenuData
  179.  *fSubmenuData;
  180.  
  181. }; // ISubmenu
  182.  
  183. #pragma pack()
  184.  
  185. #endif /* _ISUBMENU_ */
  186.