/// <summary>
        /// Instantiates a new IpcEventTreeModelAdapter.
        /// </summary>
        /// <param name="formWindow"></param>
        /// <param name="formTreeView"></param>
        public IpcEventTreeModelAdapter(Forms.IpcTreeWebWindow formWindow, Forms.IpcEventMonitorMdiWindow mdiWindow, System.Windows.Forms.TreeView formTreeView)
        {
            _webURL = "file:///{0}/Html/IpcEventMonitorPane.html";

            _formWindow = formWindow;
            _mdiWindow = mdiWindow;
            _formTreeView = formTreeView;
            _webBrowser = _formWindow.WebBrowser1;

            //create utility bus
            _utilsBus = new Niawa.Utilities.UtilsServiceBus();

            //set up ipc logging for this class (to log events that occur in the tree model)
            _evtWriter = new Niawa.MsEventIpcEventAdapter.MsEventIpcEventWriter(_utilsBus);
            _evtWriter.Start();
            _evtWriter.AddIpcEventWriter(Niawa.IpcController.IpcFactory.CreateIpcEventWriter("IpcEventMonitor", true, "TreeModel", _utilsBus), "TreeModel");

            //instantiate view
            _view = new TreeModel.TreeModelViewImpl(_formWindow, _formTreeView);

            //instantiate node view factory
            _nodeViewFactory = new TreeModel.TreeModelNodeViewFactoryImpl(_webBrowser, _webURL);

            //instantiate tree model controller
            _treeModelController = new TreeModelNodeControls.TreeModelController(_view, _nodeViewFactory, _evtWriter.EvtConsumer, "IpcEventMonitor", string.Empty);
        }
        /// <summary>
        /// Instantiates an IpcEventThread
        /// </summary>
        /// <param name="ipcType"></param>
        /// <param name="treeModelController"></param>
        /// <param name="tsslStatus"></param>
        /// <param name="utilsBus"></param>
        public IpcEventTreeModelAdapterThread(string ipcType
            , Niawa.TreeModelNodeControls.TreeModelController treeModelController
            , System.Windows.Forms.ToolStripStatusLabel tsslStatus
            , Niawa.Utilities.UtilsServiceBus utilsBus
            , IpcEventTreeModelAdapter parentControl)
        {
            _treeModelController = treeModelController;
            _parentControl = parentControl;

            _ipcType = ipcType;
            _tsslStatus = tsslStatus;
            _utilsBus = utilsBus;
        }
        /// <summary>
        /// 
        /// </summary>
        public NiawaIpcEventTreeModelCacheAdapter()
        {
            _ipcEventQueue = new Queue<IpcController.IpcEvent>();

            //instantiate view
            _view = new TreeModelCache.TreeModelCViewImpl();

            //instantiate node view factory
            _nodeViewFactory = new TreeModelCache.TreeModelCNodeViewFactoryImpl();

            //instantiate tree model controller
            _treeModelController = new TreeModelNodeControls.TreeModelController(_view, _nodeViewFactory, null, "", "");
        }
        public void Test_NTMNC_TMC_Start()
        {
            //start up controller
            _controller = new TreeModelNodeControls.TreeModelController(_view, _nodeViewFactory, null, "", "");
            _controller.Start();

            System.Threading.Thread.Sleep(1000);

            //assertion
            Assert.IsTrue(_controller.IsThreadRunning);

            //cleanup
            _controller.Stop();
            _controller.Dispose();
        }
        /// <summary>
        /// Instantiates a NiawaIpcEventTreeModelAdapter.
        /// </summary>
        /// <param name="webPageSR"></param>
        public NiawaIpcEventTreeModelAdapter(NiawaSRHub webPageSR, NiawaIpcEventTreeModelAdapterPool adapterPool, string callerSessionID)
        {
            _lastUserActivity = DateTime.Now;
            _lastSessionPoll = DateTime.Now;
            _lastSessionPollAttempt = DateTime.Now;

            _adapterPool = adapterPool;
            _ipcEventQueue = new Queue<IpcController.IpcEvent>();

            _webPageSR = webPageSR;
            _callerSessionID = callerSessionID;

            //instantiate view
            _view = new TreeModel.TreeModelViewImpl(_webPageSR, callerSessionID);

            //instantiate node view factory
            _nodeViewFactory = new TreeModel.TreeModelNodeViewFactoryImpl();

            //instantiate tree model controller
            _treeModelController = new TreeModelNodeControls.TreeModelController(_view, _nodeViewFactory, null, "", callerSessionID);
        }
        public void Test_NTMNC_TMC_AddEventToQueue()
        {
            //start up controller
            _controller = new TreeModelNodeControls.TreeModelController(_view, _nodeViewFactory, null, "", "");
            _controller.Start();

            //create event
            IpcController.IpcEvent evt = new IpcController.IpcEvent(new Guid()
                    , DateTime.Now
                    , "TestApp"
                    , "TestInstance"
                    , "TestEventType"
                    , "Test Event Msg"
                    , "Test Event Msg Detail"
                    , "Test Node ID"
                    , "Test Parent Node ID");

            TestTreeModelEventImpl evnt = new TestTreeModelEventImpl(evt, "1", "TestNodeText", "2");

            //add to queue
            _controller.AddEventToQueue(evnt);

            System.Threading.Thread.Sleep(1000);

            //assertions
            Niawa.TreeModelNodeControls.TreeModelNode node = _controller.TreeModel.GetNode("1");
            Assert.AreEqual("1", node.NodeID, "Node created from event NodeID doesn't match expectation");
            Assert.AreEqual("2", node.ParentNodeID, "Node created from event ParentNodeID doesn't match expectation");
            Assert.AreEqual("TestNodeText", node.NodeText, "Node created from event NodeText doesn't match expectation");

            TestTreeModelNodeViewImpl view = (TestTreeModelNodeViewImpl) _controller.TreeModel.GetNode("1").NodeView;
            Assert.AreEqual(evnt, view.LatestEvent, "Event added to node doesn't match expectation when Latest Event interrogated");

            //cleanup
            _controller.Stop();
            _controller.Dispose();
        }