////////////////////////////////////////////////////////////////////////////////
//
// APropertyUserControlEvent  -     
//
////////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"

#ifndef __CPAR_H
#include "CPar.h"
#endif

#ifndef  _CPROPMEN_H
#include "cPropMen.h"
#endif

#ifndef _APROPUSEREVENT_H
#include "aPropUserEvent.h"
#endif

//-------------------------------------------------------------------------------
// 
// ---
APropertyUserControlEvent::APropertyUserControlEvent( LPDISPATCH ctrl, long _controlID, PropertyManagerObject&  _obj )
  : ABaseEvent( ctrl, DIID_ksPropertyUserControlNotify ), controlID(_controlID), obj(_obj), hatchEvent(NULL)
{
  Advise();
}

//-------------------------------------------------------------------------------
// 
// ---
APropertyUserControlEvent::~APropertyUserControlEvent()
{
}

//-------------------------------------------------------------------------------
//  
// ---
BEGIN_EVENTSINK_MAP(APropertyUserControlEvent, ABaseEvent)
  //    
  ON_EVENT (APropertyUserControlEvent, (unsigned int)-1, puCreateOCX,  CreateOCX,  VTS_DISPATCH )
  //    
  ON_EVENT (APropertyUserControlEvent, (unsigned int)-1, puDestroyOCX, DestroyOCX, VTS_NONE )
END_EVENTSINK_MAP()

//-----------------------------------------------------------------------------
// puCreateOCX -     
// ---
afx_msg BOOL APropertyUserControlEvent::CreateOCX( LPDISPATCH iOcx )
{
  if( iOcx ) {
    obj.OnCreateOCX( controlID, iOcx );
    hatchEvent = new AHatchCtrlEvent( iOcx, (CPar&)obj );
  }
  return true;
}


//-----------------------------------------------------------------------------
// puDestroyOCX - " OCX ."
// ---
afx_msg BOOL APropertyUserControlEvent::DestroyOCX( )
{
  if ( hatchEvent ) {
//    IDispatchPtr control( m_pContainer );
    obj.OnDestroyOCX( controlID/*, control*/ );
    hatchEvent->Disconnect();
    hatchEvent = NULL;
  }
  return true;
}

////////////////////////////////////////////////////////////////////////////////
//
// AHatchCtrlEvent  -    ocx
//
////////////////////////////////////////////////////////////////////////////////
extern "C" const GUID __declspec(selectany) DIID_DVCHatchEvents =
     { 0x26776524, 0xf601, 0x42ce, { 0xa4, 0x9e, 0x90, 0xcf, 0x80, 0x41, 0x11, 0xa5 } };


//-------------------------------------------------------------------------------
// 
// ---
AHatchCtrlEvent::AHatchCtrlEvent( LPDISPATCH ctrl, CPar&  _obj )
  : ABaseEvent( ctrl, DIID_DVCHatchEvents ), obj(_obj)
{
  Advise();
}

//-------------------------------------------------------------------------------
// 
// ---
AHatchCtrlEvent::~AHatchCtrlEvent()
{
}

//-------------------------------------------------------------------------------
//  
// ---
BEGIN_EVENTSINK_MAP(AHatchCtrlEvent, ABaseEvent)
  //   
  ON_EVENT(AHatchCtrlEvent, (unsigned int)-1, 1, ChangeAngle, VTS_NONE )
  //   
  ON_EVENT(AHatchCtrlEvent, (unsigned int)-1, 2, ChangeStep,  VTS_NONE )
END_EVENTSINK_MAP()

// GUID 
extern "C" const GUID __declspec(selectany) DIID_DVCHatch =
		{ 0x3ffe9799, 0xdf8d, 0x4936, { 0x98, 0xc, 0xbe, 0xa2, 0x89, 0x64, 0xa3, 0xa7 } };

//-----------------------------------------------------------------------------
//  
// ---
afx_msg void AHatchCtrlEvent::ChangeAngle()
{
  _DVCHatchPtr control( m_pContainer );
  if( control ) {
    //   
    obj.SetHatchAngle( control->GetAngle() );
    obj.SetChange();     //   
    obj.RedrawPhantom(); //  
  }
}

//-----------------------------------------------------------------------------
//   
// ---
afx_msg void AHatchCtrlEvent::ChangeStep( )
{
  _DVCHatchPtr control( m_pContainer );
  if( control ) {
    //   
    obj.SetHatchStep( control->GetStep() );  
    obj.SetChange();     //         
    obj.RedrawPhantom(); //  
  }
}

