////////////////////////////////////////////////////////////////////////////////
//
// SpcObjectEvent -     
//
////////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "eventsAuto.h"
/*
#ifndef __LDEFIN2D_H
#include <ldefin2d.h>
#endif
*/
#ifndef _SPCOBJECTEVENT_H
#include "SpcObjectEvent.h"
#endif

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

////////////////////////////////////////////////////////////////////////////////
//
// SpcObjectEvent -     
//
////////////////////////////////////////////////////////////////////////////////

//-------------------------------------------------------------------------------
//
// ---
SpcObjectEvent::SpcObjectEvent( LPUNKNOWN object, 
                                LPDISPATCH doc, 
                                long objType, 
                                bool selfAdvise /*true*/ )
  : BaseEvent( object, DIID_ksSpcObjectNotify, doc, objType, NULL, selfAdvise )
{
}


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

//-------------------------------------------------------------------------------
//
// ---
BEGIN_EVENTSINK_MAP(SpcObjectEvent, BaseEvent)
	ON_EVENT (SpcObjectEvent, (unsigned int)-1, soBeginDelete,      BeginDelete,      VTS_I4)
	ON_EVENT (SpcObjectEvent, (unsigned int)-1, soDelete,           Delete,           VTS_I4)
	ON_EVENT (SpcObjectEvent, (unsigned int)-1, soCellDblClick,     CellDblClick,     VTS_I4 VTS_I4)
	ON_EVENT (SpcObjectEvent, (unsigned int)-1, soCellBeginEdit,    CellBeginEdit,    VTS_I4 VTS_I4)
	ON_EVENT (SpcObjectEvent, (unsigned int)-1, soChangeCurrent,    ChangeCurrent,    VTS_I4)
	ON_EVENT (SpcObjectEvent, (unsigned int)-1, soDocumentBeginAdd, DocumentBeginAdd, VTS_I4)
	ON_EVENT (SpcObjectEvent, (unsigned int)-1, soDocumentAdd,      DocumentAdd,      VTS_I4 VTS_BSTR)
	ON_EVENT (SpcObjectEvent, (unsigned int)-1, soDocumentRemove,   DocumentRemove,   VTS_I4 VTS_BSTR)
	ON_EVENT (SpcObjectEvent, (unsigned int)-1, soBeginGeomChange,  BeginGeomChange,  VTS_I4)
	ON_EVENT (SpcObjectEvent, (unsigned int)-1, soGeomChange,       GeomChange,       VTS_I4)
  ON_EVENT (SpcObjectEvent, (unsigned int)-1, soBeginProcess,     BeginProcess,     VTS_I4 VTS_I4)
	ON_EVENT (SpcObjectEvent, (unsigned int)-1, soEndProcess,       EndProcess,       VTS_I4)
  ON_EVENT (SpcObjectEvent, (unsigned int)-1, soCreateObject,     CreateObject,     VTS_I4)
	ON_EVENT (SpcObjectEvent, (unsigned int)-1, soUpdateObject,     UpdateObject,     VTS_I4)
END_EVENTSINK_MAP()


//-------------------------------------------------------------------------------
// koBeginDelete -   
// ---
VARIANT_BOOL SpcObjectEvent::BeginDelete( long objRef )
{
  if ( IsSelfAdvise() && theApp.m_mes_OBJ_SPC )
  {
    CString str;
    str.Format( "%s --> SpcObjectEvent::BeginDelete\nobjRef = %i", m_libName, objRef );
    str += "\n  = " + GetDocName();
    return !!kompas->ksYesNo( str.GetBuffer(0) ); 
  }
  return true;
}


//-------------------------------------------------------------------------------
// koDelete -  
// ---
VARIANT_BOOL SpcObjectEvent::Delete( long objRef )
{
  if ( IsSelfAdvise() && theApp.m_mes_OBJ_SPC )
  {
    CString str;
    str.Format( "%s --> SpcObjectEvent::Delete\nobjRef = %i", m_libName, objRef );
    str += "\n  = " + GetDocName();
    kompas->ksMessage( str.GetBuffer(0) );
  }
  //         
  //    : 0, SPC_BASE_OBJECT, SPC_COMMENT,    
	if ( objRef && objRef == m_objType )
		delete this; 
  return true;
}
       

//-------------------------------------------------------------------------------
// soCellDblClick -     
// ---
VARIANT_BOOL SpcObjectEvent::CellDblClick(long objRef, long number)
{ 
  if ( IsSelfAdvise() && theApp.m_mes_OBJ_SPC )
  {
    CString str;
    str.Format( "%s --> SpcObjectEvent::CellDblClick\nobjRef = %i\nnumber = %i", m_libName, objRef, number );
    str += "\n  = " + GetDocName(); 
    return !!kompas->ksYesNo( str.GetBuffer(0) ); 
  }
  return true;  
}


//-------------------------------------------------------------------------------
// soCellBeginEdit -       
// ---
VARIANT_BOOL SpcObjectEvent::CellBeginEdit(long objRef, long number) 
{ 
  if ( IsSelfAdvise() && theApp.m_mes_OBJ_SPC )
  {
    CString str;
    str.Format( "%s --> SpcObjectEvent::CellBeginEdit\nobjRef = %i\nnumber = %i", m_libName, objRef, number );
    str += "\n  = " + GetDocName();
    return !!kompas->ksYesNo( str.GetBuffer(0) ); 
  }
  return true;
}


