////////////////////////////////////////////////////////////////////////////////
//
//  
//
////////////////////////////////////////////////////////////////////////////////
#ifndef _DOCUMENTEVENT_H
#define _DOCUMENTEVENT_H

#ifndef _ABASEEVENT_H
#include "aBaseEvent.h"
#endif


#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000



////////////////////////////////////////////////////////////////////////////////
//
// DocumentEvent  -    
//
////////////////////////////////////////////////////////////////////////////////
class DocumentEvent : public cBaseEvent
{

public:
	DocumentEvent( reference p);           
  virtual ~DocumentEvent();

// Operations
public:
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(DocumentEvent)
	//}}AFX_VIRTUAL
  virtual   LPUNKNOWN GetUnknown();
// Implementation

	BEGIN_INTERFACE_PART(DocumentFileNotify, IDocumentFileNotify)
		INIT_INTERFACE_PART(DocumentEvent, DocumentFileNotify)
    //      notifyType
    STDMETHOD_(VARIANT_BOOL, IsNotifyProcess)( int notifyType );

  //kdBeginCloseDocument  -    
    STDMETHOD_(VARIANT_BOOL, BeginCloseDocument)();
  
    //kdCloseDocument       -   
    STDMETHOD_(VARIANT_BOOL, CloseDocument)();

    //kdBeginSaveDocument   -    
    STDMETHOD_(VARIANT_BOOL, BeginSaveDocument)( LPSTR docName );

    //kdSaveDocument        -   
    STDMETHOD_(VARIANT_BOOL, SaveDocument)();

    //kdActiveDocument        -   
    STDMETHOD_(VARIANT_BOOL, Activate)();

    //kdDeactiveDocument     -   .
    STDMETHOD_(VARIANT_BOOL, Deactivate)();

    //kdBeginSaveAsDocument  -     .
    STDMETHOD_(VARIANT_BOOL, BeginSaveAsDocument)();

    //kdDocumentFrameOpen    -   .
    STDMETHOD_(VARIANT_BOOL, DocumentFrameOpen)( LPUNKNOWN v );

    //kdProcessActivate      -  
    STDMETHOD_(VARIANT_BOOL, ProcessActivate)( long Id);

    //kdProcessDeactivate    -  
    STDMETHOD_(VARIANT_BOOL, ProcessDeactivate)( long Id);

    END_INTERFACE_PART(DocumentFileNotify)
	
};

class Document2DEvent : public cBaseEvent { // DocumentEvent {
//	bool                      m_advise3D;     // true -  Advise
//  NotifyConnectionParam     m_params3D;     //  
// Attributes
public:
	Document2DEvent( reference p );           
  virtual ~Document2DEvent();

// Operations
public:
	
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(DocumentEvent)
	//}}AFX_VIRTUAL
  virtual  LPUNKNOWN GetUnknown();
	BEGIN_INTERFACE_PART( Document2DNotify, IDocument2DNotify )
		INIT_INTERFACE_PART(Document2DEvent, Document2DNotify)
  
      STDMETHOD_(VARIANT_BOOL, BeginRebuild)();
      STDMETHOD_(VARIANT_BOOL, Rebuild)();
	    STDMETHOD_(VARIANT_BOOL, BeginChoiceMaterial)();
	    STDMETHOD_(VARIANT_BOOL, ChoiceMaterial)( LPSTR material, double density);
	    STDMETHOD_(VARIANT_BOOL, BeginInsertFragment)();
      STDMETHOD_(VARIANT_BOOL, LocalFragmentEdit)(long pDoc, VARIANT_BOOL newFrw );
      //      notifyType
      STDMETHOD_(VARIANT_BOOL, IsNotifyProcess)( int notifyType );

	END_INTERFACE_PART(Document2DNotify)
 
  
};

class Document3DEvent : public cBaseEvent { // DocumentEvent {
public:
	Document3DEvent( reference p, LPUNKNOWN doc = NULL );           
  virtual ~Document3DEvent();

// Operations
public:
	
  	
// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(DocumentEvent)
	//}}AFX_VIRTUAL
  virtual  LPUNKNOWN GetUnknown();
	BEGIN_INTERFACE_PART( Document3DNotify, IDocument3DNotify )
		INIT_INTERFACE_PART(Document3DEvent, Document3DNotify)
  
      STDMETHOD_(VARIANT_BOOL, BeginRebuild)( THIS_ );
      STDMETHOD_(VARIANT_BOOL, rebuild)( THIS_ );
	    STDMETHOD_(VARIANT_BOOL, BeginChoiceMaterial)( THIS_ );
	    STDMETHOD_(VARIANT_BOOL, ChoiceMaterial)( THIS_ LPSTR material, double density );
	    STDMETHOD_(VARIANT_BOOL, BeginChoiceMarking)( THIS_ );
	    STDMETHOD_(VARIANT_BOOL, ChoiceMarking)( THIS_ LPSTR marking );
	    STDMETHOD_(VARIANT_BOOL, BeginSetPartFromFile)( THIS_ );
	    STDMETHOD_(VARIANT_BOOL, BeginCreatePartFromFile)( THIS_ VARIANT_BOOL typeDoc, IEntity * plane );
      //      notifyType
      STDMETHOD_(VARIANT_BOOL, IsNotifyProcess)( THIS_ int notifyType );

	END_INTERFACE_PART(Document3DNotify)
 
  
};


cBaseEvent* NewDocumentEvent( reference doc );
cBaseEvent* NewDocument2DEvent( reference doc );
cBaseEvent* NewDocument3DEvent( reference doc );

 
/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif 
