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

  1. #ifndef _ICOLOBSV_
  2.   #define _ICOLOBSV_
  3. /*******************************************************************************
  4. * FILE NAME: icolobsv.hpp                                                      *
  5. *                                                                              *
  6. * DESCRIPTION:                                                                 *
  7. *   Declaration of the classes:                                                *
  8. *     ICollectionObserver                                                      *
  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 <iobservr.hpp>
  20. #include <iseq.h>
  21. #include <ivseq.h>
  22.  
  23. #pragma implementation("icolobsv.c")
  24.  
  25. template <class Element> class IPartOrderedCollection;
  26. template <class Element, class ViewClass, class Collection> class ICollectionViewData;
  27. class   ICollectionObserverData;
  28.  
  29. #pragma pack(4)
  30.  
  31. template <class Element, class ViewClass, class Collection>
  32.   class ICollectionObserver : public IObserver {
  33.  
  34. typedef IObserver
  35.   Inherited;
  36.  
  37. public:
  38.  
  39. /*------------------------- Constructors -------------------------------------*/
  40. virtual
  41.  ~ICollectionObserver ( );
  42.  
  43. private:
  44. /*------------------------- Hidden Members -----------------------------------*/
  45.   ICollectionObserver ( );
  46.  
  47.   ICollectionObserver ( const ICollectionObserver<Element,ViewClass,Collection>& source );
  48. ICollectionObserver<Element,ViewClass,Collection>
  49.  &operator=           ( const ICollectionObserver<Element,ViewClass,Collection>& source );
  50.  
  51.  
  52. /*------------------------- View and Collection ------------------------------*/
  53. virtual ViewClass
  54.  *viewer        (  ) const;
  55.  
  56. virtual ICollectionObserver<Element,ViewClass,Collection>
  57.  &setViewer     ( ViewClass*  viewer );
  58.  
  59. virtual IPartOrderedCollection<Element>
  60.  *collection    (  ) const;
  61.  
  62. virtual ICollectionObserver<Element,ViewClass,Collection>
  63.  &setCollection ( IPartOrderedCollection<Element>* collection );
  64.  
  65.  
  66. /*------------------------- Notification Members -----------------------------*/
  67. virtual IObserver
  68.  &dispatchNotificationEvent ( const INotificationEvent& event );
  69.  
  70. class ElementObserver : public IObserver {
  71.  
  72. typedef IObserver
  73.   Inherited;
  74.  
  75. public:
  76. /*------------------------- Constructors -------------------------------------*/
  77.   ElementObserver ( ViewClass*     viewer,
  78.                     Element        element,
  79.                     unsigned long  position );
  80.   ElementObserver ( const ElementObserver&  source );
  81.  
  82. virtual
  83.  ~ElementObserver ( );
  84.  
  85. /*------------------------- Operators ----------------------------------------*/
  86. virtual ElementObserver
  87.  &operator=       ( const ElementObserver & source );
  88.  
  89.  
  90. /*------------------------- Element ------------------------------------------*/
  91. virtual Element
  92.   element      ( ) const;
  93. virtual ElementObserver
  94.  &setElement   ( const Element  element );
  95. virtual unsigned long
  96.   position     ( ) const;
  97. virtual ElementObserver
  98.  &setPosition  ( unsigned long  position );
  99.  
  100.  
  101. protected:
  102.  
  103. /*------------------------- Notification Members -----------------------------*/
  104. virtual IObserver
  105.  &dispatchNotificationEvent ( const INotificationEvent& event );
  106.  
  107. private:
  108.  
  109. ViewClass
  110.  *fInterestedParty;
  111. Element
  112.   fElement;
  113. unsigned long
  114.   fPosition;
  115.  
  116.  
  117. };  // end of ElementObserver
  118.  
  119.  
  120. ViewClass
  121.  *fReportTo;
  122. IPartOrderedCollection<Element>
  123.  *fCollection;
  124. ISequence<ElementObserver *>
  125.   fElementObservers;
  126. ISequence<ElementObserver *>::Cursor
  127.   fCursor;
  128. ICollectionObserverData
  129.  *fCollectionObserverData;
  130.  
  131. void
  132.   deleteAllElementObservers ( );
  133.  
  134. friend ICollectionViewData<Element, ViewClass, Collection>;
  135. friend ViewClass;
  136.  
  137. }; // ICollectionObserver
  138.  
  139. #if ! defined (__TEMPINC__)
  140. #include <icolobsv.c>
  141. #endif
  142.  
  143. #pragma pack()
  144.  
  145. #endif  /*  _ICOLOBSV_  */
  146.