public List <IConversationTreeNode> Sort(IConversationTreeNode rootNode, ConversationTreeSortOrder sortOrder)
        {
            List <IConversationTreeNode>          list          = new List <IConversationTreeNode>();
            PriorityQueue <IConversationTreeNode> priorityQueue = new PriorityQueue <IConversationTreeNode>();

            this.AddNodeAndUnrelatedChildrenRecursively(priorityQueue, rootNode);
            while (priorityQueue.Count() > 0)
            {
                IConversationTreeNode conversationTreeNode = priorityQueue.Dequeue();
                if (conversationTreeNode.HasData)
                {
                    conversationTreeNode.SortOrder = sortOrder;
                    list.Add(conversationTreeNode);
                }
                foreach (IConversationTreeNode conversationTreeNode2 in conversationTreeNode.ChildNodes)
                {
                    if (conversationTreeNode.GetRelationTo(conversationTreeNode2) != ConversationTreeNodeRelation.Unrelated)
                    {
                        this.AddNodeAndUnrelatedChildrenRecursively(priorityQueue, conversationTreeNode2);
                    }
                }
            }
            if (sortOrder == ConversationTreeSortOrder.TraversalChronologicalDescending)
            {
                list.Reverse();
            }
            return(list);
        }
 // Token: 0x06002E99 RID: 11929 RVA: 0x0010A31C File Offset: 0x0010851C
 private void InternalExpandConversation(OwaStoreObjectId expId)
 {
     try
     {
         if (expId != null)
         {
             SortOrder sortOrder = SortOrder.Ascending;
             ConversationPartsList2 conversationPartsList = new ConversationPartsList2(sortOrder, base.UserContext, base.SearchScope);
             base.BindToFolder();
             ConversationTreeSortOrder sortOrder2 = base.UserContext.UserOptions.ShowTreeInListView ? ConversationTreeSortOrder.DeepTraversalAscending : ConversationUtilities.GetConversationTreeSortOrder(base.UserContext.UserOptions.ConversationSortOrder);
             conversationPartsList.ConversationPartsDataSource = new ConversationPartsDataSource(base.UserContext, conversationPartsList.Properties, base.DataFolder, expId, sortOrder2);
             conversationPartsList.ConversationPartsDataSource.Load();
             OwaStoreObjectId conversationId = expId;
             if (base.IsFiltered)
             {
                 conversationId = OwaStoreObjectId.CreateFromConversationId(expId.ConversationId, base.DataFolder, expId.InstanceKey);
             }
             conversationPartsList.RenderConversationParts(this.Writer, conversationId, base.ContextFolder, base.DataFolder);
         }
     }
     finally
     {
         this.EndProcessEvent();
     }
 }
Beispiel #3
0
 internal ConversationTree(ConversationTreeSortOrder sortOrder, IConversationTreeNode rootNode, IList <IConversationTreeNode> nodes, HashSet <PropertyDefinition> loadedProperties)
 {
     this.rootNode         = rootNode;
     this.nodes            = nodes;
     this.loadedProperties = loadedProperties;
     this.sortOrder        = sortOrder;
 }
Beispiel #4
0
        public IConversationTree GetNewestSubTree(IConversationTree conversationTree, int count)
        {
            if (count <= 0)
            {
                throw new ArgumentException("Count should be greater than 0", "count");
            }
            ExTraceGlobals.ConversationTracer.TraceDebug <int, int>((long)this.GetHashCode(), "ConversationTreeFactory.GetNewestSubTree: count: {0}, tree size: {1}", count, conversationTree.Count);
            if (count >= conversationTree.Count)
            {
                return(conversationTree);
            }
            IConversationTree         trimmedConversationTree = null;
            ConversationTreeSortOrder sortOrder = ConversationTreeSortOrder.ChronologicalDescending;

            conversationTree.ExecuteSortedAction(sortOrder, delegate(ConversationTreeSortOrder treeOriginalSortOrder)
            {
                List <IStorePropertyBag> list = new List <IStorePropertyBag>(count);
                foreach (IConversationTreeNode conversationTreeNode in conversationTree)
                {
                    if (count-- <= 0)
                    {
                        break;
                    }
                    list.AddRange(conversationTreeNode.StorePropertyBags);
                }
                trimmedConversationTree = this.Create(list, null);
                trimmedConversationTree.Sort(treeOriginalSortOrder);
            });
            return(trimmedConversationTree);
        }
Beispiel #5
0
        public void ExecuteSortedAction(ConversationTreeSortOrder sortOrder, SortedActionDelegate action)
        {
            ConversationTreeSortOrder treeOriginalSortOrder = this.sortOrder;

            this.Sort(sortOrder);
            action(treeOriginalSortOrder);
            this.Sort(treeOriginalSortOrder);
        }
