Ejemplo n.º 1
0
 public void OrderModified(LogicalOrder order)
 {
     if (order.IsActive)
     {
         // Any change to an active order even if only
         // a price change means the list change.
         IsActiveOrdersChanged = true;
         if (!activeOrders.Contains(order))
         {
             var  newNode = nodePool.Create(order);
             bool found   = false;
             var  next    = activeOrders.First;
             for (var node = next; node != null; node = next)
             {
                 next = node.Next;
                 LogicalOrder other = node.Value;
                 if (order.CompareTo(other) < 0)
                 {
                     activeOrders.AddBefore(node, newNode);
                     found = true;
                     break;
                 }
             }
             if (!found)
             {
                 activeOrders.AddLast(newNode);
             }
         }
     }
     else
     {
         var node = activeOrders.Find(order);
         if (node != null)
         {
             activeOrders.Remove(node);
             nodePool.Free(node);
             // Since this order became inactive, it
             // means the active list changed.
             IsActiveOrdersChanged = true;
         }
     }
     if (order.IsNextBar)
     {
         if (!nextBarOrders.Contains(order))
         {
             nextBarOrders.Add(order);
         }
     }
     else
     {
         if (nextBarOrders.Contains(order))
         {
             nextBarOrders.Remove(order);
         }
     }
     ActiveOrdersChanged(order);
 }
Ejemplo n.º 2
0
        bool MoveCurrentTo(int position, bool force, bool cancellable)
        {
            if (DeferCurrentChanged)
            {
                return(false);
            }

            object newItem     = ItemAtIndex(position);
            bool   raiseEvents = force || CurrentItem != newItem;

            if (raiseEvents)
            {
                CurrentChangingEventArgs e = new CurrentChangingEventArgs(cancellable && ActiveList.Contains(CurrentItem));
                RaiseCurrentChanging(e);
                if (e.Cancel)
                {
                    return(true);
                }
            }

            IsCurrentAfterLast   = position == ActiveList.Count || ActiveList.Count == 0;
            IsCurrentBeforeFirst = position == -1 || ActiveList.Count == 0;
            UpdateCurrentPositionAndItem(position, newItem);

            if (raiseEvents)
            {
                RaiseCurrentChanged(EventArgs.Empty);
            }

            return(IsValidSelection);
        }
Ejemplo n.º 3
0
 public override bool Contains(object item)
 {
     ThrowIfDeferred();
     return(ActiveList.Contains(item));
 }