home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ibmodf.zip / SIMPLPRT.ZIP / SIMPLPRT.CPP < prev    next >
Text File  |  1995-06-12  |  52KB  |  1,378 lines

  1. /* 
  2.  *      File:           simplprt.cpp //+(rlt 3-8-95)
  3.  *
  4.  *   Contains:  IDL description of Container Part
  5.  *
  6.  *   Written by:        Jason Crawford
  7.  *
  8.  *
  9.  *   Change History (most recent first):
  10.  *      
  11.  *       <3>      3-8-95         rlt    Fixed clips based on Content transformation
  12.  *       <2>      3-8-95         rlt    Changed Default color
  13.  *       <1>      3-8-95         rlt    Added History preamble
  14.  *
  15.  *
  16.  */
  17. /*
  18.  *  This file was generated by the SOM Compiler and Emitter Framework.
  19.  *  Generated using:
  20.  *      SOM Emitter emitxtm: 2.38
  21.  */
  22.  
  23. #ifndef SOM_Module_simplprt_Source
  24. #define SOM_Module_simplprt_Source
  25. #endif
  26. #define SimplePart_Class_Source
  27. #define VARIABLE_MACROS
  28.  
  29. #define INCL_GPICONTROL
  30. #define INCL_GPIPRIMITIVES
  31. #define INCL_GPIREGIONS
  32. #define INCL_GPITRANSFORMS
  33. #define INCL_WININPUT
  34. #define INCL_WINSTDDRAG
  35.  
  36. #define INCL_ODARBITRATOR
  37. #define INCL_ODCANVAS
  38. #define INCL_ODDRAGANDDROP
  39. #define INCL_ODDRAFT
  40. #define INCL_ODERRORS
  41. #define INCL_ODFACET
  42. #define INCL_ODFOCUSSET
  43. #define INCL_ODFRAME
  44. #define INCL_ODMENUBAR
  45. #define INCL_ODSHAPE
  46. //#define INCL_ODSEMANTICINTERFACE
  47. #define INCL_ODSESSION
  48. #define INCL_ODSTORAGEUNIT
  49. #define INCL_ODSTORAGEUNITVIEW
  50. #define INCL_ODTRANSFORM
  51. #define INCL_ODUNDO
  52. #define INCL_ODWINDOW
  53. #define INCL_ODWINDOWSTATE
  54. #include <os2.h>
  55.  
  56.  
  57.  
  58. #include "SimplPrt.xih"
  59. #include "PartInfo.hpp"     //mcs aj - we have made PartInfo public
  60.  
  61. #include "print.h"
  62. #include "common.hpp"
  63. #include <string.h>
  64.  
  65. #define UNDONEEDSFIXINMAYBE
  66.  
  67. #define YGRID 32
  68. #define XGRID 32
  69.  
  70. static const ODPropertyName  kPropFrameInfo = "SimplePart:Property:FrameInfo";
  71. static const ODPropertyName  kPropMouseDownOffset = "SimplePart:Property:MouseDownOffset";
  72.  
  73. // todo: The following entry almost certainly needs to be placed in a public location
  74. static const ODValueType    kOS2POINTL = "Bento:OS2:IBM:POINTL";
  75.  
  76. const ODType   kSimplePartPresNormal  = "SimplePart:Presentation:Normal";
  77. const ODType   kSimplePartPresPalette = "SimplePart:Presentation:Palette";
  78. const ODType   kSimplePartValueType   = "SimplePart Color";
  79. #define kKindTestSimple "SimplePart:simplprt"
  80.  
  81.  
  82. const ODCommandID cODColor = 2000;
  83. const ODCommandID cODGray = 2001;
  84. const ODCommandID cODRed = 2002;
  85. const ODCommandID cODGreen = 2003;
  86. const ODCommandID cODYellow = 2004;
  87. const ODCommandID cODBlue = 2005;
  88. const ODCommandID cODMagenta = 2006;
  89. const ODCommandID cODCyan = 2007;
  90. const ODCommandID cODWhite = 2008;
  91. const ODCommandID cODOtherColor = 2009;
  92.  
  93.  
  94.  
  95. //#if 1 mcs aj
  96. #if 0
  97.    // we may want to make PartInfoRec public and declare it in its
  98.    // own IDL file.   I'll wait until after the port before attempting
  99.    // that. (jlc 94-8)
  100.    class PartInfoRec
  101.    {
  102.    public:
  103.       PartInfoRec() { fIsActive = kODFalse; fNeedsActivating = kODFalse; }
  104.       virtual ~PartInfoRec() { }
  105.       RGBColor bgColor;
  106.       HRGN   bgClipRegion;
  107.       ODBoolean  fIsActive;  // Does this frame have its focus set?
  108.       ODBoolean  fNeedsActivating; // should this be activated when its window is activated?
  109.    };
  110. #endif
  111.  
  112. // SetBGColorRec is used for Undo/Redo.
  113. struct SetBGColorRec
  114. {
  115.   SetBGColorRec(RGBColor oldColor, RGBColor newColor, ODFrame* frame)
  116.           {_fOldColor = oldColor; _fNewColor = newColor;
  117.             _fFrame = frame;}
  118.   RGBColor   _fOldColor;
  119.   RGBColor   _fNewColor;
  120.   ODFrame*  _fFrame;
  121. };
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128. SOM_Scope ODSemanticInterface*  SOMLINK SimplePartGetSemanticInterface(SimplePart *somSelf,
  129.                                                                         Environment *ev)
  130. {
  131.     SimplePartData *somThis = SimplePartGetData(somSelf);
  132.     SimplePartMethodDebug("SimplePart","SimplePartGetSemanticInterface");
  133.  
  134.     return (ODSemanticInterface *) 0;
  135. }
  136.  
  137. SOM_Scope void  SOMLINK SimplePartCommonInitSimplePart(SimplePart *somSelf,
  138.                                                         Environment *ev)
  139. {
  140.     SimplePartData *somThis = SimplePartGetData(somSelf);
  141.     SimplePartMethodDebug("SimplePart","SimplePartCommonInitSimplePart");
  142.  
  143.     static int defcolor = 4; //+ (rlt - 3-8-95)
  144.  
  145.    _fDefaultColor = (defcolor++) % 8;  // pick semi random color
  146.    _fSession = somSelf->GetStorageUnit(ev)->GetSession(ev);
  147.    _fSelectionFocus = _fSession->Tokenize(ev, kODSelectionFocus);
  148.    _fMenuFocus = _fSession->Tokenize(ev, kODMenuFocus);
  149.    _fKeyFocus = _fSession->Tokenize(ev, kODKeyFocus);
  150.  
  151.    _fFocusSet = new ODFocusSet();
  152.    _fFocusSet->InitFocusSet(ev);
  153.    _fFocusSet->Add(ev, _fSelectionFocus);
  154.    _fFocusSet->Add(ev, _fMenuFocus);
  155.    _fFocusSet->Add(ev, _fKeyFocus);
  156.  
  157. }
  158.  
  159. SOM_Scope ODBoolean  SOMLINK SimplePartHandleMouseDown(SimplePart *somSelf,
  160.                                                         Environment *ev,
  161.                                                        ODFacet* facet,
  162.                                                        ODPoint* where,
  163.                                                        ODEventData* event)
  164. {
  165.     SimplePartData *somThis = SimplePartGetData(somSelf);
  166.     SimplePartMethodDebug("SimplePart","SimplePartHandleMouseDown");
  167.  
  168.     somSelf->Activate(ev, facet);
  169.  
  170.     return kODTrue;
  171. }
  172.  
  173. SOM_Scope void  SOMLINK SimplePartMoveResize(SimplePart *somSelf,
  174.                                               Environment *ev,
  175.                                              ODFacet* facet,
  176.                                              Proxy* selection,
  177.                                              ODSLong fs)
  178. {
  179.     SimplePartData *somThis = SimplePartGetData(somSelf);
  180.     SimplePartMethodDebug("SimplePart","SimplePartMoveResize");
  181.  
  182.  
  183. }
  184.  
  185. SOM_Scope ODBoolean  SOMLINK SimplePartHandleMouseDownDrag(SimplePart *somSelf,
  186.                                                             Environment *ev,
  187.                                                            ODFacet* facet,
  188.                                                            Proxy* selection,
  189.                                                            ODEventData* event)
  190. {
  191.     SimplePartData *somThis = SimplePartGetData(somSelf);
  192.     SimplePartMethodDebug("SimplePart","SimplePartHandleMouseDownDrag");
  193.  
  194.     return kODFalse;
  195. }
  196.  
  197. SOM_Scope ODBoolean  SOMLINK SimplePartHandleMouseDownEdgeResize(SimplePart *somSelf,
  198.                                                                   Environment *ev,
  199.                                                                  ODFacet* facet,
  200.                                                                  Proxy* selection,
  201.                                                                  POINTL* mouse)
  202. {
  203.     SimplePartData *somThis = SimplePartGetData(somSelf);
  204.     SimplePartMethodDebug("SimplePart","SimplePartHandleMouseDownEdgeResize");
  205.  
  206.     return kODFalse;
  207. }
  208.  
  209. SOM_Scope ODBoolean  SOMLINK SimplePartHandleMouseDownCornerResize(SimplePart *somSelf,
  210.                                                                     Environment *ev,
  211.                                                                    ODFacet* facet,
  212.                                                                    Proxy* selection,
  213.                                                                    POINTL* mouse)
  214. {
  215.     SimplePartData *somThis = SimplePartGetData(somSelf);
  216.     SimplePartMethodDebug("SimplePart","SimplePartHandleMouseDownCornerResize");
  217.  
  218.     return kODFalse;
  219. }
  220.  
  221. SOM_Scope ODBoolean  SOMLINK SimplePartHandleKeyDown(SimplePart *somSelf,
  222.                                                       Environment *ev,
  223.                                                      ODFrame* focusFrame,
  224.                                                      ODEventData* event)
  225. {
  226.     SimplePartData *somThis = SimplePartGetData(somSelf);
  227.     SimplePartMethodDebug("SimplePart","SimplePartHandleKeyDown");
  228.  
  229.     DosBeep(200,30);
  230.     return kODTrue;
  231. }
  232.  
  233. SOM_Scope ODBoolean  SOMLINK SimplePartHandleMenuEvent(SimplePart *somSelf,
  234.                                                         Environment *ev,
  235.                                                        ODFrame* focusFrame,
  236.                                                        ODEventData* event)
  237. {
  238.     SimplePartData *somThis = SimplePartGetData(somSelf);
  239.     SimplePartMethodDebug("SimplePart","SimplePartHandleMenuEvent");
  240.  
  241.     return kODTrue;
  242. }
  243.  
  244. SOM_Scope ODBoolean  SOMLINK SimplePartHandleMouseMove(SimplePart *somSelf,
  245.                                                         Environment *ev,
  246.                                                        ODFacet* facet,
  247.                                                        ODPoint* where,
  248.                                                        ODEventData* event)
  249. {
  250.     SimplePartData *somThis = SimplePartGetData(somSelf);
  251.     SimplePartMethodDebug("SimplePart","SimplePartHandleMouseMove");
  252.  
  253.     return kODTrue;
  254. }
  255.  
  256.  
  257. SOM_Scope void  SOMLINK SimplePartActivateFrame(SimplePart *somSelf,
  258.                                                  Environment *ev,
  259.                                                 ODFrame* frame)
  260. {
  261.     SimplePartData *somThis = SimplePartGetData(somSelf);
  262.     SimplePartMethodDebug("SimplePart","SimplePartActivateFrame");
  263.  
  264.     if (frame != kODNULL) {
  265.  
  266.     ODBoolean succeeded = false;
  267.  
  268.     succeeded = _fSession->GetArbitrator(ev)->RequestFocusSet(ev, _fFocusSet,frame);
  269.  
  270.     if (succeeded)
  271.     {
  272.        somSelf->FocusAcquired(ev, _fSelectionFocus, frame);
  273.        somSelf->FocusAcquired(ev, _fMenuFocus, frame);
  274.        somSelf->FocusAcquired(ev, _fKeyFocus, frame);
  275.     }
  276.   }
  277.  
  278. }
  279.  
  280. SOM_Scope void  SOMLINK SimplePartDeActivateFrame(SimplePart *somSelf,
  281.                                                    Environment *ev,
  282.                                                   ODFrame* frame)
  283. {
  284.     SimplePartData *somThis = SimplePartGetData(somSelf);
  285.     SimplePartMethodDebug("SimplePart","SimplePartDeActivateFrame");
  286.  
  287.     if (frame != kODNULL) {
  288.        _fSession->GetArbitrator(ev)->RelinquishFocusSet(ev, _fFocusSet,frame);
  289.        somSelf->FocusLost(ev, _fSelectionFocus, frame);
  290.        somSelf->FocusLost(ev, _fMenuFocus, frame);
  291.        somSelf->FocusLost(ev, _fKeyFocus, frame);
  292.     }
  293. }
  294.  
  295. SOM_Scope void  SOMLINK SimplePartActivatingWindow(SimplePart *somSelf,
  296.                                                     Environment *ev,
  297.                                                    ODFrame* frame)
  298. {
  299.     SimplePartData *somThis = SimplePartGetData(somSelf);
  300.     SimplePartMethodDebug("SimplePart","SimplePartActivatingWindow");
  301.     PartInfoRec* pInfo = (PartInfoRec*) frame->GetPartInfo(ev);
  302.     if (pInfo->fNeedsActivating)
  303.     {
  304.        somSelf->ActivateFrame(ev, frame);
  305.        pInfo->fNeedsActivating = kODFalse;
  306.     }
  307. }
  308.  
  309. SOM_Scope void  SOMLINK SimplePartDeActivatingWindow(SimplePart *somSelf,
  310.                                                       Environment *ev,
  311.                                                      ODFrame* frame)
  312. {
  313.     SimplePartData *somThis = SimplePartGetData(somSelf);
  314.     SimplePartMethodDebug("SimplePart","SimplePartDeActivatingWindow");
  315.     PartInfoRec* pInfo = (PartInfoRec*) frame->GetPartInfo(ev);
  316.     if (frame == _fSession->GetArbitrator(ev)->GetFocusOwner(ev, _fSelectionFocus))
  317.     {
  318.        pInfo->fNeedsActivating = kODTrue;
  319.        //somSelf->DeActivateFrame(ev, frame);
  320.     }
  321.     else
  322.        pInfo->fNeedsActivating = kODFalse;
  323.  
  324. }
  325.  
  326.  
  327. SOM_Scope void  SOMLINK SimplePartUserSetBGColor(SimplePart *somSelf,
  328.                                                   Environment *ev,
  329.                                                  ODFrame* frame,
  330.                                                  RGBColor whichColor)
  331. {
  332.     SimplePartData *somThis = SimplePartGetData(somSelf);
  333.     SimplePartMethodDebug("SimplePart","SimplePartUserSetBGColor");
  334. #ifdef NOT_YET
  335.     PartInfoRec* pInfo = (PartInfoRec *) frame->GetPartInfo(ev);
  336.     if (!pInfo)
  337.     {
  338.       pInfo = new PartInfoRec;
  339.       frame->SetPartInfo(ev, (ODInfoType) pInfo);
  340.     }
  341.     if (whichColor != pInfo->bgColor)
  342.     {
  343.       somSelf->SetBGColor(ev, frame, whichColor);
  344.     }
  345. #endif
  346. }
  347.  
  348. SOM_Scope void  SOMLINK SimplePartSetBGColor(SimplePart *somSelf,
  349.                                               Environment *ev,
  350.                                              ODFrame* aFrame,
  351.                                              ODUShort whichColor)
  352. {
  353.     SimplePartData *somThis = SimplePartGetData(somSelf);
  354.     SimplePartMethodDebug("SimplePart","SimplePartSetBGColor");
  355. #ifdef NOT_YET
  356.     PartInfoRec* pInfo = (PartInfoRec *) aFrame->GetPartInfo(ev);
  357.     if (!pInfo)
  358.     {
  359.       pInfo = new PartInfoRec;
  360.       aFrame->SetPartInfo(ev, (ODInfoType) pInfo);
  361.     }
  362.  
  363.    RGBColor newColor = pInfo->bgColor;
  364.  
  365.    switch (whichColor)
  366.    {
  367.       break;
  368.       case  cODGray:    newColor = 7 % 8;     break;
  369.       case  cODRed:     newColor = 6 % 8;     break;
  370.       case  cODGreen:   newColor = 5 % 8;     break;
  371.       case  cODYellow:  newColor = 4 % 8;     break;
  372.       case  cODBlue:    newColor = 3 % 8;     break;
  373.       case  cODMagenta: newColor = 2 % 8;     break;
  374.       case  cODCyan:    newColor = 1 % 8;     break;
  375.       case  cODWhite:   newColor = 0 % 8;     break;
  376.       default: break;
  377.    }
  378.    somSelf->UserSetBGColor(ev, aFrame,newColor);
  379. #endif
  380. }
  381.  
  382. SOM_Scope void  SOMLINK SimplePartSetGrafPortOrigin(SimplePart *somSelf,
  383.                                                      Environment *ev,
  384.                                                     ODFacet* facet)
  385. {
  386.     SimplePartData *somThis = SimplePartGetData(somSelf);
  387.     SimplePartMethodDebug("SimplePart","SimplePartSetGrafPortOrigin");
  388.  
  389.     ODTransform* localToGlobal = facet->GetContentTransform(ev);
  390.     HPS hps = facet->GetCanvas(ev)->GetPlatformCanvas(ev);
  391.     MATRIXLF mtx;
  392.     facet->GetContentTransform(ev)->GetMATRIXLF(ev, &mtx);
  393.     GpiSetModelTransformMatrix(hps, 9, &mtx, TRANSFORM_REPLACE);
  394.     facet->GetCanvas(ev)->ReleasePlatformCanvas(ev);
  395. }
  396.  
  397. SOM_Scope ODWindow*  SOMLINK SimplePartCreateWindow(SimplePart *somSelf,
  398.                                                      Environment *ev,
  399.                                                     ODFrame* sourceFrame)
  400. {
  401.     SimplePartData *somThis = SimplePartGetData(somSelf);
  402.     SimplePartMethodDebug("SimplePart","SimplePartCreateWindow");
  403.  
  404.     Rect windRect;
  405.     ODPlatformWindow platformWindow = kODNULL;
  406.     ODWindow* window = kODNULL;
  407.  
  408.     platformWindow = _fSession->CreatePlatformWindow(ev);
  409.     window =  _fSession->GetWindowState(ev)->CreateWindow(ev, platformWindow,
  410.                                          (sourceFrame==kODNULL),  // Keeps draft open
  411.                                          kODTrue,  // Is resizable
  412.                                          kODFalse, // Is floating
  413.                                          kODTrue,  // should save
  414.                                       somSelf, kODNullTypeToken, kODNullTypeToken, sourceFrame);
  415.     return window;
  416. }
  417.  
  418. SOM_Scope RGBColor  SOMLINK SimplePartGetDefaultColor(SimplePart *somSelf, 
  419.                                                        Environment *ev)
  420. {
  421.     SimplePartData *somThis = SimplePartGetData(somSelf);
  422.     SimplePartMethodDebug("SimplePart","SimplePartGetDefaultColor");
  423.  
  424.     return ( _fDefaultColor );
  425. }
  426.  
  427. SOM_Scope void  SOMLINK SimplePartSetDefaultColor(SimplePart *somSelf, 
  428.                                                    Environment *ev, 
  429.                                                   RGBColor color)
  430. {
  431.     SimplePartData *somThis = SimplePartGetData(somSelf);
  432.     SimplePartMethodDebug("SimplePart","SimplePartSetDefaultColor");
  433.  
  434.     _fDefaultColor = color;
  435. }
  436.  
  437. SOM_Scope void  SOMLINK SimplePartsomInit(SimplePart *somSelf)
  438. {
  439.     SimplePartData *somThis = SimplePartGetData(somSelf);
  440.     SimplePartMethodDebug("SimplePart","SimplePartsomInit");
  441.  
  442.     SimplePart_parent_ODPart_somInit(somSelf);
  443.  
  444.     _fWindowID = 0;
  445.  
  446.     _fFrameGroupIDCounter = 1;
  447.  
  448.     _fContents = kODNULL;
  449.  
  450.     _fFocusSet = kODNULL;
  451.  
  452.     _fSemtIntf = kODNULL;
  453.  
  454.     _fSession = kODNULL;
  455.  
  456.     _fTestDrawSU = kODNULL;
  457. }
  458.  
  459. SOM_Scope void  SOMLINK SimplePartsomUninit(SimplePart *somSelf)
  460. {
  461.     SimplePartData *somThis = SimplePartGetData(somSelf);
  462.     SimplePartMethodDebug("SimplePart","SimplePartsomUninit");
  463.  
  464.  
  465.     #define SEMANTIC_INTERFACES_NOT_DONE
  466.     #ifndef SEMANTIC_INTERFACES_NOT_DONE
  467.        if (_fSemtIntf != kODNULL)
  468.            delete _fSemtIntf;
  469.     #endif
  470.  
  471.     Environment * ev = somGetGlobalEnvironment();
  472.     ODReleaseObject(ev,_fTestDrawSU);
  473.     SimplePart_parent_ODPart_somUninit(somSelf);
  474. }
  475.  
  476. SOM_Scope void  SOMLINK SimplePartFulfillPromise(SimplePart *somSelf,
  477.                                                   Environment *ev,
  478.                                                  ODStorageUnitView* promiseSUView)
  479. {
  480.     SimplePartData *somThis = SimplePartGetData(somSelf);
  481.     SimplePartMethodDebug("SimplePart","SimplePartFulfillPromise");
  482.  
  483. }
  484.  
  485. SOM_Scope void  SOMLINK SimplePartDropCompleted(SimplePart *somSelf,
  486.                                                  Environment *ev,
  487.                                                 ODPart* destPart,
  488.                                                 ODDropResult dropResult)
  489. {
  490.     SimplePartData *somThis = SimplePartGetData(somSelf);
  491.     SimplePartMethodDebug("SimplePart","SimplePartDropCompleted");
  492.  
  493. }
  494.  
  495. SOM_Scope MRESULT  SOMLINK SimplePartDragEnter(SimplePart *somSelf,
  496.                                                 Environment *ev,
  497.                                                ODDragItemIterator* dragInfo,
  498.                                                ODFacet* facet,
  499.                                                ODPoint* where)
  500. {
  501.     SimplePartData *somThis = SimplePartGetData(somSelf);
  502.     SimplePartMethodDebug("SimplePart","SimplePartDragEnter");
  503.  
  504.  
  505.     return MRFROM2SHORT (DOR_NEVERDROP, DO_UNKNOWN);
  506.  
  507. }
  508.  
  509. SOM_Scope MRESULT  SOMLINK SimplePartDragWithin(SimplePart *somSelf,
  510.                                                  Environment *ev,
  511.                                                 ODDragItemIterator* dragInfo,
  512.                                                 ODFacet* facet,
  513.                                                 ODPoint* where)
  514. {
  515.     SimplePartData *somThis = SimplePartGetData(somSelf);
  516.     SimplePartMethodDebug("SimplePart","SimplePartDragWithin");
  517.  
  518.     return MRFROM2SHORT (DOR_NEVERDROP, DO_UNKNOWN);
  519. }
  520.  
  521. SOM_Scope void  SOMLINK SimplePartDragLeave(SimplePart *somSelf,
  522.                                              Environment *ev,
  523.                                             ODFacet* facet, ODPoint* where)
  524. {
  525.     SimplePartData *somThis = SimplePartGetData(somSelf);
  526.     SimplePartMethodDebug("SimplePart","SimplePartDragLeave");
  527.  
  528. }
  529.  
  530. SOM_Scope ODDropResult  SOMLINK SimplePartDrop(SimplePart *somSelf,
  531.                                                 Environment *ev,
  532.                                                ODDragItemIterator* dropInfo,
  533.                                                ODFacet* facet,
  534.                                                ODPoint* where)
  535. {
  536.     SimplePartData *somThis = SimplePartGetData(somSelf);
  537.     SimplePartMethodDebug("SimplePart","SimplePartDrop");
  538.  
  539.     return kODDropFail;
  540.  
  541.  
  542. }
  543.  
  544. SOM_Scope void  SOMLINK SimplePartContainingPartPropertiesChanged(SimplePart *somSelf,
  545.                                                                    Environment *ev,
  546.                                                                   ODFrame* frame,
  547.                                                                   ODStorageUnit* propertyUnit)
  548. {
  549.     SimplePartData *somThis = SimplePartGetData(somSelf);
  550.     SimplePartMethodDebug("SimplePart","SimplePartContainingPartPropertiesChanged");
  551.  
  552.  
  553. }
  554.  
  555. SOM_Scope ODStorageUnit*  SOMLINK SimplePartGetContainingPartProperties(SimplePart *somSelf,
  556.                                                                          Environment *ev,
  557.                                                                         ODFrame* frame)
  558. {
  559.     SimplePartData *somThis = SimplePartGetData(somSelf);
  560.     SimplePartMethodDebug("SimplePart","SimplePartGetContainingPartProperties");
  561.  
  562.  
  563.     // this part has no properties to return
  564.     return kODNULL;
  565.  
  566. }
  567.  
  568. SOM_Scope void  SOMLINK SimplePartRevealFrame(SimplePart *somSelf,
  569.                                                Environment *ev,
  570.                                               ODFrame* embeddedFrame,
  571.                                               ODShape* revealShape)
  572. {
  573.     SimplePartData *somThis = SimplePartGetData(somSelf);
  574.     SimplePartMethodDebug("SimplePart","SimplePartRevealFrame");
  575.  
  576. }
  577.  
  578. SOM_Scope void  SOMLINK SimplePartEmbeddedFrameSpec(SimplePart *somSelf,
  579.                                                      Environment *ev,
  580.                                                     ODFrame* embeddedFrame,
  581.                                                     ODObjectSpec spec)
  582. {
  583.     SimplePartData *somThis = SimplePartGetData(somSelf);
  584.     SimplePartMethodDebug("SimplePart","SimplePartEmbeddedFrameSpec");
  585.  
  586. }
  587.  
  588. SOM_Scope ODEmbeddedFramesIterator*  SOMLINK SimplePartCreateEmbeddedFramesIterator(SimplePart *somSelf,
  589.                                                                                      Environment *ev,
  590.                                                                                     ODFrame* frame)
  591. {
  592.     SimplePartData *somThis = SimplePartGetData(somSelf);
  593.     SimplePartMethodDebug("SimplePart","SimplePartCreateEmbeddedFramesIterator");
  594.  
  595.     THROW(kODErrCannotEmbed);
  596. }
  597.  
  598. SOM_Scope void  SOMLINK SimplePartAddDisplayFrame(SimplePart *somSelf,
  599.                                                    Environment *ev,
  600.                                                   ODFrame* frame)
  601. {
  602.     SimplePartData *somThis = SimplePartGetData(somSelf);
  603.     SimplePartMethodDebug("SimplePart","SimplePartAddDisplayFrame");
  604.  
  605.    PartInfoRec* pInfo = new PartInfoRec;
  606.    if (frame->IsRoot(ev))
  607.      pInfo->fNeedsActivating = kODTrue;
  608.  
  609.    frame->SetPartInfo(ev, (ODInfoType) pInfo);
  610.    return;
  611.  
  612. }
  613.  
  614. SOM_Scope void  SOMLINK SimplePartAttachSourceFrame(SimplePart *somSelf,
  615.                                                      Environment *ev,
  616.                                                     ODFrame* frame,
  617.                                                     ODFrame* sourceFrame)
  618. {
  619.     SimplePartData *somThis = SimplePartGetData(somSelf);
  620.     SimplePartMethodDebug("SimplePart","SimplePartAttachSourceFrame");
  621.  
  622. }
  623.  
  624. SOM_Scope void  SOMLINK SimplePartRemoveDisplayFrame(SimplePart *somSelf,
  625.                                                       Environment *ev,
  626.                                                      ODFrame* frame)
  627. {
  628.     SimplePartData *somThis = SimplePartGetData(somSelf);
  629.     SimplePartMethodDebug("SimplePart","SimplePartRemoveDisplayFrame");
  630.  
  631.     if (frame  != kODNULL)
  632.     {
  633.           _fSession->GetArbitrator(ev)->RelinquishFocusSet(ev, _fFocusSet,frame );
  634.  
  635.           PartInfoRec* pInfo = (PartInfoRec*) frame ->GetPartInfo(ev);
  636.           frame ->SetPartInfo(ev, (ODInfoType) kODNULL);
  637. //AJ          delete pInfo;
  638.         //  frame ->Release(ev);
  639.  
  640.     }
  641. }
  642.  
  643. SOM_Scope void  SOMLINK SimplePartCloseDisplayFrame(SimplePart *somSelf,
  644.                                                      Environment *ev,
  645.                                                     ODFrame* frame)
  646. {
  647.     SimplePartData *somThis = SimplePartGetData(somSelf);
  648.     SimplePartMethodDebug("SimplePart","SimplePartCloseDisplayFrame");
  649. //AJ    somSelf->RemoveDisplayFrame( ev, frame );
  650.     return;
  651. }
  652.  
  653. SOM_Scope void  SOMLINK SimplePartFrameShapeChanged(SimplePart *somSelf,
  654.                                                      Environment *ev,
  655.                                                     ODFrame* frame)
  656. {
  657.     SimplePartData *somThis = SimplePartGetData(somSelf);
  658.     SimplePartMethodDebug("SimplePart","SimplePartFrameShapeChanged");
  659.  
  660. }
  661.  
  662. SOM_Scope void  SOMLINK SimplePartViewTypeChanged(SimplePart *somSelf,
  663.                                                    Environment *ev,
  664.                                                   ODFrame* frame)
  665. {
  666.     SimplePartData *somThis = SimplePartGetData(somSelf);
  667.     SimplePartMethodDebug("SimplePart","SimplePartViewTypeChanged");
  668. }
  669.  
  670. SOM_Scope void  SOMLINK SimplePartPresentationChanged(SimplePart *somSelf,
  671.                                                        Environment *ev,
  672.                                                       ODFrame* frame)
  673. {
  674.     SimplePartData *somThis = SimplePartGetData(somSelf);
  675.     SimplePartMethodDebug("SimplePart","SimplePartPresentationChanged");
  676.  
  677. }
  678.  
  679. SOM_Scope void  SOMLINK SimplePartSequenceChanged(SimplePart *somSelf,
  680.                                                    Environment *ev,
  681.                                                   ODFrame* frame)
  682. {
  683.     SimplePartData *somThis = SimplePartGetData(somSelf);
  684.     SimplePartMethodDebug("SimplePart","SimplePartSequenceChanged");
  685. }
  686.  
  687. SOM_Scope void  SOMLINK SimplePartWritePartInfo(SimplePart *somSelf,
  688.                                                  Environment *ev,
  689.                                                 ODPtr partInfo,
  690.                                                 ODStorageUnitView* storageUnitView)
  691. {
  692.     SimplePartData *somThis = SimplePartGetData(somSelf);
  693.     SimplePartMethodDebug("SimplePart","SimplePartWritePartInfo");
  694.  
  695.     if (partInfo)
  696.     {
  697.       ODBoolean needsActivating = ((PartInfoRec*)partInfo)->fNeedsActivating
  698.                     || ((PartInfoRec*)partInfo)->fIsActive;
  699.       storageUnitView->SetValue(ev, sizeof(ODBoolean),
  700.                     (ODValue)&needsActivating);
  701.     }
  702.  
  703. }
  704.  
  705. SOM_Scope ODPtr  SOMLINK SimplePartReadPartInfo(SimplePart *somSelf,
  706.                                                  Environment *ev,
  707.                                                 ODFrame* frame,
  708.                                                 ODStorageUnitView* storageUnitView)
  709. {
  710.     SimplePartData *somThis = SimplePartGetData(somSelf);
  711.     SimplePartMethodDebug("SimplePart","SimplePartReadPartInfo");
  712.  
  713.     if (storageUnitView->GetSize(ev))
  714.     {
  715. //      PartInfoRec* partInfo = new PartInfoRec;
  716.       // Derived class must create PartInfoRec.  Would like to add different interface for
  717.       // initializing partinfo.      mcs 3/21/95  aj6/6/95
  718.       PartInfoRec* partInfo = (PartInfoRec*)frame->GetPartInfo(ev);
  719.  
  720.       ODBoolean needsActivating;
  721.       storageUnitView->GetValue(ev, sizeof(ODBoolean),
  722.                     (ODValue)&(needsActivating));
  723.       partInfo->fNeedsActivating = needsActivating;
  724.  
  725.       return partInfo;
  726.     }
  727.     else
  728.       return ((ODPtr)kODNULL);
  729. }
  730.  
  731. SOM_Scope ODID  SOMLINK SimplePartOpen(SimplePart *somSelf,  Environment *ev,
  732.                                        ODFrame* frame)
  733. {
  734.     SimplePartData *somThis = SimplePartGetData(somSelf);
  735.     SimplePartMethodDebug("SimplePart","SimplePartOpen");
  736.  
  737.     ODWindow* window = kODNULL;
  738.  
  739.     if (frame) // Doing a View As Window
  740.     {
  741.       window = _fSession->GetWindowState(ev)->GetWindow(ev, _fWindowID);
  742.       if (window)
  743.         window->Select(ev);
  744.       else
  745.       {
  746.         window = somSelf->CreateWindow(ev, frame);
  747.         _fWindowID = window->GetID(ev);
  748.         window->Open(ev);
  749.         window->Show(ev);
  750.         window->Select(ev);
  751.       }
  752.     }
  753.     else
  754.     {
  755.       window = somSelf->CreateWindow(ev, frame);
  756.       _fWindowID = window->GetID(ev);
  757.       window->Open(ev);
  758.       window->Show(ev);
  759.       window->Select(ev);
  760.     }
  761.     return window->GetID(ev);
  762.  
  763. }
  764.  
  765. SOM_Scope ODFrame*  SOMLINK SimplePartRequestEmbeddedFrame(SimplePart *somSelf,
  766.                                                             Environment *ev,
  767.                                                            ODFrame* containingFrame,
  768.                                                            ODFrame* baseFrame,
  769.                                                            ODShape* frameShape,
  770.                                                            ODPart* embedPart,
  771.                                                            ODTypeToken viewType,
  772.                                                            ODTypeToken presentation,
  773.                                                            ODBoolean isOverlaid)
  774. {
  775.     SimplePartData *somThis = SimplePartGetData(somSelf);
  776.     SimplePartMethodDebug("SimplePart","SimplePartRequestEmbeddedFrame");
  777.     return baseFrame;
  778. }
  779.  
  780. SOM_Scope void  SOMLINK SimplePartRemoveEmbeddedFrame(SimplePart *somSelf,
  781.                                                        Environment *ev,
  782.                                                       ODFrame* embeddedFrame)
  783. {
  784.     SimplePartData *somThis = SimplePartGetData(somSelf);
  785.     SimplePartMethodDebug("SimplePart","SimplePartRemoveEmbeddedFrame");
  786.  
  787. }
  788.  
  789. SOM_Scope ODShape*  SOMLINK SimplePartRequestFrameShape(SimplePart *somSelf,
  790.                                                          Environment *ev,
  791.                                                         ODFrame* embeddedFrame,
  792.                                                         ODShape* frameShape)
  793. {
  794.     SimplePartData *somThis = SimplePartGetData(somSelf);
  795.     SimplePartMethodDebug("SimplePart","SimplePartRequestFrameShape");
  796.  
  797.     return frameShape;
  798. }
  799. SOM_Scope void  SOMLINK SimplePartUsedShapeChanged(SimplePart *somSelf,
  800.                                                     Environment *ev,
  801.                                                    ODFrame* embeddedFrame)
  802. {
  803.     SimplePartData *somThis = SimplePartGetData(somSelf);
  804.     SimplePartMethodDebug("SimplePart","SimplePartUsedShapeChanged");
  805.  
  806. }
  807.  
  808. SOM_Scope ODShape*  SOMLINK SimplePartAdjustBorderShape(SimplePart *somSelf,
  809.                                                          Environment *ev,
  810.                                                         ODFrame* embeddedFrame,
  811.                                                         ODShape* shape)
  812. {
  813.     SimplePartData *somThis = SimplePartGetData(somSelf);
  814.     SimplePartMethodDebug("SimplePart","SimplePartAdjustBorderShape");
  815.  
  816.     return shape;
  817. }
  818.  
  819. SOM_Scope void  SOMLINK SimplePartFacetAdded(SimplePart *somSelf,
  820.                                               Environment *ev,
  821.                                              ODFacet* facet)
  822. {
  823.     SimplePartData *somThis = SimplePartGetData(somSelf);
  824.     SimplePartMethodDebug("SimplePart","SimplePartFacetAdded");
  825.  
  826. }
  827.  
  828. SOM_Scope void  SOMLINK SimplePartFacetRemoved(SimplePart *somSelf,
  829.                                                 Environment *ev,
  830.                                                ODFacet* facet)
  831. {
  832.     SimplePartData *somThis = SimplePartGetData(somSelf);
  833.     SimplePartMethodDebug("SimplePart","SimplePartFacetRemoved");
  834.  
  835. }
  836.  
  837. SOM_Scope void  SOMLINK SimplePartCanvasChanged(SimplePart *somSelf,
  838.                                                  Environment *ev,
  839.                                                 ODFacet* facet)
  840. {
  841.     SimplePartData *somThis = SimplePartGetData(somSelf);
  842.     SimplePartMethodDebug("SimplePart","SimplePartCanvasChanged");
  843.  
  844. }
  845.  
  846. SOM_Scope void  SOMLINK SimplePartGeometryChanged(SimplePart *somSelf,
  847.                                                    Environment *ev,
  848.                                                   ODFacet* facet)
  849. {
  850.     SimplePartData *somThis = SimplePartGetData(somSelf);
  851.     SimplePartMethodDebug("SimplePart","SimplePartGeometryChanged");
  852.  
  853. }
  854.  
  855. SOM_Scope void  SOMLINK SimplePartDraw(SimplePart *somSelf,  Environment *ev,
  856.                                        ODFacet* facet, ODShape* invalidShape)
  857. {
  858.     SimplePartData *somThis = SimplePartGetData(somSelf);
  859.     SimplePartMethodDebug("SimplePart","SimplePartDraw");
  860.  
  861.     ODBoolean drawing = facet->GetCanvas(ev)->IsDynamic(ev);
  862.  
  863.     ODFrame* displayFrame = facet->GetFrame(ev);
  864.       // transform grafport
  865.  
  866.          HPS hpsDraw = facet->GetCanvas(ev)->GetPlatformCanvas(ev);
  867.          GpiSavePS(hpsDraw);
  868.  
  869.          HRGN frameRgn = displayFrame->GetFrameShape(ev)->GetRegion(ev);
  870.          Rect frameRect;
  871.          GpiQueryRegionBox(hpsDraw, frameRgn, &frameRect);
  872.  
  873.          // set up clipping
  874.          HRGN saveClip;
  875.          ODShape* clipShape = new ODShape;
  876.          clipShape->CopyFrom(ev, facet->GetAggregateClipShape(ev));
  877.          clipShape->Transform(ev, facet->GetFrameTransform(ev));
  878.          HRGN clip = clipShape->GetRegion(ev);
  879.          GpiSetClipRegion(hpsDraw, clip, &saveClip);
  880.  
  881.                // paint the background
  882.  
  883.                GpiResetPS(hpsDraw, GRES_ATTRS);
  884.  
  885.                somSelf->SetGrafPortOrigin(ev, facet);
  886.  
  887.                RGBColor bgRGB = _fDefaultColor;
  888.                //RGBColor bgRGB = pInfo->bgColor;
  889.                // ULONG ulRGB = (bgRGB.bRed << 16) + (bgRGB.bGreen << 8) + bgRGB.bBlue;
  890.                // ULONG lColorIndex = GpiQueryColorIndex(hpsDraw, 0, ulRGB);
  891.                // GpiSetColor(hpsDraw, pInfo->bgColor);
  892.                GpiSetColor(hpsDraw, _fDefaultColor);
  893.                POINTL ptl = {frameRect.xRight, frameRect.yTop};
  894.                GpiBox(hpsDraw, DRO_FILL, &ptl, 0, 0);
  895.  
  896.                GpiSetLineType(hpsDraw, LINETYPE_DASHDOUBLEDOT);
  897.                GpiSetColor(hpsDraw, CLR_BLACK);
  898.  
  899.                for (int y = 0; y < frameRect.yTop; y += YGRID) {
  900.                   ptl.y = y;
  901.                   ptl.x = 0;
  902.                   GpiMove(hpsDraw, &ptl);
  903.                   ptl.x = frameRect.xRight;
  904.                   ptl.y += frameRect.xRight;
  905.                   GpiLine(hpsDraw, &ptl);
  906.                }
  907.  
  908.                for (int x = XGRID; x < frameRect.xRight; x += XGRID) {
  909.                   ptl.x = x;
  910.                   ptl.y = 0;
  911.                   GpiMove(hpsDraw, &ptl);
  912.                   ptl.x += frameRect.yTop;
  913.                   ptl.y = frameRect.yTop;
  914.                   GpiLine(hpsDraw, &ptl);
  915.                }
  916.          GpiRestorePS(hpsDraw, -1);
  917.  
  918.          GpiSetClipRegion(hpsDraw, saveClip, (PHRGN)0);
  919.          facet->GetCanvas(ev)->ReleasePlatformCanvas(ev);
  920.          delete clipShape;
  921.  
  922.  
  923. }
  924.  
  925. SOM_Scope void  SOMLINK SimplePartCanvasUpdated(SimplePart *somSelf,
  926.                                                  Environment *ev,
  927.                                                 ODCanvas* canvas)
  928. {
  929.     SimplePartData *somThis = SimplePartGetData(somSelf);
  930.     SimplePartMethodDebug("SimplePart","SimplePartCanvasUpdated");
  931.  
  932. }
  933.  
  934. SOM_Scope void  SOMLINK SimplePartHighlightChanged(SimplePart *somSelf,
  935.                                                     Environment *ev,
  936.                                                    ODFacet* facet)
  937. {
  938.     SimplePartData *somThis = SimplePartGetData(somSelf);
  939.     SimplePartMethodDebug("SimplePart","SimplePartHighlightChanged");
  940.  
  941. }
  942.  
  943.  
  944. SOM_Scope ODLink*  SOMLINK SimplePartCreateLink(SimplePart *somSelf,
  945.                                                  Environment *ev,
  946.                                                 ODPtr data, ODULong size)
  947. {
  948.     SimplePartData *somThis = SimplePartGetData(somSelf);
  949.     SimplePartMethodDebug("SimplePart","SimplePartCreateLink");
  950.  
  951.     return 0;
  952.  
  953. }
  954.  
  955. SOM_Scope void  SOMLINK SimplePartLinkUpdated(SimplePart *somSelf,
  956.                                                Environment *ev,
  957.                                               ODLink* updatedLink,
  958.                                               ODChangeID id)
  959. {
  960.     SimplePartData *somThis = SimplePartGetData(somSelf);
  961.     SimplePartMethodDebug("SimplePart","SimplePartLinkUpdated");
  962.  
  963. }
  964.  
  965. SOM_Scope void  SOMLINK SimplePartRevealLink(SimplePart *somSelf,
  966.                                               Environment *ev,
  967.                                              ODLinkSource* linkSource)
  968. {
  969.     SimplePartData *somThis = SimplePartGetData(somSelf);
  970.     SimplePartMethodDebug("SimplePart","SimplePartRevealLink");
  971.  
  972. }
  973.  
  974. SOM_Scope void  SOMLINK SimplePartEmbeddedFrameChanged(SimplePart *somSelf,
  975.                                                         Environment *ev,
  976.                                                        ODFrame* frame,
  977.                                                        ODChangeID change)
  978. {
  979.     SimplePartData *somThis = SimplePartGetData(somSelf);
  980.     SimplePartMethodDebug("SimplePart","SimplePartEmbeddedFrameChanged");
  981.  
  982. }
  983.  
  984. SOM_Scope void  SOMLINK SimplePartLinkStatusChanged(SimplePart *somSelf,
  985.                                                      Environment *ev,
  986.                                                     ODFrame* frame)
  987. {
  988.     SimplePartData *somThis = SimplePartGetData(somSelf);
  989.     SimplePartMethodDebug("SimplePart","SimplePartLinkStatusChanged");
  990.  
  991. }
  992.  
  993. SOM_Scope ODBoolean  SOMLINK SimplePartBeginRelinquishFocus(SimplePart *somSelf,
  994.                                                              Environment *ev,
  995.                                                             ODTypeToken focus,
  996.                                                             ODFrame* ownerFrame,
  997.                                                             ODFrame* proposedFrame)
  998. {
  999.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1000.     SimplePartMethodDebug("SimplePart","SimplePartBeginRelinquishFocus");
  1001.  
  1002.  
  1003.     return kODTrue;
  1004. }
  1005.  
  1006. SOM_Scope void  SOMLINK SimplePartCommitRelinquishFocus(SimplePart *somSelf,
  1007.                                                          Environment *ev,
  1008.                                                         ODTypeToken focus,
  1009.                                                         ODFrame* ownerFrame,
  1010.                                                         ODFrame* proposedFrame)
  1011. {
  1012.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1013.     SimplePartMethodDebug("SimplePart","SimplePartCommitRelinquishFocus");
  1014.  
  1015.     somSelf->FocusLost(ev, focus, ownerFrame);
  1016. }
  1017.  
  1018. SOM_Scope void  SOMLINK SimplePartAbortRelinquishFocus(SimplePart *somSelf,
  1019.                                                         Environment *ev,
  1020.                                                        ODTypeToken focus,
  1021.                                                        ODFrame* ownerFrame,
  1022.                                                        ODFrame* proposedFrame)
  1023. {
  1024.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1025.     SimplePartMethodDebug("SimplePart","SimplePartAbortRelinquishFocus");
  1026.  
  1027. }
  1028.  
  1029. SOM_Scope void  SOMLINK SimplePartFocusAcquired(SimplePart *somSelf,
  1030.                                                  Environment *ev,
  1031.                                                 ODTypeToken focus,
  1032.                                                 ODFrame* ownerFrame)
  1033. {
  1034.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1035.     SimplePartMethodDebug("SimplePart","SimplePartFocusAcquired");
  1036.     if (focus == _fSelectionFocus)
  1037.     {
  1038.       PartInfoRec* pInfo = (PartInfoRec*) ownerFrame->GetPartInfo(ev);
  1039.       pInfo->fIsActive = kODTrue;
  1040.     } else if (focus == _fMenuFocus) {
  1041.       ODWindow * window = ownerFrame->GetWindow( ev);
  1042.       #ifdef OLDMENUS
  1043.          ODMenuBar * mb = window->CopyBaseMenuBar(ev);
  1044.          window->SetMenuBar(ev,  mb );
  1045.          mb->Release( ev);
  1046.       #else
  1047.          ODMenuBar * mb = window->GetBaseMenuBar(ev);
  1048.          window->SetMenuBar(ev,  mb );
  1049.       #endif
  1050.     }
  1051.  
  1052. }
  1053.  
  1054. SOM_Scope void  SOMLINK SimplePartFocusLost(SimplePart *somSelf,
  1055.                                              Environment *ev,
  1056.                                             ODTypeToken focus,
  1057.                                             ODFrame* ownerFrame)
  1058. {
  1059.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1060.     SimplePartMethodDebug("SimplePart","SimplePartFocusLost");
  1061.     if (focus == _fSelectionFocus)
  1062.     {
  1063.       PartInfoRec* pInfo = (PartInfoRec*) ownerFrame->GetPartInfo(ev);
  1064.       pInfo->fIsActive = kODFalse;
  1065.     } else if (focus == _fMenuFocus) {
  1066.       ODWindow * window = ownerFrame->GetWindow( ev);
  1067.       window->SetMenuBar(ev,  0 );
  1068.     }
  1069. }
  1070.  
  1071. SOM_Scope void  SOMLINK SimplePartCloneInto(SimplePart *somSelf,
  1072.                                              Environment *ev,
  1073.                                             ODDraftKey key, ODStorageUnit* storageUnit,
  1074.                                             ODStorageUnit* initiatingFrame)
  1075. {
  1076.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1077.     SimplePartMethodDebug("SimplePart","SimplePartCloneInto");
  1078.  
  1079.     ODStorageUnit*  su = somSelf->GetStorageUnit(ev);
  1080.  
  1081.     somSelf->Externalize(ev);
  1082.  
  1083.     ODStorageUnit* destTestDrawSU = su
  1084.             ->CloneTo(ev, key, storageUnit->GetDraft(ev), initiatingFrame);
  1085.  
  1086.     storageUnit->AddProperty(ev, kODPropContents);
  1087.     storageUnit->AddValue(ev, kKindTestSimple);
  1088.     ODStorageUnitRef aSURef = storageUnit->GetStrongStorageUnitRef(ev, destTestDrawSU);
  1089.     storageUnit->SetValue(ev, sizeof(ODStorageUnitRef),&aSURef);
  1090.  
  1091.     destTestDrawSU->Release(ev);
  1092.  
  1093.     su->CloneInto(ev, key, storageUnit, initiatingFrame);
  1094. }
  1095.  
  1096. SOM_Scope void  SOMLINK SimplePartExternalizeKinds(SimplePart *somSelf,
  1097.                                                     Environment *ev,
  1098.                                                    ODTypeList* kindset)
  1099. {
  1100.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1101.     SimplePartMethodDebug("SimplePart","SimplePartExternalizeKinds");
  1102.  
  1103.     somSelf->Externalize(ev);
  1104. }
  1105.  
  1106. SOM_Scope void  SOMLINK SimplePartExternalize(SimplePart *somSelf,
  1107.                                                Environment *ev)
  1108. {
  1109.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1110.     SimplePartMethodDebug("SimplePart","SimplePartExternalize");
  1111.  
  1112.  
  1113.     ODStorageUnit* su = somSelf->GetStorageUnit(ev);
  1114. // mcs AJ: no need to store these here, since class derived from simplprt will store its own kind, etc.
  1115. //    su->AddProperty(ev, kODPropPart);
  1116. //    su->AddValue(ev, kODISOStr);
  1117. //    su->SetValue(ev, strlen(kKindTestSimple) + 1, (ODValue) kKindTestSimple);
  1118. //    su->AddProperty(ev, kODPropContents);
  1119. //    su->AddValue(ev, (ODValueType) kSimplePartValueType);
  1120. //    su->SetValue(ev, sizeof(RGBColor),  (ODValue) &_fDefaultColor);
  1121.  
  1122. }
  1123.  
  1124. SOM_Scope void  SOMLINK SimplePartChangeKind(SimplePart *somSelf,
  1125.                                               Environment *ev,
  1126.                                              ODType kind)
  1127. {
  1128.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1129.     SimplePartMethodDebug("SimplePart","SimplePartChangeKind");
  1130.  
  1131. }
  1132.  
  1133. SOM_Scope ODBoolean  SOMLINK SimplePartHandleEvent(SimplePart *somSelf,
  1134.                                                     Environment *ev,
  1135.                                                    ODEventData* event,
  1136.                                                    ODFrame* frame,
  1137.                                                    ODFacet* facet)
  1138. {
  1139.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1140.     SimplePartMethodDebug("SimplePart","SimplePartHandleEvent");
  1141.  
  1142.     ODBoolean handled = kODFalse;
  1143.  
  1144.     switch (event->msg)
  1145.     {
  1146.        case WM_BUTTON1DOWN:
  1147.           {
  1148.              ODPoint windowODPoint(ODPOINTL(SHORT1FROMMP(event->mp1), 
  1149.                                             SHORT2FROMMP(event->mp1)));
  1150.              handled = somSelf->HandleMouseDown(ev, facet, &windowODPoint, event);
  1151.           }
  1152.           break;
  1153.  
  1154.  
  1155.        case WM_CONTEXTMENU       :
  1156.           handled = kODTrue;   // We're too lazy to implement a context menu
  1157.                                      //   and if we don't return true the message will
  1158.                                      //   be propagated to the parent frame.  We could
  1159.                                      //   prevent that by clearing PropagateEvents,
  1160.                                      //   but this should also work.
  1161.           event->result = (MRESULT)1; // handled
  1162.           break;
  1163.        case WM_CHAR:
  1164.           if (!(SHORT1FROMMP(event->mp1) & KC_KEYUP)) {
  1165.              handled = somSelf->HandleKeyDown(ev, frame, event);
  1166.           } /* endif */
  1167.           break;
  1168.        
  1169.        case WM_ACTIVATE:
  1170.           handled = true; // actually ignored by dispatcher
  1171.           if (SHORT1FROMMP(event->mp1) != 0)
  1172.              somSelf->ActivatingWindow(ev, frame);
  1173.           else
  1174.              somSelf->DeActivatingWindow(ev, frame);
  1175.           break;
  1176.  
  1177.        case WM_COMMAND:
  1178.           if (SHORT1FROMMP(event->mp2) & CMDSRC_MENU ||
  1179.               SHORT1FROMMP(event->mp2) & CMDSRC_ACCELERATOR)
  1180.           {
  1181.              handled = somSelf->HandleMenuEvent(ev, frame, event);
  1182.           }
  1183.           break;
  1184.  
  1185.        default:
  1186.           return kODFalse;
  1187.     }
  1188.     return handled;
  1189. }
  1190.  
  1191. SOM_Scope ODBoolean  SOMLINK SimplePartHandleEventInEmbedded(SimplePart *somSelf,
  1192.                                                               Environment *ev,
  1193.                                                              ODEventData* event,
  1194.                                                              ODFrame* frame,
  1195.                                                              ODFacet* facet,
  1196.                                                              ODFrame* embeddedFrame,
  1197.                                                              ODFacet* embeddedFacet)
  1198. {
  1199.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1200.     SimplePartMethodDebug("SimplePart","SimplePartHandleEventInEmbedded");
  1201.  
  1202.     return kODFalse;
  1203. }
  1204.  
  1205. SOM_Scope void  SOMLINK SimplePartMouseEnter(SimplePart *somSelf,
  1206.                                               Environment *ev,
  1207.                                              ODFacet* facet,
  1208.                                              ODPoint* where)
  1209. {
  1210.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1211.     SimplePartMethodDebug("SimplePart","SimplePartMouseEnter");
  1212.  
  1213.                                       //   pointer type we prefer.
  1214. }
  1215.  
  1216. SOM_Scope void  SOMLINK SimplePartMouseWithin(SimplePart *somSelf,
  1217.                                                Environment *ev,
  1218.                                               ODFacet* facet,
  1219.                                               ODPoint* where)
  1220. {
  1221.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1222.     SimplePartMethodDebug("SimplePart","SimplePartMouseWithin");
  1223.  
  1224. }
  1225.  
  1226. SOM_Scope void  SOMLINK SimplePartMouseLeave(SimplePart *somSelf,
  1227.                                               Environment *ev,
  1228.                                              ODFacet* facet)
  1229. {
  1230.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1231.     SimplePartMethodDebug("SimplePart","SimplePartMouseLeave");
  1232.  
  1233.     // we may need to restore the pointer here.  I'll check later. todo (jso 94-9)
  1234. }
  1235.  
  1236. SOM_Scope void  SOMLINK SimplePartAdjustMenus(SimplePart *somSelf,
  1237.                                                Environment *ev,
  1238.                                               ODFrame* frame)
  1239. {
  1240.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1241.     SimplePartMethodDebug("SimplePart","SimplePartAdjustMenus");
  1242.  
  1243. }
  1244.  
  1245. SOM_Scope void  SOMLINK SimplePartUndoAction(SimplePart *somSelf,
  1246.                                               Environment *ev,
  1247.                                              ODActionData actionState)
  1248. {
  1249.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1250.     SimplePartMethodDebug("SimplePart","SimplePartUndoAction");
  1251.  
  1252.     // not much to undo yet
  1253. }
  1254.  
  1255. SOM_Scope void  SOMLINK SimplePartRedoAction(SimplePart *somSelf,
  1256.                                               Environment *ev,
  1257.                                              ODActionData actionState)
  1258. {
  1259.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1260.     SimplePartMethodDebug("SimplePart","SimplePartRedoAction");
  1261.  
  1262.     // not much to redo yet
  1263. }
  1264.  
  1265. SOM_Scope void  SOMLINK SimplePartDisposeActionState(SimplePart *somSelf,
  1266.                                                       Environment *ev,
  1267.                                                      ODActionData actionState,
  1268.                                                      ODDoneState doneState)
  1269. {
  1270.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1271.     SimplePartMethodDebug("SimplePart","SimplePartDisposeActionState");
  1272.  
  1273.     // not much to redo
  1274. }
  1275.  
  1276. SOM_Scope void  SOMLINK SimplePartWriteActionState(SimplePart *somSelf,
  1277.                                                     Environment *ev,
  1278.                                                    ODPtr actionState,
  1279.                                                    ODStorageUnitView* storageUnitView)
  1280. {
  1281.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1282.     SimplePartMethodDebug("SimplePart","SimplePartWriteActionState");
  1283.  
  1284. }
  1285.  
  1286. SOM_Scope ODPtr  SOMLINK SimplePartReadActionState(SimplePart *somSelf,
  1287.                                                     Environment *ev,
  1288.                                                    ODStorageUnitView* storageUnitView)
  1289. {
  1290.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1291.     SimplePartMethodDebug("SimplePart","SimplePartReadActionState");
  1292.  
  1293.     return kODNULL;
  1294. }
  1295.  
  1296. SOM_Scope void  SOMLINK SimplePartInitPart(SimplePart *somSelf,
  1297.                                             Environment *ev,
  1298.                                            ODStorageUnit* storageUnit)
  1299. {
  1300.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1301.     SimplePartMethodDebug("SimplePart","SimplePartInitPart");
  1302.  
  1303.     if (somSelf->IsInitialized(ev))
  1304.       return;
  1305.  
  1306.     somSelf->InitPersistentObject(ev, storageUnit);
  1307.  
  1308.  
  1309.     somSelf->CommonInitSimplePart(ev);
  1310.  
  1311. }
  1312.  
  1313. SOM_Scope void  SOMLINK SimplePartInitPartFromStorage(SimplePart *somSelf,
  1314.                                                        Environment *ev,
  1315.                                                       ODStorageUnit* storageUnit)
  1316. {
  1317.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1318.     SimplePartMethodDebug("SimplePart","SimplePartInitPartFromStorage");
  1319.  
  1320.  
  1321.     if (somSelf->IsInitialized(ev))
  1322.       return;
  1323.  
  1324.     somSelf->InitPersistentObjectFromStorage(ev, storageUnit);
  1325.  
  1326.  
  1327.     somSelf->CommonInitSimplePart(ev);
  1328.  
  1329.  
  1330. //AJ    ODStorageUnit* su = somSelf->GetStorageUnit(ev);
  1331. //AJ    su->Focus(ev, kODPropContents, kODPosUndefined, kSimplePartValueType, 0, kODPosUndefined);
  1332. //AJ    su->GetValue(ev, sizeof(RGBColor), (ODValue) &_fDefaultColor);
  1333.  
  1334.  
  1335. }
  1336.  
  1337. SOM_Scope void  SOMLINK SimplePartRelease(SimplePart *somSelf,
  1338.                                            Environment *ev)
  1339. {
  1340.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1341.     SimplePartMethodDebug("SimplePart","SimplePartRelease");
  1342.  
  1343.     SimplePart_parent_ODPart_Release(somSelf, ev);
  1344.     if (somSelf->GetRefCount(ev) == 0)
  1345.        somSelf->GetStorageUnit(ev)->GetDraft(ev)->ReleasePart(ev, somSelf);
  1346. }
  1347.  
  1348. SOM_Scope void  SOMLINK SimplePartActivate(SimplePart *somSelf,
  1349.                                                 Environment *ev,
  1350.                                                 ODFacet* facet)
  1351. {
  1352.     SimplePartData *somThis = SimplePartGetData(somSelf);
  1353.     SimplePartMethodDebug("SimplePart","SimplePartActivate");
  1354.  
  1355.     if (!facet->GetWindow(ev)->IsActive(ev))
  1356.        facet->GetWindow(ev)->Select(ev);
  1357.     else {
  1358.        PartInfoRec* pInfo = (PartInfoRec*) facet->GetFrame(ev)->GetPartInfo(ev);
  1359.        if (!pInfo->fIsActive) {
  1360.           somSelf->ActivateFrame(ev, facet->GetFrame(ev));
  1361.        } /* endif */
  1362.     } /* endif */
  1363. }
  1364.  
  1365. #ifdef __IBMC___
  1366.   #pragma linkage (SOMInitModule, system)
  1367. #endif
  1368.  
  1369. SOMEXTERN void SOMLINK SOMInitModule (long majorVersion, long minorVersion,
  1370.                                  string className)
  1371. {
  1372.    SOM_IgnoreWarning (majorVersion);  /* This function makes   */
  1373.    SOM_IgnoreWarning (minorVersion);  /* no use of the passed  */
  1374.    SOM_IgnoreWarning (className);     /* arguments.            */
  1375.  
  1376.    SimplePartNewClass ( SimplePart_MajorVersion, SimplePart_MinorVersion);
  1377. }
  1378.