/// <summary> /// Update node view to display and/or cache the IpcEvent /// </summary> /// <param name="evt"></param> private void UpdateNodeView(ITreeModelEvent evt) { try { _treeModel.AcquireLock("UpdateNodeView"); //pass update to the view if (_treeModel.DoesNodeExist(evt.NodeID)) { _treeModel.GetNode(evt.NodeID).NodeView.UpdateView(evt); } else throw new InvalidOperationException("Error updating node view: NodeID " + evt.NodeID + " does not exist"); } catch (Exception ex) { throw new InvalidOperationException("Failed to Update Node View: " + ex.Message); } finally { _treeModel.ReleaseLock(); } }
/// <summary> /// Add event to event queue /// </summary> /// <param name="evt"></param> public void AddEventToQueue(ITreeModelEvent evt) { _eventQueue.Enqueue(evt); }
/// <summary> /// Refresh tree model with any changes present in the IpcEvent /// </summary> /// <param name="evt"></param> private void RefreshTreeModel(ITreeModelEvent evt) { try { _treeModel.AcquireLock("RefreshTreeModel"); //check if node exists if (_treeModel.DoesNodeExist(evt.NodeID)) { // check if node text has changed if (_treeModel.HasNodeTextChanged(evt.NodeID, evt.NodeText)) { TreeModelNode node = _treeModel.GetNode(evt.NodeID); logger.Info("Node [" + evt.NodeID + "] [" + node.NodeText + "] text changed to: " + evt.NodeText); //update text _treeModel.UpdateNodeText(evt.NodeID, evt.NodeText); } } else { //adding new node logger.Info("Adding node [" + evt.NodeID + "]: " + evt.NodeText); //create a new node view ITreeModelNodeView nodeView = _nodeViewFactory.CreateNodeView(_callerSessionID); bool isRoot = false; if (evt.ParentNodeID.Trim().Length == 0) isRoot = true; else isRoot = false; if (evt.NodeID.Trim().Length == 0) throw new InvalidOperationException("Failed to add node ID [" + evt.NodeID + "] text [" + evt.NodeText + "]: NodeID is a required field to create a tree model node."); //create a new node TreeModelNode node = new TreeModelNode(evt.NodeID, evt.NodeText, evt.ParentNodeID, isRoot, nodeView, _treeModel); //add _treeModel.AddNode(node); } } catch (Exception ex) { throw new InvalidOperationException("Failed to Refresh Tree Model: " + ex.Message); } finally { _treeModel.ReleaseLock(); } }