public void InitializeTheList(IStateManager stateManager, IPageManager pageManager, IReferenceManager refManager, ISurrogateManager surManager, IUniqueIDGenerator uniqueIdGenerator, IServerEventAggregator serverEventAggregator)
 {
     _stateManager          = stateManager;
     _pageManager           = pageManager;
     _referenceManager      = refManager;
     _surrogateManager      = surManager;
     _uniqueIdGenerator     = uniqueIdGenerator;
     _serverEventAggregator = serverEventAggregator;
     InitializeOperationHelper();
 }
示例#2
0
 private object GetLazyObjectFor(object item, IStateManager stateManager, IServerEventAggregator serverAggregator = null)
 {
     if (serverAggregator != null)
     {
         return(new LazyObject(item, stateManager, serverAggregator));
     }
     else
     {
         return(new LazyObject(item, stateManager));
     }
 }
 internal LazyObject(object obj, IStateManager statemanager, IServerEventAggregator ea)
 {
     this._obj = obj;
     ea.SubsribeEvent(this);
     this.StateManager = statemanager;
 }
示例#4
0
        /// <summary>
        /// Insert the element into the correct position of the page
        /// </summary>
        /// <param name="index">This is the index of the list, not the index where the element will be inserted in the page</param>
        /// <param name="item">The item that should be stored into the page</param>
        protected void InsertElementToPage(int index, object item, Page page, int initialPosition, IStateManager stateManager, IUniqueIDGenerator uniqueIDGenerator, IServerEventAggregator serverAggregator)
        {
            int realPageIndex = index - initialPosition;
            var stateObject   = item as IStateObject;

            //The item is not promoted yet.
            //We are going to promote the item.
            if (stateObject != null)
            {
                // This means that the stateobject is a temporal object. so it is in the tempcache
                if (!stateManager.IsStateObjectAttached(stateObject))
                {
                    stateManager.PromoteObject(stateObject, uniqueIDGenerator.GetPageItemUniqueID());
                    page.InsertSafe(realPageIndex, GetLazyObjectFor(item, stateManager));
                }
                else
                {
                    var itemAsStateObject = item as IStateObject;
                    //If the item is in elements to remove
                    //this means that the item has been unsubscribed previously,
                    //so we have to take it out from elements to remove and promote again all its dependants
                    if (stateManager.IsInElementsToRemove(itemAsStateObject.UniqueID))
                    {
                        stateManager.PromoteListItem(itemAsStateObject.UniqueID, item as IStateObject, true, new HashSet <string>());
                    }
                    //Is all branches attached
                    page.InsertSafe(realPageIndex, GetLazyObjectFor(item, stateManager));
                }
            }
            else
            {
                page.InsertSafe(realPageIndex, GetLazyObjectFor(item, stateManager));
            }
            stateManager.MarkAsDirty(page, "StoredObjects");
        }