#ifdef __PRIVATE__
//#
//#	File:		FocusMod.idl
//#
//#	Contains:	Class definition for ODFocusModule
//#
//#	Written by:	Richard Rodseth
//#
//#	Copyright:	c 1994 by Apple Computer, Inc., all rights reserved.
//#
//#	Change History (most recent first):
//#
//#		 <5>	  9/2/94	RR		#1184275 Pass transferringFrame and
//#									newOwner to focusModule::TransferFocus
//#		 <4>	 8/15/94	JBS		1181174: added TranferFocusOwnership()
//#		 <3>	 9/26/94	RR		Added fInitialized
//#		 <2>	 6/16/94	RR		Added function prefix
//#		 <1>	  6/8/94	RR		first checked in
//#		 <3>	  6/7/94	RR		Privatise change log
//#
//#	To Do:
//#
#else
//#	Copyright:	c 1993-1994 by Apple Computer, Inc., all rights reserved.
#endif

#ifndef _FOCUSMOD_
#define _FOCUSMOD_

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

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

interface  ODFocusModule;

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

interface  ODSession;
interface  ODFrame;
interface  ODFocusOwnerIterator;

//=====================================================================================
// Class ODFocusModule
//=====================================================================================

interface ODFocusModule : ODObject
{
	void InitFocusModule(in ODSession session);

	ODBoolean IsFocusExclusive(in ODTypeToken focus);

	void SetFocusOwnership(in ODTypeToken focus, in ODFrame frame);

	void UnsetFocusOwnership(in ODTypeToken focus, in ODFrame frame);

	void TransferFocusOwnership(in ODTypeToken focus, 
								in ODFrame transferringFrame,
					  			in ODFrame newOwner);

	ODFrame GetFocusOwner(in ODTypeToken focus);

	ODFocusOwnerIterator CreateOwnerIterator(in ODTypeToken focus);

	ODBoolean BeginRelinquishFocus(in ODTypeToken focus,
								   in ODFrame requestingFrame);

	void CommitRelinquishFocus(in ODTypeToken focus,
							   in ODFrame requestingFrame);

	void AbortRelinquishFocus(in ODTypeToken focus,
							  in ODFrame requestingFrame);

#ifdef __SOMIDL__
	implementation
  	{
  		functionprefix = ODFocusModule;

	override:
		 	somInit,
		 	somUninit;
		 
   	releaseorder:
        InitFocusModule,
        IsFocusExclusive,
        SetFocusOwnership,
        UnsetFocusOwnership,
		TransferFocusOwnership,
		GetFocusOwner,
        CreateOwnerIterator,
        BeginRelinquishFocus,
        CommitRelinquishFocus,
        AbortRelinquishFocus;
		
    #ifdef __PRIVATE__
		ODSession  fSession;
		ODBoolean  fInitialized;
    #endif

  	};
#endif
};

#endif //# _FOCUSMOD_
