예제 #1
0
 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);
         }
     }
 }
예제 #2
0
 ///<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;
 }
예제 #3
0
 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);
         }
     }
 }
예제 #4
0
        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);
        }
예제 #5
0
 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);
         }
     }
 }