//------------------------------------------------------------------------------- 
// soChangeCurrent -     
// ---
VARIANT_BOOL SpcObjectEvent::ChangeCurrent( long objRef )
{ 
  if ( IsSelfAdvise() && theApp.m_mes_OBJ_SPC )
  {
    CString str;
    str.Format( "%s --> SpcObjectEvent::ChangeCurrent\nobjRef = %i", m_libName, objRef );
    str += "\n  = " + GetDocName();
    kompas->ksMessage( str.GetBuffer(0) );
  }
  return true;  
}


//-------------------------------------------------------------------------------
// soDocumentBeginAdd -   
// ---
VARIANT_BOOL SpcObjectEvent::DocumentBeginAdd( long objRef )
{ 
  if ( IsSelfAdvise() && theApp.m_mes_OBJ_SPC )
  {
    CString str;
    str.Format( "%s --> SpcObjectEvent::DocumentBeginAdd\nobjRef = %i", m_libName, objRef );
    str += "\n  = " + GetDocName();
    return !!kompas->ksYesNo( str.GetBuffer(0) ); 
  }
  return true;
}


//-------------------------------------------------------------------------------
// soDocumentAdd -        
// ---
VARIANT_BOOL SpcObjectEvent::DocumentAdd( long objRef, LPCTSTR docName ) 
{ 
  if ( IsSelfAdvise() && theApp.m_mes_OBJ_SPC )
  {
    CString str;
    str.Format( "%s --> SpcObjectEvent::DocumentAdd\nobjRef = %i\ndocName = %s", m_libName, objRef, docName );
    str += "\n  = " + GetDocName();
    kompas->ksMessage( str.GetBuffer(0) );
  }
  return true; 
}


//-------------------------------------------------------------------------------
// soDocumentRemove -       
// ---
VARIANT_BOOL SpcObjectEvent::DocumentRemove( long objRef, LPCTSTR docName )
{ 
  if ( IsSelfAdvise() && theApp.m_mes_OBJ_SPC )
  {
    CString str;
    str.Format( "%s --> SpcObjectEvent::DocumentRemove\nobjRef = %i\ndocName = %s", m_libName, objRef, docName );
    str += "\n  = " + GetDocName();
    kompas->ksMessage( str.GetBuffer(0) );
  }
  return true;
}


//-------------------------------------------------------------------------------
// soBeginGeomChange -     
// ---
VARIANT_BOOL SpcObjectEvent::BeginGeomChange( long objRef )
{ 
  if ( IsSelfAdvise() && theApp.m_mes_OBJ_SPC )
  {
    CString str;
    str.Format( "%s --> SpcObjectEvent::BeginGeomChange\nobjRef = %i", m_libName, objRef );
    str += "\n  = " + GetDocName();
    return !!kompas->ksYesNo( str.GetBuffer(0) ); 
  }
  return true;
}


//-------------------------------------------------------------------------------
// soGeomChange -        
// ---
VARIANT_BOOL SpcObjectEvent::GeomChange( long objRef ) 
{
  if ( IsSelfAdvise() && theApp.m_mes_OBJ_SPC )
  {
    CString str;
    str.Format( "%s --> SpcObjectEvent::GeomChange\nobjRef = %i", m_libName, objRef );
    str += "\n  = " + GetDocName();
    kompas->ksMessage( str.GetBuffer(0) );
  }
  return true;  
}


//-------------------------------------------------------------------------------
// koBeginProcess -  \ 
// ---
VARIANT_BOOL SpcObjectEvent::BeginProcess( long pType, long objRef )
{
  if ( IsSelfAdvise() && theApp.m_mes_OBJ_SPC )
  {
    CString str;
    str.Format( "%s --> SpcObjectEvent::BeginProcess\npType = %i\nobjRef = %i", m_libName, pType, objRef ); 
    str += "\n  = " + GetDocName();
    return !!kompas->ksYesNo( str.GetBuffer(0) ); 
  }
  return true;  
}
       

//-------------------------------------------------------------------------------
// koEndProcess -  \ 
// ---
VARIANT_BOOL SpcObjectEvent::EndProcess( long pType )
{
  if ( IsSelfAdvise() && theApp.m_mes_OBJ_SPC )
  {
    CString str;
    str.Format( "%s --> SpcObjectEvent::EndProcess\npType = %i", m_libName, pType );
    str += "\n  = " + GetDocName();
    kompas->ksMessage( str.GetBuffer(0) );
  }
  return true; 
}


//-------------------------------------------------------------------------------
// koCreate -  
// ---
VARIANT_BOOL SpcObjectEvent::CreateObject( long objRef )
{
  if ( IsSelfAdvise() && theApp.m_mes_OBJ_SPC )
  {
    CString str;
    str.Format( "%s --> SpcObjectEvent::CreateObject\nobjRef = %i", m_libName, objRef );
    str += "\n  = " + GetDocName();
    kompas->ksMessage( str.GetBuffer(0) );
  }
  return true; 
}

    
//-------------------------------------------------------------------------------
// koUpdateObject -  
// ---
VARIANT_BOOL SpcObjectEvent::UpdateObject( long objRef )
{
  if ( IsSelfAdvise() && theApp.m_mes_OBJ_SPC )
  {
    CString str;
    str.Format( "%s --> SpcObjectEvent::UpdateObject\nobjRef = %i", m_libName, objRef );
    str += "\n  = " + GetDocName();
    kompas->ksMessage( str.GetBuffer(0) );
  }   
  return true;
} 
