#ifdef __PRIVATE__
//#	File:		ODTlObj.h
//#
//#	Contains:	ODToolSpaceObj class definition
//#
//#	Written by:	Jeff Hanson
//#
//#	Copyright:	c 1994-95 by Novell, Inc., all rights reserved.
//#
//#	Change History (most recent first):
//#
//#		 <1>	 3/3/95	JH		Created
//#
//#	To Do:
#else
//#	Copyright:	c 1994-1995 by Novell, Inc., all rights reserved.
#endif

#ifndef _ODTLOBJ_
#define _ODTLOBJ_

#ifndef _REFCTOBJ_
#include "RefCtObj.idl"
#endif

//==============================================================================
// Theory of Operation
//==============================================================================

/*
	This class defines toolspace used with ODToolSpaceManager.
*/

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

interface ODToolSpaceObj;

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

interface ODSession;
interface ODToolSpaceManager;
interface ODShape;
interface ODFacet;
interface ODFrame;
interface ODPart;
interface ODToolWindow;

//=====================================================================================
// Implementation Types
//=====================================================================================

#ifdef __PRIVATE__
typedef somToken ODToolSpaceDomain;
typedef somToken ODToolSpacePos;
#endif

//==============================================================================
// ODToolSpaceObj
//==============================================================================

interface ODToolSpaceObj : ODRefCntObject
{
	void InitToolSpaceObj(in ODToolSpaceDomain tsDomain, in ODPart requestingPart, in ODShape aShape, 
										in ODToolSpaceManager aTSMgr, in ODToolSpacePos thePos, in ODShape frameShape);

 	ODToolSpaceDomain GetDomain();

	void SetDomain(in ODToolSpaceDomain tsDomain);

	ODShape GetShape();

	ODToolWindow GetToolSpaceWindow();

	void SetToolSpaceWindow(in ODToolWindow aToolWindow);

	ODToolSpaceManager GetToolSpaceManager();

	ODPlatformWindow GetPlatformWindow();

	void SetPlatformWindow(in ODPlatformWindow aWnd);

	ODToolSpacePos GetPosition();

	void SetPosition(in ODToolSpacePos aPosition);

	ODToolWindow CreateToolWindow(in ODPart requestingPart, in ODPlatformWindow parent);

	void Draw(in ODPlatformCanvas aPltfrmCanvas);

	void Show(in ODUShort showState);

	void RepositionInWindow(in ODPlatformWindow aWnd);

	void FrameShapeResized(in ODShape frameShape);

	void FrameShapeMoved(in ODShape frameShape);

	ODPart GetRootPart();

	ODFrame GetRootFrame();

	ODFacet GetRootFacet();

	void SetRootPart(in ODPart aPart);

	void SetRootFrame(in ODFrame frame);

	void SetRootFacet(in ODFacet facet);

	ODBoolean SetSizePos(in ODCoordinate newLeft, in ODCoordinate newTop, 
									in ODCoordinate newWidth, in ODCoordinate newHeight, in ODToolSpacePos thePos);

#ifdef __SOMIDL__
	implementation
	{
  	functionprefix = ODToolSpaceObj;

    override:
		somInit,
		somUninit,
		Release,
		Purge;

    releaseorder:
		InitToolSpaceObj,
	 	GetDomain,
		SetDomain,
		GetShape,
		GetToolSpaceWindow,
		GetToolSpaceManager,
		GetPlatformWindow,
		GetPosition,
		SetPosition,
		CreateToolWindow,
		Draw,
		Show,
		RepositionInWindow,
		FrameShapeResized,
		FrameShapeMoved,
		GetRootPart,
		GetRootFrame,
		GetRootFacet,
		SetRootPart,
		SetRootFrame,
		SetRootFacet,
		SetSizePos,
		SetPlatformWindow,
		SetToolSpaceWindow;

    #ifdef __PRIVATE__
		ODToolSpaceDomain		fDomain;
		ODShape					fShape;
		ODToolWindow			fToolWindow;
		ODToolSpaceManager		fToolSpaceManager;
		ODSession				fSession;
		ODToolSpacePos			fPosition;
		ODShape					fFrameShape;
		ODRect					fParentClientRect;
		ODRect					fParentPlacementRect;
	#endif
  	};
#endif
};

#endif
