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

  1. /*******************************************************************************
  2. * FILE NAME: ilistcvw.c                                                        *
  3. *                                                                              *
  4. * DESCRIPTION:                                                                 *
  5. *   This file contains the implementation of classes/functions declared        *
  6. *   in ilistcvw.hpp.                                                           *
  7. *                                                                              *
  8. * COPYRIGHT:                                                                   *
  9. *   IBM Open Class Library                                                     *
  10. *   (C) Copyright International Business Machines Corporation 1992, 1996       *
  11. *   Licensed Material - Program-Property of IBM - All Rights Reserved.         *
  12. *   US Government Users Restricted Rights - Use, duplication, or disclosure    *
  13. *   restricted by GSA ADP Schedule Contract with IBM Corp.                     *
  14. *                                                                              *
  15. *******************************************************************************/
  16.  
  17. #include  <icollvwi.hpp>
  18. #include  <ilistcvw.hpp>
  19. #include  <icolvwd.hpp>
  20. #include  <iseq.h>
  21. #include  <ipartccl.h>
  22.  
  23.  
  24. template <class Element, class Collection>
  25.   const unsigned long
  26.     ICollectionViewListBox<Element, Collection>::noSelection = 0;
  27.  
  28.  
  29. template <class Element, class Collection>
  30.   class ICollectionViewListBoxData : public IBase {
  31.  
  32. public:
  33.  
  34.   ICollectionViewListBoxData( const IStringGenerator<Element>& stringGenerator );
  35.  
  36.  ~ICollectionViewListBoxData ( );
  37.  
  38. ICollectionViewData< Element,
  39.                      ICollectionViewListBox< Element, Collection >,
  40.                      Collection >
  41.  *fCollectionViewData;
  42.  
  43. Boolean saveSelectionState;
  44.  
  45. private:
  46. /*------------------------- Hidden Members -----------------------------------*/
  47.   ICollectionViewListBoxData
  48.              ( const ICollectionViewListBoxData< Element, Collection >& source );
  49. ICollectionViewListBoxData<Element,Collection>
  50.  &operator=  ( const ICollectionViewListBoxData< Element, Collection >& source );
  51.  
  52. };
  53.  
  54.  
  55. template <class Element, class Collection>
  56.   ICollectionViewListBoxData<Element, Collection>::
  57.     ICollectionViewListBoxData( const IStringGenerator<Element>& stringGenerator )
  58.       : saveSelectionState( false )
  59. {
  60.   fCollectionViewData = new
  61.         ICollectionViewData< Element,
  62.                              ICollectionViewListBox< Element, Collection >,
  63.                              Collection > ( stringGenerator) ;
  64. }
  65.  
  66. template <class Element, class Collection>
  67.   ICollectionViewListBoxData<Element,Collection>::
  68.    ~ICollectionViewListBoxData ( )
  69. {
  70.   delete fCollectionViewData;
  71. }
  72.  
  73.  
  74. template <class Element, class Collection>
  75.   ICollectionViewListBox<Element,Collection>::
  76.     ICollectionViewListBox ( unsigned long                    identifier,
  77.                              IWindow*                         parent,
  78.                              IWindow*                         owner ,
  79.                              const IRectangle&                initial,
  80.                              const IBaseListBox::Style&       style,
  81.                              const IStringGenerator<Element>& stringGenerator )
  82.     : IBaseListBox( identifier, parent, owner, initial, style )
  83. {
  84.   fCollectionViewListBoxData = new ICollectionViewListBoxData<Element, Collection>( stringGenerator );
  85.   fCollectionViewListBoxData->fCollectionViewData->fCollectionObserver.setViewer( this );
  86.   enableNotification();
  87. }
  88.  
  89.  
  90. template <class Element, class Collection>
  91.   ICollectionViewListBox<Element,Collection>::
  92.     ICollectionViewListBox ( unsigned long                    identifier,
  93.                              IWindow*                         parent,
  94.                              const IStringGenerator<Element>& stringGenerator )
  95.     : IBaseListBox( identifier, parent )
  96. {
  97.   fCollectionViewListBoxData = new ICollectionViewListBoxData<Element, Collection>( stringGenerator );
  98.   fCollectionViewListBoxData->fCollectionViewData->fCollectionObserver.setViewer( this );
  99.   enableNotification();
  100. }
  101.  
  102. template <class Element, class Collection>
  103.   ICollectionViewListBox<Element,Collection>::
  104.     ICollectionViewListBox( const IWindowHandle&             handle,
  105.                             const IStringGenerator<Element>& stringGenerator )
  106.     : IBaseListBox( handle )
  107. {
  108.   fCollectionViewListBoxData = new ICollectionViewListBoxData<Element, Collection>( stringGenerator );
  109.   fCollectionViewListBoxData->fCollectionViewData->fCollectionObserver.setViewer( this );
  110.   enableNotification();
  111. }
  112.  
  113. template <class Element, class Collection>
  114.   ICollectionViewListBox<Element,Collection>::
  115.    ~ICollectionViewListBox ( )
  116. {
  117.   disableNotification();
  118.  
  119.   delete fCollectionViewListBoxData;
  120. }
  121.  
  122.  
  123. template <class Element, class Collection>
  124.   ICollectionViewListBox<Element, Collection>& ICollectionViewListBox<Element, Collection>::
  125.     selectedElements ( Collection& elements )
  126. {
  127.  
  128.   IPartOrderedCollection<Element>* pSequence = items();
  129.   ICursor*                         pCursor   = pSequence->newCursor();
  130.   IBaseListBox::Cursor             cursor( *this );//defaults to selected items
  131.  
  132.   elements.removeAll( );
  133.  
  134.   forCursor( cursor )
  135.   {
  136.     pSequence->setToPosition( cursor.asIndex()+1, *pCursor );
  137.     elements.add( pSequence->elementAt( *pCursor ));
  138.   }
  139.   delete pCursor;
  140.  
  141.   return *this;
  142. }
  143.  
  144.  
  145. template <class Element, class Collection>
  146.   ICollectionViewListBox<Element, Collection>&
  147.     ICollectionViewListBox<Element, Collection>::
  148.       enableExtendedSelect( Boolean  extended )
  149. {
  150.  
  151.   if ( extended != IBaseListBox::isExtendedSelect( ) )
  152.   {
  153.     IBaseListBox::enableExtendedSelect ( extended );
  154.  
  155.     INotificationEvent  anEvent(
  156.          ICollectionViewListBox<Element, Collection>::extendedSelectChangedId,
  157.          *this );
  158.     notifyObservers( anEvent );
  159.   }
  160.   return *this;
  161. }
  162.  
  163.  
  164. template <class Element, class Collection>
  165.   INotificationId const ICollectionViewListBox<Element,Collection>::itemChangedId =
  166.     "ICollectionViewListBox::itemChangedId";
  167. template <class Element, class Collection>
  168.   INotificationId const ICollectionViewListBox<Element,Collection>::itemsId =
  169.     "ICollectionViewListBox::itemsId";
  170. template <class Element, class Collection>
  171.   INotificationId const
  172.     ICollectionViewListBox<Element, Collection>::extendedSelectChangedId =
  173.       "ICollectionViewListBox::extendedSelectChangedId";
  174.  
  175. #include <ilistcv2.c>
  176.