home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cset21v1.zip / IBMCPP / IBMCLASS / IDMHNDLR.HPP < prev    next >
C/C++ Source or Header  |  1993-10-22  |  8KB  |  162 lines

  1. #ifndef _IDMHNDLR_
  2. #define _IDMHNDLR_
  3. /*******************************************************************************
  4. * FILE NAME: idmhndlr.hpp                                                      *
  5. *                                                                              *
  6. * DESCRIPTION:                                                                 *
  7. *   This file contains the declaration(s) of the class(es):                    *
  8. *     IDMHandler - Direct manipulation base handler class.                     *
  9. *                                                                              *
  10. * COPYRIGHT:                                                                   *
  11. *   Licensed Materials - Property of IBM                                       *
  12. *   (C) Copyright IBM Corporation 1992, 1993                                   *
  13. *   All Rights Reserved                                                        *
  14. *   US Government Users Restricted Rights - Use, duplication, or               *
  15. *   disclosure                                                                 *
  16. *   restricted by GSA ADP Schedule Contract with IBM Corp.                     *
  17. *                                                                              *
  18. *******************************************************************************/
  19. #ifndef _IHANDLER_
  20.   #include <ihandler.hpp>
  21. #endif
  22.  
  23. /*----------------------------------------------------------------------------*/
  24. /* Align classes on four byte boundary.                                       */
  25. /*----------------------------------------------------------------------------*/
  26. #pragma pack(4)
  27.  
  28. class IDMSourceHandler;
  29. class IDMTargetHandler;
  30. class IDMRenderer;
  31. class IDMRendererSeq;
  32. class IWindow;
  33. class IEntryField;
  34. class IMultiLineEdit;
  35. class IContainerControl;
  36.  
  37. class IDMHandler : public IHandler {
  38. typedef IHandler
  39.   Inherited;
  40. /*******************************************************************************
  41. * The IDMHandler class is the common base class, or abstract class, for the    *
  42. * direct manipulation source window handler class, IDMSourceHandler, and the   *
  43. * target window handler class, IDMTargetHandler.                               *
  44. *                                                                              *
  45. * This base class provides static functions to enable drag/drop from           *
  46. * application windows and controls.                                            *
  47. *******************************************************************************/
  48. public:
  49. /*----------------------- Direct Manipulation Enabling -------------------------
  50. | These static member functions provide a simple means of enabling drag/drop   |
  51. | for application windows and controls:                                        |
  52. |   enableDragFrom    - Attaches default source handler to argument window.    |
  53. |   enableDropOn      - Attaches default target handler to argument window.    |
  54. |   enableDragDropFor - Attaches default source and target handlers.           |
  55. ------------------------------------------------------------------------------*/
  56. static void
  57.   enableDragFrom ( IWindow           *window    ),
  58.   enableDragFrom ( IEntryField       *ef        ),
  59.   enableDragFrom ( IMultiLineEdit    *mle       ),
  60.   enableDragFrom ( IContainerControl *container ),
  61.  
  62.   enableDropOn ( IWindow           *window    ),
  63.   enableDropOn ( IEntryField       *ef        ),
  64.   enableDropOn ( IMultiLineEdit    *mle       ),
  65.   enableDropOn ( IContainerControl *container ),
  66.  
  67.   enableDragDropFor ( IWindow           *window    ),
  68.   enableDragDropFor ( IEntryField       *ef        ),
  69.   enableDragDropFor ( IMultiLineEdit    *mle       ),
  70.   enableDragDropFor ( IContainerControl *container );
  71.  
  72. /*----------------------------- Default Handlers -------------------------------
  73. | These static member functions get/set the default source/target handlers     |
  74. | used by the various enabling functions (see above):                          |
  75. |   defaultSourceHandler       - Returns the default source handler.           |
  76. |   defaultTargetHandler       - Returns the default target handler.           |
  77. |   setDefaultSourceHandler    - Sets the default source handler.              |
  78. |   setDefaultTargetHandler    - Sets the default target handler.              |
  79. ------------------------------------------------------------------------------*/
  80. static IDMSourceHandler
  81.   &defaultSourceHandler ( );
  82.  
  83. static IDMTargetHandler
  84.   &defaultTargetHandler ( );
  85.  
  86. static void
  87.   setDefaultSourceHandler    ( IDMSourceHandler    &source ),
  88.   setDefaultTargetHandler    ( IDMTargetHandler    &target );
  89.  
  90.  
  91. protected:
  92. /*-------------------------- Constructor/Destructor ----------------------------
  93. | This class's constructor is protected since the class is really an           |
  94. | abstract base class.  The default contructor requires no arguments.          |
  95. ------------------------------------------------------------------------------*/
  96.   IDMHandler ( );
  97.  
  98. virtual
  99.   ~IDMHandler ( );
  100.  
  101. /*------------------------------ Implementation --------------------------------
  102. | These static functions set a default item provider for the argument          |
  103. | window:                                                                      |
  104. |   setItemProvider - Set default item provider.                               |
  105. ------------------------------------------------------------------------------*/
  106. static void
  107.   setItemProvider ( IEntryField *ef ),
  108.   setItemProvider ( IMultiLineEdit *mle ),
  109.   setItemProvider ( IContainerControl *container );
  110.  
  111. /*-------------------------------- Rendering -----------------------------------
  112. | The following functions provide a means of accessing the base IDMRenderer    |
  113. | objects involved in the direct manipulation operation described by instances |
  114. | of this class.  These objects will be used to handle the rendering of        |
  115. | dragged objects that are compatible with the supported remderering           |
  116. | mechanisms and formats:                                                      |
  117. |   numberOfRenderers - Returns the number of renderers                        |
  118. |   renderer          - Returns the renderer with the given position           |
  119. |   replaceRenderer   - Replaces a given renderer with another                 |
  120. |   addRenderer       - Adds another renderer to this operation                |
  121. |   removeRenderer    - Removes a renderer from this operation                 |
  122. |   setRenderer       - Sets the renderer for this operation.  Removes any     |
  123. |                       existing renderers.                                    |
  124. |                                                                              |
  125. | Note: Renderers are maintained positionally, which is 1-based.               |
  126. ------------------------------------------------------------------------------*/
  127. virtual unsigned
  128.   numberOfRenderers  ( );
  129.  
  130. virtual IDMRenderer
  131.  *renderer           ( unsigned          position );
  132.  
  133. virtual IDMHandler
  134.  &replaceRenderer    ( unsigned          position,
  135.                        const IDMRenderer &replacement ),
  136.  &addRenderer        ( const IDMRenderer &newRenderer ),
  137.  &removeRenderer     ( unsigned          position ),
  138.  &removeRenderer     ( const IDMRenderer &rendererToRemove ),
  139.  &setRenderer        ( const IDMRenderer &newRenderer );
  140.  
  141.  
  142. private: /*------------------------ PRIVATE ----------------------------------*/
  143. static IDMSourceHandler
  144.  *pSource;
  145. static IDMTargetHandler
  146.  *pTarget;
  147.  
  148. IDMRendererSeq
  149.  *pRendererSeqCl;
  150.  
  151. IDMRendererSeq
  152.  *rendererCollection ();
  153.  
  154. }; // class IDMHandler
  155.  
  156. /*----------------------------------------------------------------------------*/
  157. /* Resume compiler default packing.                                           */
  158. /*----------------------------------------------------------------------------*/
  159. #pragma pack()
  160.  
  161. #endif // _IDMHNDLR_
  162.