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

  1. #ifndef _ICNRCOL_
  2. #define _ICNRCOL_
  3. /*******************************************************************************
  4. * FILE NAME: icnrcol.hpp                                                       *
  5. *                                                                              *
  6. * DESCRIPTION:                                                                 *
  7. *   Declaration of the classes:                                                *
  8. *     IContainerColumn                                                         *
  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.  
  19. #include <ivbase.hpp>
  20. #include <ihandle.hpp>
  21.  
  22. class IContainerWindow;
  23. class IContainerControl;
  24. class IContainerObject;
  25. class IResourceId;
  26. class IString;
  27. class IDate;
  28. class ITime;
  29. class ICnrColumnData;
  30. class ICnrControlData;
  31. struct _FIELDINFO;
  32.  
  33. #pragma pack(4)
  34.  
  35. class IContainerColumn : public IVBase {
  36. typedef IVBase
  37.   Inherited;
  38. public:
  39. /*---------------------------------- Styles ----------------------------------*/
  40. typedef unsigned long
  41.   Style;
  42.  
  43. static const Style
  44.   IC_IMPORTU string,
  45.   IC_IMPORTU icon,
  46.   IC_IMPORTU alignTop,
  47.   IC_IMPORTU alignBottom,
  48.   IC_IMPORTU alignVerticallyCentered,
  49.   IC_IMPORTU alignLeft,
  50.   IC_IMPORTU alignRight,
  51.   IC_IMPORTU alignCentered;
  52.  
  53. /*------------------------------ Heading Style -------------------------------*/
  54. typedef unsigned long
  55.   HeadingStyle;
  56.  
  57. static const HeadingStyle
  58.   IC_IMPORTU readOnlyHeading,
  59.   IC_IMPORTU classDefaultHeadingStyle;
  60.  
  61. static Style
  62.   defaultHeadingStyle    ( );
  63.  
  64. static void
  65.   setDefaultHeadingStyle ( const HeadingStyle& headingStyle );
  66.  
  67. /*-------------------------------- Data Style --------------------------------*/
  68. typedef unsigned long
  69.   DataStyle;
  70.  
  71. static const DataStyle
  72.   IC_IMPORTU date,
  73.   IC_IMPORTU time,
  74.   IC_IMPORTU number,
  75.   IC_IMPORTU horizontalSeparator,
  76.   IC_IMPORTU verticalSeparator,
  77.   IC_IMPORTU handleDrawItem,
  78.   IC_IMPORTU readOnly,
  79.   IC_IMPORTU invisible,
  80.   IC_IMPORTU classDefaultDataStyle;
  81.  
  82. static Style
  83.   defaultDataStyle    ( );
  84. static void
  85.   setDefaultDataStyle ( const DataStyle& dataStyle );
  86.  
  87. /*------------------------------ Related Members -----------------------------*/
  88. enum DataSource {
  89.   isIcon,
  90.   isIconViewText
  91.   };
  92.  
  93. enum VerticalAlignment {
  94.   top,
  95.   bottom,
  96.   centeredVertically
  97.   };
  98.  
  99. enum HorizontalAlignment {
  100.   left,
  101.   right,
  102.   centered
  103.   };
  104.  
  105. /*------------------------------- Constructors -------------------------------*/
  106.   IContainerColumn ( unsigned long       dataOffset,
  107.                      const HeadingStyle& title = defaultHeadingStyle(),
  108.                      const DataStyle&    data = defaultDataStyle() );
  109.  
  110.   IContainerColumn ( DataSource          objectDataType,
  111.                      const HeadingStyle& title = defaultHeadingStyle(),
  112.                      const DataStyle&    data = defaultDataStyle() );
  113.  
  114.   IContainerColumn ( const IContainerColumn& column);
  115.  
  116. virtual
  117.  ~IContainerColumn ( );
  118.  
  119. /*----------------------------- Object Information ---------------------------*/
  120. virtual IContainerColumn
  121.  &setHeadingText       ( const char*           text ),
  122.  &setHeadingText       ( const IResourceId&    textId );
  123.  
  124. virtual IContainerColumn
  125.  &setHeadingIcon       ( const IPointerHandle& iconHandle ),
  126.  &setHeadingIcon       ( const IResourceId&    iconId ),
  127.  &setHeadingIcon       ( unsigned long         iconId );
  128.  
  129. virtual IString
  130.   headingText          ( ) const;
  131.  
  132. virtual IPointerHandle
  133.   headingIcon          ( ) const;
  134.  
  135. virtual IContainerColumn
  136.  &enableHeadingUpdate  ( Boolean enable = true ),
  137.  &disableHeadingUpdate ( ),
  138.  &enableDataUpdate     ( Boolean enable = true ),
  139.  &disableDataUpdate    ( );
  140.  
  141. virtual IContainerColumn
  142.  &show                 ( Boolean visible = true ),
  143.  &hide();
  144.  
  145. virtual IContainerColumn
  146.  &showSeparators       ( const DataStyle& separatorStyles =
  147.                            horizontalSeparator | verticalSeparator ),
  148.  &hideSeparators       ( const DataStyle& separatorStyles =
  149.                            horizontalSeparator | verticalSeparator );
  150.  
  151. virtual IContainerColumn
  152.  &justifyData          ( VerticalAlignment   = centeredVertically,
  153.                          HorizontalAlignment = centered ),
  154.  &justifyHeading       ( VerticalAlignment   = centeredVertically,
  155.                          HorizontalAlignment = centered );
  156.  
  157. virtual IContainerColumn
  158.  &setDisplayWidth     ( unsigned long widthInPixels );
  159.  
  160. virtual unsigned long
  161.   displayWidth        ( );
  162.  
  163. virtual IContainerColumn
  164.  &setDataOffset       ( unsigned long dataOffset ),
  165.  &setHelpId           ( unsigned long helpId );
  166.  
  167. unsigned long
  168.   helpId              ( ) const;
  169.  
  170. Boolean
  171.  isVisible              ( ) const,
  172.  isDate                 ( ) const,
  173.  isTime                 ( ) const,
  174.  isNumber               ( ) const,
  175.  isString               ( ) const,
  176.  isIconHandle           ( ) const,
  177.  isWriteable            ( ) const,
  178.  isHeadingWriteable     ( ) const,
  179.  isHeadingString        ( ) const,
  180.  isHeadingIconHandle    ( ) const,
  181.  hasHorizontalSeparator ( ) const,
  182.  hasVerticalSeparator   ( ) const;
  183.  
  184.  
  185. VerticalAlignment
  186.   verticalDataAlignment      ( ) const,
  187.   verticalHeadingAlignment   ( ) const;
  188. HorizontalAlignment
  189.   horizontalDataAlignment    ( ) const,
  190.   horizontalHeadingAlignment ( ) const;
  191.  
  192. /*---------------------------Data Retrieval ----------------------------------*/
  193. unsigned long
  194.   dataAsNumber ( const IContainerObject* object ) const;
  195. IString
  196.   dataAsString ( const IContainerObject* object ) const;
  197. IDate
  198.   dataAsDate   ( const IContainerObject* object ) const;
  199. ITime
  200.   dataAsTime   ( const IContainerObject* object ) const;
  201. IPointerHandle
  202.   dataAsIcon   ( const IContainerObject* object ) const;
  203.  
  204. protected:
  205. /*----------------------------- Object Attributes ----------------------------*/
  206. virtual IContainerColumn
  207.  &setTitleAttributes ( unsigned long  titleAttributes ),
  208.  &setDataAttributes  ( unsigned long  dataAttributes );
  209.  
  210. virtual unsigned long
  211.   titleAttributes    ( ) const,
  212.   dataAttributes     ( ) const;
  213.  
  214. _FIELDINFO
  215.  *columnInfo         ( ) const;
  216.  
  217. IContainerControl
  218.  *container          ( ) const;
  219.  
  220. IContainerColumn
  221.  &setContainer       ( IContainerControl* container ),
  222.  &setColumnInfo      ( _FIELDINFO*        fieldinfo ),
  223.  &invalidate         ( );
  224.  
  225. private:
  226. /*--------------------------------- Private ----------------------------------*/
  227. friend class IContainerControl;
  228. friend class ICnrControlData;
  229. friend class INativeContainerHandler;
  230. friend class IColumnSet;
  231. friend class IDetailsEditHandler;
  232.  
  233. const char*
  234.   headingTextRef ( ) const;
  235. _FIELDINFO
  236.  *pfieldinfoCl;
  237.  
  238. IContainerControl
  239.  *pcnrctlCl;
  240. IPointerHandle
  241.   ptrhCl;
  242. static Style
  243.   currentDefaultHeadingStyle,
  244.   currentDefaultDataStyle;
  245. unsigned long
  246.   ulHelpId;
  247. ICnrColumnData
  248.  *columnData;
  249.  
  250. }; // IContainerColumn
  251.  
  252. #pragma pack()
  253.  
  254.   #include <icnrcol.inl>
  255.  
  256. #endif
  257.