private void RemoveBusinessObjectFromCollectionNode (IBusinessObjectCollection businessObjectCollection, IBusinessObject businessObject) { if (businessObjectCollection != null && ChildCollectionNodes.ContainsKey(businessObjectCollection)) { NodeState nodeState = ChildCollectionNodes[businessObjectCollection]; if (nodeState.IsLoaded) { RemoveBusinessObjectNode(businessObject); } else { UpdateNodeDummy(nodeState, businessObjectCollection.Count); } } }
///<summary> /// Cleans up the tree view by derigistering for all BusinessObject events and removing /// all nodes. ///</summary> public void CleanUp() { foreach (KeyValuePair <IBusinessObject, NodeState> objectNode in ObjectNodes) { IBusinessObject businessObject = objectNode.Key; UnRegisterForBusinessObjectEvents(businessObject); } ObjectNodes.Clear(); foreach (KeyValuePair <IBusinessObjectCollection, NodeState> collectionNode in ChildCollectionNodes) { IBusinessObjectCollection businessObjectCollection = collectionNode.Key; UnRegisterForBusinessObjectCollectionEvents(businessObjectCollection); } ChildCollectionNodes.Clear(); RelationshipNodes.Clear(); RootNodeBusinessObject = null; }
private void AddBusinessObjectToCollectionNode (IBusinessObjectCollection businessObjectCollection, IBusinessObject businessObject) { if (businessObjectCollection != null && ChildCollectionNodes.ContainsKey(businessObjectCollection)) { NodeState nodeState = ChildCollectionNodes[businessObjectCollection]; if (nodeState.IsLoaded) { ITreeNode node = nodeState.Node; AddBusinessObjectNode(node.Nodes, businessObject); } else { UpdateNodeDummy(nodeState, businessObjectCollection.Count); } } }
private void SetupRelationshipNodeDummy(IRelationship relationship, NodeState nodeState) { int childCount = 0; if (relationship is IMultipleRelationship) { IMultipleRelationship multipleRelationship = (IMultipleRelationship)relationship; IBusinessObjectCollection businessObjectCollection = multipleRelationship.BusinessObjectCollection; ChildCollectionNodes.Add(businessObjectCollection, nodeState); RegisterForBusinessObjectCollectionEvents(businessObjectCollection); childCount = businessObjectCollection.Count; } else { //TODO: Do something decent with Single Relationship Updated Event ISingleRelationship singleRelationship = (ISingleRelationship)relationship; if (singleRelationship.HasRelatedObject()) { childCount = 1; } } UpdateNodeDummy(nodeState, childCount); }
private void RemoveRelationshipNode(IRelationship relationship) { this.RelationshipNodes.Remove(relationship); if (relationship is IMultipleRelationship) { IMultipleRelationship multipleRelationship = (IMultipleRelationship)relationship; IBusinessObjectCollection children = multipleRelationship.BusinessObjectCollection; ChildCollectionNodes.Remove(children); foreach (IBusinessObject businessObject in children.Clone()) { RemoveBusinessObjectNode(businessObject); } } else { ISingleRelationship singleRelationship = (ISingleRelationship)relationship; IBusinessObject businessObject = singleRelationship.GetRelatedObject(); if (businessObject != null) { RemoveBusinessObjectNode(businessObject); } } }