home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / odtlktv4.zip / ODTLKT / TOOLKIT / SAMPLES / OPENDOC / PARTS / TTAPE1 / TTAPE1.IDL < prev    next >
Text File  |  1995-12-15  |  14KB  |  369 lines

  1. //#*********************************************************************
  2. //#*
  3. //#*  File Name   :  TTAPE1.IDL
  4. //#*
  5. //#*  Description :  This is the SOM Interface Definition for the
  6. //#*                 TickerTape1Part class.  TickerTape1Part is an example
  7. //#*                 of an OpenDoc part handler.
  8. //#*
  9. //#*                 The part is a Ticker Tape, which is a rectangular
  10. //#*                 window containing text which scrolls from right to
  11. //#*                 left.
  12. //#*
  13. //#*                 The Ticker Tape has the following features:
  14. //#*
  15. //#*                 1. The text adjusts when the size of the rectangle
  16. //#*                    is adjusted, so that the height of the text
  17. //#*                    always fills the height of the rectangle.
  18. //#*                 2. The background color can be selected by selecting
  19. //#*                    "Background" from the Popup menu, which appears
  20. //#*                    when the mouse is clicked over the part with
  21. //#*                    mouse button 2.
  22. //#*                 3. A text file can be selected to replace the
  23. //#*                    displayed Ticker Tape text.  The text file is
  24. //#*                    selected by selecting "Open Text File..." from the
  25. //#*                    Popup menu.
  26. //#*                 4. Because the TickerTape1Part's parent class is a
  27. //#*                    container part handler, the TickerTape1Part part
  28. //#*                    handler allows the embedding of OpenDoc parts
  29. //#*                    within the Ticker Tape text window.
  30. //#*
  31. //#*  Notes       :  CLASS:  TickerTape1Part
  32. //#*
  33. //#*                 CLASS HIERARCHY:
  34. //#*
  35. //#*                 SOMObject
  36. //#*                   └── ODObject
  37. //#*                         └── ODRefCntObject
  38. //#*                               └── ODPersistentObject
  39. //#*                                     └── ODPart
  40. //#*                                           └── ContainerPart
  41. //#*                                                 └──  TickerTape1Part
  42. //#*
  43. //#*  Entry Points:  N/A
  44. //#*
  45. //#*  (C) COPYRIGHT International Business Machines Corp. 1995
  46. //#*  All Rights Reserved
  47. //#*  Licensed Materials - Property of IBM
  48. //#*
  49. //#*  US Government Users Restricted Rights - Use, duplication or
  50. //#*  disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  51. //#*
  52. //#*  DISCLAIMER OF WARRANTIES.  The following [enclosed] code is
  53. //#*  sample code created by IBM Corporation. This sample code is not
  54. //#*  part of any standard or IBM product and is provided to you solely
  55. //#*  for the purpose of assisting you in the development of your
  56. //#*  applications.  The code is provided "AS IS", without
  57. //#*  warranty of any kind.  IBM shall not be liable for any damages
  58. //#*  arising out of your use of the sample code, even if they have been
  59. //#*  advised of the possibility of such damages.
  60. //#*
  61. //#********************************************************************/
  62. #ifndef _TICKERTAPE1_
  63. #define _TICKERTAPE1_
  64.  
  65. //#
  66. //# Include the IDL definition for the parent class
  67. //#
  68. #ifndef _CNTNRPRT_
  69.    #include "cntnrprt.idl"
  70. #endif
  71.  
  72. interface M_TickerTape1;  //#  The M_TickerTape1 metaclass is defined below.
  73.  
  74. //======================================================================
  75. // Implementation Types
  76. //======================================================================
  77. // typedef unsigned long HMODULE;
  78. typedef somToken TextData;
  79. typedef somToken FILEDLG;
  80. typedef somToken TEXTATTRIBUTES;
  81.  
  82. interface TickerTape1Part : ContainerPart
  83. {
  84.  
  85.     //#
  86.     //#  Private method declarations and their method headers.
  87.     //#
  88.  
  89.     void CommonInitPart(in char *text,
  90.                         in char *fileName,
  91.                         in TEXTATTRIBUTES textAttr);
  92.     //#
  93.     //#  Method(s)  :  CommonInitPart
  94.     //#
  95.     //# Description :  Contains OpenDoc Part initialization which is
  96.     //#                common to both InitPart and InitPartFromStorage.
  97.     //#
  98.     //# Parameters  :  char *text      - Initial Ticker Tape text string.
  99.     //#                char *filename  - Ticker Tape text file name.
  100.     //#                TEXTATTRIBUTES textAttr - Text attributes:
  101.     //#                                        - position of first character
  102.     //#                                          of text in the window.
  103.     //#                                        - index position of first
  104.     //#                                          character to display.
  105.     //#                                        - Text background color.
  106.     //#
  107.     //#    Returns  :  VOID
  108.  
  109.     void SetOrigin(in ODFacet facet, in HPS hpsDraw);
  110.     //#
  111.     //#   Method(s) : SetOrigin
  112.     //#
  113.     //# Description : This method sets the origin in preparation for rendering
  114.     //#               the Hello part.
  115.     //#
  116.     //#  Parameters : ODFacet *facet - References the facet for this object.
  117.     //#               HPS hpsDraw    - Handle to PM presentation screen.
  118.     //#
  119.     //#     Returns : VOID
  120.  
  121.     void FileOpenDialog(in HWND hwndClient);
  122.     //#
  123.     //#  Method(s)  :  FileOpenDialog
  124.     //#
  125.     //# Description :  This method sets up the File Open Dialog Box,
  126.     //#                which is opened for the user to select a path
  127.     //#                name.  The contents of the selected file will be
  128.     //#                the new text.
  129.     //#
  130.     //# Parameters  :  HWND hwndClient - handle to the Dialog's client window.
  131.     //#
  132.     //#    Returns  :  VOID
  133.  
  134.     void DrawFrameOrThumbnailView(in ODFacet facet);
  135.     //#
  136.     //#  Method(s)  :  DrawFrameOrThumbnailView
  137.     //#
  138.     //# Description :  Draw the Ticker Tape 1 part either within its frame
  139.     //#                or as a thumbnail (ie, a thumbnail-size frame).  Draw
  140.     //#                Draw the Ticker Tape content in the provided facet.
  141.     //#                Only the visible portion of the part needs to be
  142.     //#                drawn, based on the obtained aggregate clip shape.
  143.     //#
  144.     //#                This method is invoked whenever the Ticker Tape timer
  145.     //#                window handler receives a TIMER message.
  146.     //#
  147.     //# Parameters  :  ODFacet *facet   - References the Part's facet.
  148.     //#
  149.     //#     Returns :  VOID
  150.  
  151.     void DrawIconView(in ODFacet facet, in ODULong size);
  152.     //#
  153.     //#  Method(s)  :  DrawIconView
  154.     //#
  155.     //# Description :  This method renders the Ticker Tape part in the
  156.     //#                provided facet as either a large or small icon.
  157.     //#
  158.     //# Parameters  :  ODFacet *facet   - References the Part's facet.
  159.     //#                ODULong size     - The icon size in pixels.  Size is
  160.     //#                                   actually the length of one side,
  161.     //#                                   either 32 (large), or 16 (small).
  162.     //#
  163.     //#     Returns :  VOID
  164.  
  165.     void SetFrameSize(in ODRect Rect);
  166.     //#
  167.     //#  Method(s)  :  SetFrameSize
  168.     //#
  169.     //# Description :  This method sets the frame size that the Ticker Tape
  170.     //#                text uses to scale its text characters.  The height of
  171.     //#                the text is scaled to the height of the frame.
  172.     //#
  173.     //# Parameters   :  ODRect  Rect     - The new rectangle size.
  174.     //#
  175.     //#     Returns  :  VOID
  176.  
  177.     TextData *GetTextData();
  178.     //#
  179.     //#  Method(s)  :  GetTextData
  180.     //#
  181.     //# Description :  Get the TextData text-maintenance object owned by
  182.     //#                Ticker Tape 1. This is an accessor method provided
  183.     //#                for classes subclassing from TickerTape1Part.
  184.     //#
  185.     //# Parameters   :  None.
  186.     //#
  187.     //#     Returns  :  TextData* - the TextData class object.
  188.  
  189.     ODBoolean IsNewText();
  190.     //#
  191.     //#  Method(s)  :  IsNewText
  192.     //#
  193.     //# Description :  Returns the value of the fNewTickerTape text variable.
  194.     //#                Allows a subclass to determine if the Ticker Tape text
  195.     //#                has been replaced by text from a file. This is an
  196.     //#                accessor method provided for classes subclassing from
  197.     //#                the TickerTape1Part class.
  198.     //#
  199.     //# Parameters   :  None.
  200.     //#
  201.     //#     Returns  :  ODBoolean - the value of fNewTickerTapeText.
  202.  
  203.     void LoadPopupMenu();
  204.     //#
  205.     //#  Method(s)  :  LoadPopupMenu
  206.     //#
  207.     //# Description :  Loads the Popup menu which will be displayed when the
  208.     //#                user mouse-clicks with mouse button 2 over the part.
  209.     //#
  210.     //# Parameters   :  None.
  211.     //#
  212.     //#     Returns  :  VOID
  213.  
  214.     void CheckAndAddProperties(in ODStorageUnit storageUnit);
  215.     //#
  216.     //#  Method(s)  :  CheckAndAddProperties
  217.     //#
  218.     //# Description :  If the Ticker Tape 1 Part storage unit properties
  219.     //#                are not already there, the properties and their
  220.     //#                corresponding values are added.
  221.     //#
  222.     //# Parameters   :  ODStorageUnit* storageUnit - storage unit belonging
  223.     //#                                              either to the part or to
  224.     //#                                              a drag and drop operation.
  225.     //#
  226.     //#     Returns  :  VOID
  227.  
  228.     void ExternalizeContent(in ODStorageUnit storageUnit,
  229.                             in ODBoolean isPartStorage);
  230.     //#
  231.     //#  Method(s)  :  ExternalizeContent
  232.     //#
  233.     //# Description :  Put the Ticker Tape 1 part's intrinsic data into the
  234.     //#                specified storage unit.
  235.     //#
  236.     //# Parameters   :  ODStorageUnit* storageUnit - storage unit belonging
  237.     //#                                              either to the part or to
  238.     //#                                              a drag and drop operation.
  239.     //#                 ODBoolean   isPartStorage  - Flag to determine whether
  240.     //#                                              the storage unit belongs
  241.     //#                                              to the part or to a drag
  242.     //#                                              and drop operation.
  243.     //#
  244.     //#     Returns  :  VOID
  245.  
  246.     //#
  247.     //# Implementation Statements -- These are specific to SOM and are
  248.     //#                              not part of the CORBA standard.
  249.     #ifdef __SOMIDL__
  250.     implementation
  251.     {
  252.         //# Class Modifiers
  253.         functionprefix = TickerTape1; //# The prefix for all method names.
  254.         metaclass    = M_TickerTape1; //# The metaclass for this class.
  255.         majorversion = 1;
  256.         minorversion = 0;
  257.  
  258.     //#
  259.     //# Release Order statements -- This section is used to specify the
  260.     //# order in which the SOM compiler will place the class' methods in
  261.     //# the data structures it builds to represent the class.
  262.     //#
  263.     releaseorder:
  264.             CommonInitPart,
  265.             SetOrigin,
  266.             FileOpenDialog,
  267.             DrawFrameOrThumbnailView,
  268.             DrawIconView,
  269.             SetFrameSize,
  270.             GetTextData,
  271.             IsNewText,
  272.             LoadPopupMenu,
  273.             CheckAndAddProperties,
  274.             ExternalizeContent
  275.                     ;
  276.  
  277.     //#
  278.     //# Override statments -- Identify the SOM and OpenDoc methods that
  279.     //# this class will re-implement.
  280.     //#
  281.     override:
  282.             somInit,
  283.             somUninit,
  284.  
  285.             Draw,
  286.             Externalize,
  287.             FrameShapeChanged,
  288.             HandleEvent,
  289.             FacetAdded,
  290.             FacetRemoved,
  291.             FocusAcquired,
  292.             FocusLost,
  293.             InitPart,
  294.             InitPartFromStorage,
  295.             CloneInto,
  296.             ViewTypeChanged
  297.                      ;
  298.  
  299.             //#
  300.             //# The following information will "pass thru" the SOM
  301.             //# compiler to the public XH file for this class.
  302.             //#
  303.             passthru C_xh = ""
  304.                     "class ODFrame ;"
  305.                     "class ODTransform ;"
  306.                     "class TextData;"
  307.                     ;
  308.             passthru C_xh_after = ""
  309.                     "typedef struct"
  310.                     "{"
  311.                     "    LONG lBackText;"
  312.                     "    SHORT sGap;"
  313.                     "    SHORT sScrollPos;"
  314.                     "} TEXTATTRIBUTES;"
  315.                     ;
  316.     //#
  317.     //# Define the instance data for this class.
  318.     //#
  319.         HWND        msgWnd;   //# PM timer window handle.
  320.         HMODULE     hmMod;    //# handle to the class (ttape1) module.
  321.  
  322.         TextData*   textArea; //# class which maintains the Ticker Tape text.
  323.         FILEDLG     fild;     //# The file dialog information record.
  324.  
  325.         ODPopup     fPopup;   //# The Popup menu bar.
  326.  
  327.         //# Is the Ticker Tape text new?  If so, it should be externalized.
  328.         ODBoolean   fNewTickerTapeText;
  329.         ODBoolean   fIsActivated;     //# Is the part activated?
  330.         ODBoolean   fFrameNegotiated; //# Have the dimensions of the
  331.                                       //# frame been negotiated with
  332.                                       //# the containing part?
  333.         ODTypeToken fSelectionFocus;  //# Token representing the part's
  334.                                       //# owning the focus when selected.
  335.         ODSession   fSession;         //# the part's storage unit
  336.                                       //# running session.
  337.         ODTypeToken FrameView;        //# token representing the frame view.
  338.         ODTypeToken LargeIconView;    //# token representing large icon view.
  339.         ODTypeToken SmallIconView;    //# token representing small icon view.
  340.         ODTypeToken ThumbnailView;    //# token representing thumbnail view.
  341.         ODTypeToken CurrentView;      //# current view of part (either frame,
  342.                                       //# large or small icon, or thumbnail).
  343.  
  344.     };
  345.     #endif
  346. };
  347.  
  348. //#
  349. //# For part registration.  The methods belonging to this class
  350. //# are invoked during the registration process.
  351. //#
  352. interface M_TickerTape1 : M_ODPart
  353. {
  354.     #ifdef __SOMIDL__
  355.     implementation
  356.     {
  357.         functionprefix = M_TickerTape1;
  358.         override:
  359.             clsGetODPartHandlerName,
  360.             clsGetODPartHandlerDisplayName,
  361.             clsGetODPartKinds,
  362.             clsGetOLE2ClassId,
  363.             clsGetWindowsIconFileName;
  364.     };
  365.     #endif
  366. };
  367.  
  368. #endif  // _TICKERTAPE1_
  369.