Beispiel #6
0
 private List <IConversationTreeNode> CalculateFlatSortNodes(ConversationTreeSortOrder sortOrder)
 {
     if (ConversationTreeNodeBase.IsTraversalChronologicalSortOrder(sortOrder))
     {
         return(this.childNodeSorter.Sort(this, sortOrder));
     }
     return(this.FlatSortChildNodes(sortOrder));
 }
Beispiel #7
0
 private void TraversalSortChildNodes(ConversationTreeSortOrder sortOrder)
 {
     for (int i = 0; i < this.childNodes.Count; i++)
     {
         this.childNodes[i].SortChildNodes(sortOrder);
     }
     this.childNodes.Sort(delegate(IConversationTreeNode left, IConversationTreeNode right)
     {
         int num = ConversationTreeNodeBase.CompareNodesTraversal(left, right);
         return((sortOrder == ConversationTreeSortOrder.DeepTraversalAscending) ? num : (-1 * num));
     });
 }
Beispiel #8
0
        private IConversationTree BuildTree(IConversationTreeNode rootNode, IList <IConversationTreeNode> nodes = null, HashSet <PropertyDefinition> loadedProperties = null)
        {
            nodes            = (nodes ?? new List <IConversationTreeNode>());
            loadedProperties = (loadedProperties ?? new HashSet <PropertyDefinition>());
            ConversationTreeSortOrder sortOrder = ConversationTreeSortOrder.DeepTraversalAscending;

            foreach (IConversationTreeNode node in nodes)
            {
                rootNode.TryAddChild(node);
            }
            rootNode.SortChildNodes(sortOrder);
            return(this.InternalInstantiate(sortOrder, rootNode, nodes, loadedProperties));
        }
Beispiel #9
0
        private List <IConversationTreeNode> FlatSortChildNodes(ConversationTreeSortOrder sortOrder)
        {
            List <IConversationTreeNode> flatSortNodes = new List <IConversationTreeNode>(0);

            this.ApplyActionToChild(delegate(IConversationTreeNode treeNode)
            {
                treeNode.SortOrder = sortOrder;
                if (treeNode.HasData)
                {
                    flatSortNodes.Add(treeNode);
                }
            });
            ConversationTreeNodeBase.SortByDate(flatSortNodes, sortOrder == ConversationTreeSortOrder.ChronologicalAscending);
            return(flatSortNodes);
        }
Beispiel #10
0
 public void SortChildNodes(ConversationTreeSortOrder sortOrder)
 {
     if (this.SortOrder == sortOrder)
     {
         return;
     }
     if (ConversationTreeNodeBase.IsChronologicalSortOrder(sortOrder))
     {
         this.FlatSortNodes = this.CalculateFlatSortNodes(sortOrder);
     }
     else
     {
         this.TraversalSortChildNodes(sortOrder);
     }
     this.SortOrder = sortOrder;
 }
 internal ConversationPartsDataSource(UserContext context, Hashtable properties, Folder folder, OwaStoreObjectId conversationId, QueryFilter filter, ConversationTreeSortOrder sortOrder) : base(context, false, properties, folder, null, filter)
 {
     this.conversationId = conversationId;
     this.sortOrder      = sortOrder;
 }
 internal ConversationPartsDataSource(UserContext context, Hashtable properties, Folder folder, OwaStoreObjectId conversationId, ConversationTreeSortOrder sortOrder) : this(context, properties, folder, conversationId, null, sortOrder)
 {
 }
Beispiel #13
0
 protected virtual IConversationTree InternalInstantiate(ConversationTreeSortOrder sortOrder, IConversationTreeNode rootNode, IList <IConversationTreeNode> nodes, HashSet <PropertyDefinition> loadedProperties)
 {
     return(new ConversationTree(sortOrder, rootNode, nodes, loadedProperties));
 }
Beispiel #14
0
 public void Sort(ConversationTreeSortOrder sortOrder)
 {
     EnumValidator.ThrowIfInvalid <ConversationTreeSortOrder>(sortOrder, "sortOrder");
     this.sortOrder = sortOrder;
     this.rootNode.SortChildNodes(sortOrder);
 }
Beispiel #15
0
 private static bool IsTraversalChronologicalSortOrder(ConversationTreeSortOrder sortOrder)
 {
     return(sortOrder == ConversationTreeSortOrder.TraversalChronologicalAscending || sortOrder == ConversationTreeSortOrder.TraversalChronologicalDescending);
 }