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(); }
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; }
/// <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"); }