#ifdef __PRIVATE__
//#
//#	File:		DisptchB.idl
//#
//#	Contains:	Class definition for ODBaseDispatcher
//#
//#	Written by:	Richard Rodseth
//#
//#	Copyright:	c 1994 by Apple Computer, Inc., all rights reserved.
//#
//#	Change History (most recent first):
//#
//#		 <5>	 9/13/94	RR		#1183564 ODEventData should be inout
//#		 <4>	 8/15/94	JBS		1181156: UI API Cleanup
//#		 <3>	  8/4/94	eeh		bug 1177981: add GetDispatchModule
//#		 <2>	 6/16/94	RR		Added function prefix
//#		 <1>	  6/8/94	RR		first checked in
//#		 <2>	  6/7/94	RR		Privatise change log
//#		 <1>	  5/9/94	VL		first checked in
//#
//#	To Do:
//#
#else
//#	Copyright:	c 1993-1994 by Apple Computer, Inc., all rights reserved.
#endif

#ifndef _DISPATCHB_
#define _DISPATCHB_

#ifndef _ODOBJECT_
#include "ODObject.idl"
#endif

//=====================================================================================
// Classes defined in this interface
//=====================================================================================

interface  ODBaseDispatcher;

//=====================================================================================
// Classes used by this interface
//=====================================================================================

interface  ODDispatchModule;
interface  ODFacet;
interface  ODFrame;
interface  ODPart;
interface  ODSession;

//=====================================================================================
// ODDispatcher
//=====================================================================================

interface ODBaseDispatcher :  ODObject
{	
	void AddDispatchModule(in ODEventType eventType,
						   in ODDispatchModule dispatchModule); 
  
	ODDispatchModule GetDispatchModule(in ODEventType eventType); 
  
	void RemoveDispatchModule(in ODEventType eventType); 
  
	void AddMonitor(in ODEventType eventType, 
					in ODDispatchModule dispatchModule);
  
	void RemoveMonitor(in ODEventType eventType,
					   in ODDispatchModule dispatchModule); 
  
	ODBoolean Dispatch(inout ODEventData eventData); 
  
    void Exit(); 
  
	ODBoolean ShouldExit(); 

#ifdef __PRIVATE__

	void InitBaseDispatcher(in ODSession session);

#endif

#ifdef __SOMIDL__
	implementation
	{
  		functionprefix = ODBaseDispatcher;
		
		override:
			somInit,
			somUninit;
		
		releaseorder:
			AddDispatchModule,
			GetDispatchModule,
			RemoveDispatchModule,
			AddMonitor,
			RemoveMonitor,
			Dispatch,
			Exit,
			ShouldExit,
			RegisterIdle,
			UnregisterIdle,
			SetIdleFrequency,
			ODYield,
			SetMouseRegion,
			GetMouseRegion,
			InvalidateFacetUnderMouse,
			InvalidateMouseRegion,
			GetFacetUnderMouse,
			SetFacetUnderMouse,
			HandleNullEvent,
			GetSleepTime,
			MouseRegionIsInvalid,
			ComputeMouseRegion,
			CheckFacetUnderMouse,
		#ifdef __PRIVATE__
			InitBaseDispatcher;
		#else
			reserved1;
		#endif

		majorversion = 1; minorversion = 0;
		
  };
#endif
};


#endif //# _DISPATCHB_

