protected virtual void Dispose(bool isDisposing)
        {
            if (isDisposing)
            {
                //logs the collection termination
                ProFitData.gFRWKSVC.SysLog("CCollectin::Terminate", LogLevel.logAudit2);

                //tell framework to release the ClassInfo
                mClassInfo.lRelease();

                //clean up code - dereference all module level collections/arrays/collections

                if (mClassInfo != null)
                {
                    mClassInfo.Dispose();
                    mClassInfo = null;
                }
                if (mView != null)
                {
                    mView.Dispose();
                    mView = null;
                }
                if (mData != null)
                {
                    mData.Dispose();
                    mData = null;
                }
                if (Parent != null)
                {
                    Parent = null;
                }
            }
        }
        protected virtual void Dispose(bool isDisposing)
        {
            if (isDisposing)
            {
                ProFitData.gFRWKSVC.SysLog("CTemplateView::Terminate", LogLevel.logDebug3); //   ///template

                if (mCurForm != null)
                {
                    mCurForm.Dispose();
                    mCurForm = null;
                }
                if (mParent != null)
                {
                    mParent.Dispose();
                    mParent = null;
                }
                if (mData != null)
                {
                    mData.Dispose();
                    mData = null;
                }
            }
        }
        //Author:    Mandy Ossana
        //Purpose:   Handles the notification that the implementation class wants to teminate
        //Written:   3-22-2000
        //Modifications:
        //000        MV4772              Initial release
        internal int lShutDownFromParent()
        {
            //init error handler
            int result = ProFitData.PFT_FAILURE;

            try
            {
                //log entrance
                ProFitData.gFRWKSVC.SysLog("CCollectionView::lShutDownFromParent - Entrance", LogLevel.logAudit2);

                //local variables
                int lStatus = 0;

                //determine if mcurForm's reference is good
                if (mCurForm != null)
                {
                    //request that the view be release
                    lStatus = mCurForm.ShutDownFromView();
                    //check the status
                    if (lStatus != ProFitData.PFT_SUCCESS)
                    {
                        //log the shut down problem
                        ProFitData.gFRWKSVC.SysLog("CCollectionView::lShutDownFromParent - mcurForm.ShutDownFromView failed", LogLevel.logDebug3);
                        ProFitData.gFRWKSVC.SysLog("CCollectionView::lShutDownFromParent - lStatus:  " + lStatus.ToString(), LogLevel.logDebug3);
                    }
                }

                //log a success
                ProFitData.gFRWKSVC.SysLog("CCollectionView::lShutDownFromParent - Normal Termination", LogLevel.logAudit2);
                //return success
                //normal termination
                return(ProFitData.PFT_SUCCESS);
            }
            catch (System.Exception _exception_)
            {
                Cerner.Foundations.Logging.ExceptionReporting.ReportException(_exception_);

                //abnormal termination
                if (result == ProFitData.PFT_SUCCESS)
                {
                    result = ProFitData.PFT_FAILURE;
                }
                ProFitData.gFRWKSVC.SysLog("cCollectionView::lShutDownFromParent - abnormal termination", LogLevel.logAudit2);

                return(result);
            }
            finally
            {
                //cleanup code
                if (mParent != null)
                {
                    mParent.Dispose();
                    mParent = null;
                }
                if (mData != null)
                {
                    mData.Dispose();
                    mData = null;
                }
                if (mCurForm != null)
                {
                    mCurForm.Dispose();
                    mCurForm = null;
                }
            }
        }