/* @(#)Z 1.2 com/src/ui/idl/Arbitrat.idl, odui, od96nt, odnt9712d 97/03/21 16:49:38 (96/07/15 18:28:15) */


#ifndef _ARBITRAT_
#define _ARBITRAT_

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

//=====================================================================================
// Class defined in this interface
//=====================================================================================

interface  ODArbitrator;

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

interface  ODFocusModule;
interface  ODFocusSet;
interface  ODFocusOwnerIterator;
interface  ODFrame;



//=====================================================================================
// Class ODArbitrator
//=====================================================================================

interface ODArbitrator :  ODObject
{    
   ODBoolean RequestFocusSet(in ODFocusSet focusSet,
   							  in ODFrame requestingFrame);

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

   void RelinquishFocusSet(in ODFocusSet focusSet,
   						   in ODFrame relinquishingFrame);

   void RelinquishFocus(in ODTypeToken focus,
   						in ODFrame relinquishingFrame);

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

   void TransferFocusSet(in ODFocusSet focusSet, 
   						in ODFrame transferringFrame,
						in ODFrame newOwner);

   ODFrame AcquireFocusOwner(in ODTypeToken focus);

   ODFocusOwnerIterator CreateOwnerIterator(in ODTypeToken focus);

   void RegisterFocus(in ODTypeToken focus,
   					  in ODFocusModule focusModule);

   void UnregisterFocus(in ODTypeToken focus);

   ODBoolean IsFocusRegistered(in ODTypeToken focus);

   ODBoolean IsFocusExclusive(in ODTypeToken focus);

   ODFocusModule GetFocusModule(in ODTypeToken focus);

   ODFocusSet CreateFocusSet();


#ifdef __SOMIDL__
	implementation
	{
		majorversion = 1; minorversion = 0;

		functionprefix = ODArbitrator;

		override:
			somUninit,
			Purge;
		releaseorder:
			RequestFocusSet,
			RequestFocus,
			RelinquishFocusSet,
			RelinquishFocus,
			TransferFocus,
			TransferFocusSet,
			AcquireFocusOwner,
			CreateOwnerIterator,
			RegisterFocus,
			UnregisterFocus,
			IsFocusRegistered,
			IsFocusExclusive,
			GetFocusModule,
			CreateFocusSet,
			reserved1;


  };
#endif 
};

#endif 
