home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / powergui / cnr / help / devmodel.cpp next >
Encoding:
C/C++ Source or Header  |  1996-10-29  |  3.0 KB  |  118 lines

  1. //************************************************************
  2. // Container Control - Help in the Container
  3. //
  4. // Copyright (C) 1994, Law, Leong, Love, Olson, Tsuji.
  5. // Copyright (c) 1997 John Wiley & Sons, Inc. 
  6. // All Rights Reserved.
  7. //************************************************************
  8. #include <stddef.h>
  9. #include <icnrctl.hpp>
  10. #include <icnrcol.hpp>
  11. #include <iexcept.hpp>
  12. #include "devmodel.hpp"
  13.  
  14. Developer::Developer   ( const IString&      name,
  15.                          const IString&      compuServeId,
  16.                          unsigned long age)
  17.      : IContainerObject(name),
  18.        fCompuServeId(compuServeId),
  19.        fAge(age)
  20.  
  21. {}
  22.  
  23. IString Developer:: name ( ) const
  24.   return iconText();
  25. }
  26.  
  27. IString Developer:: address ( ) const
  28.   return fCompuServeId;
  29. }
  30.  
  31. IString Developer:: age ( ) const
  32.   return fAge;
  33. }
  34.  
  35.  
  36. Developer& Developer::setHelpId ( unsigned long helpId)
  37.   fHelpId = helpId;
  38.   return *this;
  39. }
  40.  
  41.  
  42. unsigned long Developer::helpId ( ) const
  43.   return fHelpId;
  44. }
  45.  
  46.  
  47.  
  48. void Developer::createAllColumnsFor ( IContainerControl&  container)
  49. {
  50.  createAndOrphanColumnFor( container, Developer::kNameColumn);
  51.  createAndOrphanColumnFor( container, Developer::kCompuServeIdColumn);
  52.  createAndOrphanColumnFor( container, Developer::kAgeColumn);
  53.  
  54.  container.setDeleteColumnsOnClose();
  55. }
  56.  
  57.  
  58. IContainerColumn* Developer::createAndOrphanColumnFor ( 
  59.                              IContainerControl& container,
  60.                              Column             columnType)
  61. {
  62.   // Setup a default Column.
  63.   IContainerColumn* newColumn = 0;
  64.   IString headingText;
  65.   Boolean editable = false;
  66.   const unsigned long invalidOffset = (unsigned long)-1;
  67.   unsigned long offset = invalidOffset;
  68.   IContainerColumn::HeadingStyle headingStyle = IContainerColumn::defaultHeadingStyle();
  69.   IContainerColumn::DataStyle dataStyle = IContainerColumn::defaultDataStyle();
  70.  
  71.   if (columnType == Developer::kNameColumn)
  72.   {
  73.     newColumn = new IContainerColumn(IContainerColumn::isIconViewText,
  74.                                      headingStyle,
  75.                                      dataStyle);
  76.     headingText = "Developer Name";
  77.     editable = true;
  78.   }
  79.   else if (columnType == Developer::kCompuServeIdColumn)
  80.   {
  81.     offset = offsetof(Developer, fCompuServeId);
  82.     headingText = "CompuServe Id";
  83.     editable = true;
  84.   }
  85.   else if (columnType == Developer::kAgeColumn)
  86.   {
  87.     offset = offsetof(Developer, fAge);
  88.     headingText = "Age";
  89.     editable = true;
  90.   }
  91.   
  92.   if (newColumn == 0 && offset < invalidOffset )
  93.     newColumn = new IContainerColumn(offset,
  94.                                      headingStyle,
  95.                                      dataStyle);
  96.  
  97.   // Insure that a new column has been created.
  98.   IASSERTSTATE(newColumn != 0)
  99.  
  100.   newColumn->setHeadingText(headingText);
  101.  
  102.   if (editable == true) 
  103.     newColumn->enableDataUpdate();
  104.  
  105.   // Add the column to the container.
  106.   container.addColumn( newColumn);
  107.  
  108.   return newColumn;
  109. }
  110.  
  111.  
  112.  
  113.