home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / powergui / cnr / cdate / developr.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-10-29  |  4.2 KB  |  134 lines

  1. //************************************************************
  2. // Container Control - Dates and Times as CDATE/CTIME         
  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 <iframe.hpp>
  9. #include <ictlevt.hpp>
  10. #include <iexcept.hpp>
  11. #include <stddef.h>
  12. #include "developr.h"
  13. #include "developr.hpp"
  14.  
  15. DeveloperList :: DeveloperList ( const char* title)
  16.                    : IFrameWindow (title, DEVELOPER_WINDOW),
  17.                      cnrctl( DEVELOPER_CONTAINER, this, this)
  18.  
  19. {
  20.  
  21. // Put the container in the client area.
  22. setClient(&container());
  23.  
  24. Developer::createAllColumnsFor(cnrctl);
  25.  
  26. // Create and add the objects to the container.
  27. Developer* developer;
  28. CDATE bDate(27,6,1953);
  29. CTIME qTime(3);
  30.  
  31. developer = new Developer("Joe Programmer",
  32.                           ID_DEVELOPER,
  33.                           "12345,6789",
  34.                           "38");
  35. container().addObject(developer);
  36. container().enableDataUpdate(developer);
  37.  
  38. container().setDeleteColumnsOnClose();
  39. container().setDeleteObjectsOnClose();
  40. container().showSplitBar();
  41. }
  42.  
  43. IContainerControl& DeveloperList :: container( ) { 
  44.   return cnrctl;
  45. }
  46.  
  47. void Developer::createAllColumnsFor ( IContainerControl&  container)
  48. {
  49.  IContainerColumn* newColumn;
  50.  
  51.  newColumn = createAndOrphanColumnFor( container, Developer::kIconColumn);
  52.  newColumn = createAndOrphanColumnFor( container, Developer::kNameColumn);
  53.  container.setDetailsViewSplit(newColumn, 125);
  54.  newColumn = createAndOrphanColumnFor( container, Developer::kCompuServeIdColumn);
  55.  newColumn = createAndOrphanColumnFor( container, Developer::kAgeColumn);
  56.  newColumn = createAndOrphanColumnFor( container, Developer::kBirthDateColumn);
  57.  newColumn = createAndOrphanColumnFor( container, Developer::kQuittingTimeColumn);
  58.  
  59.  container.setDeleteColumnsOnClose();
  60. }
  61.  
  62.  
  63. IContainerColumn* Developer::createAndOrphanColumnFor ( 
  64.                              IContainerControl& container,
  65.                              Column             columnType)
  66. {
  67.   // Set up a default column.
  68.   IContainerColumn* newColumn = 0;
  69.   IString headingText;
  70.   Boolean editable = false;
  71.   const unsigned long invalidOffset = (unsigned long)-1;
  72.   unsigned long offset = invalidOffset;
  73.   IContainerColumn::HeadingStyle headingStyle = IContainerColumn::defaultHeadingStyle();
  74.   IContainerColumn::DataStyle dataStyle = IContainerColumn::defaultDataStyle();
  75.  
  76.   if (columnType == Developer::kNameColumn)
  77.   {
  78.     newColumn = new IContainerColumn(IContainerColumn::isIconViewText,
  79.                                      headingStyle,
  80.                                      dataStyle);
  81.     headingText = "Name";
  82.     editable = true;
  83.   }
  84.   else if (columnType == Developer::kIconColumn)
  85.   {
  86.     newColumn = new IContainerColumn(IContainerColumn::isIcon,
  87.                                      headingStyle,
  88.                                      dataStyle);
  89.     headingText = "Role";
  90.   }
  91.   else if (columnType == Developer::kCompuServeIdColumn)
  92.   {
  93.     offset = offsetof(Developer, fCompuServeId);
  94.     headingText = "CompuServe Id";
  95.     editable = true;
  96.   }
  97.   else if (columnType == Developer::kAgeColumn)
  98.   {
  99.     offset = offsetof(Developer, fAge);
  100.     headingText = "Age";
  101.     editable = true;
  102.   }
  103.   else if (columnType == Developer::kBirthDateColumn)
  104.   {
  105.     offset = offsetof(Developer, fBirthDate);
  106.     dataStyle = IContainerColumn::date;
  107.     headingText = "Birth Date";
  108.   }
  109.   else if (columnType == Developer::kQuittingTimeColumn)
  110.   {
  111.     offset = offsetof(Developer, fQuittingTime);
  112.     dataStyle = IContainerColumn::time;
  113.     headingText = "Quitting Time";
  114.   }
  115.   
  116.   if (newColumn == 0 && offset < invalidOffset )
  117.     newColumn = new IContainerColumn(offset,
  118.                                      headingStyle,
  119.                                      dataStyle);
  120.  
  121.   // Ensure that a new column has been created.
  122.   IASSERTSTATE(newColumn != 0)
  123.  
  124.   newColumn->setHeadingText(headingText);
  125.  
  126.   if (editable == true) 
  127.     newColumn->enableDataUpdate();
  128.  
  129.   // Add the column to the container.
  130.   container.addColumn( newColumn);
  131.  
  132.   return newColumn;
  133. }
  134.