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


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

//-------------------------------------------------------------------------------
//     
// ---
ABaseEvent * NewDocumentFrameEvent( LPDISPATCH doc, LPDISPATCH frame, DocumentFrameEventCalback & obj )
{
  DocumentFrameEvent * res = NULL;

  if ( doc ) 
  {
    res = (DocumentFrameEvent *)ABaseEvent::FindEventByContainer(IID_IViewsAndLayersManager, frame); 
    if ( !res ) 
    {
  		res = new DocumentFrameEvent( frame, doc, obj );
	  	
      if ( !res->Advise() ) 
      { 
		  	delete res;
			  res = NULL;
      } // if ( !res->Advise() ) 
    } // if ( !ABaseEvent::FindEventByContainer(IID_IViewsAndLayersManager, obj) ) 
  } // if ( doc )

  return res;

}


////////////////////////////////////////////////////////////////////////////////
//
// DocumentFrameEvent  -     
//
////////////////////////////////////////////////////////////////////////////////

//-------------------------------------------------------------------------------
//
// ---
DocumentFrameEvent::DocumentFrameEvent( LPUNKNOWN frame, LPDISPATCH doc, DocumentFrameEventCalback & _obj)
  : ABaseEvent( frame, DIID_ksDocumentFrameNotify, doc )
  , m_obj( _obj )  
{
}


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


//-------------------------------------------------------------------------------
//
// ---
BEGIN_EVENTSINK_MAP(DocumentFrameEvent, ABaseEvent)
// ON_EVENT (DocumentFrameEvent, (unsigned int)-1, frBeginPaint,          BeginPaint,          VTS_DISPATCH)
//  	ON_EVENT (DocumentFrameEvent, (unsigned int)-1, frClosePaint,          ClosePaint,          VTS_DISPATCH)
//  	ON_EVENT (DocumentFrameEvent, (unsigned int)-1, frMouseDown,           MouseDown,           VTS_I2 VTS_I2 VTS_I4 VTS_I4)
//  	ON_EVENT (DocumentFrameEvent, (unsigned int)-1, frMouseUp,             MouseUp,             VTS_I2 VTS_I2 VTS_I4 VTS_I4)
//  	ON_EVENT (DocumentFrameEvent, (unsigned int)-1, frMouseDblClick,       MouseDblClick,       VTS_I2 VTS_I2 VTS_I4 VTS_I4)
 	ON_EVENT (DocumentFrameEvent, (unsigned int)-1, frBeginPaintGL,        BeginPaintGL,        VTS_DISPATCH VTS_I4)
//  	ON_EVENT (DocumentFrameEvent, (unsigned int)-1, frClosePaintGL,        ClosePaintGL,        VTS_DISPATCH VTS_I4)
	ON_EVENT (DocumentFrameEvent, (unsigned int)-1, frAddGabarit,          AddGabarit,          VTS_DISPATCH)
//  ON_EVENT (DocumentFrameEvent, (unsigned int)-1, frActivate,            Activate,            VTS_NONE)
//  ON_EVENT (DocumentFrameEvent, (unsigned int)-1, frDeactivate,          Deactivate,          VTS_NONE)
  ON_EVENT (DocumentFrameEvent, (unsigned int)-1, frCloseFrame,          CloseFrame,          VTS_NONE)
//  ON_EVENT (DocumentFrameEvent, (unsigned int)-1, frMouseMove,           MouseMove,           VTS_I2 VTS_R8 VTS_R8 )
END_EVENTSINK_MAP()


////-------------------------------------------------------------------------------
//// frBeginPaint          -   
//// ---
//BOOL DocumentFrameEvent::BeginPaint( LPDISPATCH paintObj )
//{
//  return TRUE;
//}
//
//
////-------------------------------------------------------------------------------
//// frClosePaint          -   
//// ---
//BOOL DocumentFrameEvent::ClosePaint( LPDISPATCH paintObj )
//{
//  return TRUE;
//}
//
//
////-------------------------------------------------------------------------------
//// frMouseDown           -   
//// ---
//BOOL DocumentFrameEvent::MouseDown( short nButton, short nShiftState, long x, long y )
//{
//  return TRUE;
//}
//
//
////-------------------------------------------------------------------------------
//// frMouseUp             -   
//// ---
//BOOL DocumentFrameEvent::MouseUp( short nButton, short nShiftState, long x, long y )
//{
//  return TRUE;
//}
//
//
////-------------------------------------------------------------------------------
//// frMouseDblClick       -    
//// ---
//BOOL DocumentFrameEvent::MouseDblClick( short nButton, short nShiftState, long x, long y )
//{
//  return TRUE;
//}


//-------------------------------------------------------------------------------
// frBeginPaintGL   -     OpenGL
// ---
BOOL DocumentFrameEvent::BeginPaintGL( LPDISPATCH glObj, long drawMode )
{
  return m_obj.BeginPaintGL( IDocumentFramePtr(m_pContainer), ksGLObjectPtr(glObj), drawMode );;
}


////-------------------------------------------------------------------------------
//// frClosePaintGL   -     OpenGL
//// ---
//BOOL DocumentFrameEvent::ClosePaintGL( LPDISPATCH glObj, long drawMode )
//{
//  return TRUE;
//}


//-------------------------------------------------------------------------------
// frAddGabarit          -   
// ---
BOOL DocumentFrameEvent::AddGabarit( LPDISPATCH gabObj )
{
  return m_obj.AddGabarit( IDocumentFramePtr(m_pContainer), IGabaritObjectPtr(gabObj) );
}


////-------------------------------------------------------------------------------
//// frActivate            -  
//// ---
//BOOL DocumentFrameEvent::Activate()
//{
//  return TRUE;
//}


////-------------------------------------------------------------------------------
//// frDeactivate          -  
//// ---
//BOOL DocumentFrameEvent::Deactivate()
//{
//  return TRUE;
//}


//-------------------------------------------------------------------------------
// frCloseFrame          -  
// ---
BOOL DocumentFrameEvent::CloseFrame()
{
  return m_obj.CloseFrame( IDocumentFramePtr(m_pContainer) );
}


////-----------------------------------------------------------------------------
//// frMouseMove           -  
//// ---
//BOOL DocumentFrameEvent::MouseMove( short nShiftState, long x, long y )
//{
//  return TRUE;
//}

