/// <summary>
 /// Loads the next depth for node.
 /// </summary>
 /// <param name="node">The node.</param>
 protected override void LoadNextDepthForNode(UPMCoINode node)
 {
     this.currentNodeLoader             = new CoINodeLoader(node, this.ViewReference, 0, 0, this.vistedNodes);
     this.currentNodeLoader.TheDelegate = this;
     this.currentNodeLoader.Mode        = CoINodeLoaderMode.Reload;
     this.currentNodeLoader.LoadNodeSubNodes();
 }
        /// <summary>
        /// Nodeses the loaded succesfull.
        /// </summary>
        /// <param name="nodeloader">The nodeloader.</param>
        public override void NodesLoadedSuccesfull(CoIBaseNodeLoader nodeloader)
        {
            if (nodeloader.Mode == CoINodeLoaderMode.InitialLoad)
            {
                UPMCircleOfInfluencePage newPage = this.CreatePageInstance();
                newPage.RootNode       = this.currentNodeLoader.RootNode;
                newPage.Invalid        = false;
                newPage.ConfigProvider = ((UPMCircleOfInfluencePage)this.Page).ConfigProvider;
                UPMCircleOfInfluencePage oldPage = (UPMCircleOfInfluencePage)this.Page;
                this.TopLevelElement = newPage;
                if (!oldPage.Invalid && oldPage.RootNode.Invalid)
                {
                    // return from edit
                    newPage.RefreshedNode = newPage.RootNode;
                    this.InformAboutDidChangeTopLevelElement(oldPage, newPage, new List <IIdentifier> {
                        oldPage.RootNode.Identifier
                    }, null);
                }
                else
                {
                    this.InformAboutDidChangeTopLevelElement(oldPage, newPage, null, null);
                }
            }
            else if (this.currentNodeLoader.Mode == CoINodeLoaderMode.Reload)
            {
                this.InformAboutDidChangeTopLevelElement(this.Page, this.Page, this.currentNodeLoader.ChangedIdentifiers, null);
            }

            this.currentNodeLoader = null;
        }
 private void FillPageWithResult(UPCRMResult result)
 {
     this.vistedNodes = new Dictionary <IIdentifier, UPMCoINode>();
     if (result.RowCount == 1)
     {
         UPCRMResultRow row      = (UPCRMResultRow)result.ResultRowAtIndex(0);
         UPMCoINode     rootNode = CoINodeLoader.CreateRootNodeFromResultRow(row, this.RootRecordIdentification, 0, this.expandChecker);
         this.vistedNodes[rootNode.Identifier] = rootNode;
         if (this.MaxDepth > 0)
         {
             this.currentNodeLoader             = new CoINodeLoader(rootNode, this.ViewReference, 0, this.MaxDepth, this.vistedNodes);
             this.currentNodeLoader.TheDelegate = this;
             this.currentNodeLoader.Mode        = CoINodeLoaderMode.InitialLoad;
             this.currentNodeLoader.LoadNodeSubNodes();
         }
         else
         {
             // Finished loading
             UPMCircleOfInfluencePage newPage = this.CreatePageInstance();
             newPage.RootNode       = rootNode;
             newPage.Invalid        = false;
             newPage.ConfigProvider = ((UPMCircleOfInfluencePage)this.Page).ConfigProvider;
             UPMCircleOfInfluencePage oldPage = (UPMCircleOfInfluencePage)this.Page;
             this.TopLevelElement = newPage;
             if (!oldPage.Invalid && oldPage.RootNode.Invalid)
             {
                 // return from edir
                 newPage.RefreshedNode = newPage.RootNode;
                 this.InformAboutDidChangeTopLevelElement(oldPage, newPage, new List <IIdentifier> {
                     oldPage.RootNode.Identifier
                 }, null);
             }
             else
             {
                 this.InformAboutDidChangeTopLevelElement(oldPage, newPage, null, null);
             }
         }
     }
     else
     {
         // Request Mode Offline and jump To Online Node
         if (result.RowCount == 0 && this.RequestOption == UPRequestOption.Offline)
         {
             // Offline Configured and Online Record
             UPMCircleOfInfluencePage newPage = this.CreatePageInstance();
             newPage.Status = UPMMessageStatus.MessageStatusWithMessageDetails(string.Empty, LocalizedString.TextOfflineNotAvailable);
             UPMCircleOfInfluencePage oldPage = (UPMCircleOfInfluencePage)this.Page;
             this.TopLevelElement = newPage;
             this.InformAboutDidChangeTopLevelElement(oldPage, newPage, null, null);
         }
     }
 }
 protected override void CreateSubNodeLoadForNodeEdgeRow(UPMCoINode node, UPMCoIEdge edge, UPCRMResultRow row)
 {
     this.vistedNodes.SetObjectForKey(node, node.Identifier);
     this.RootNode.AddChildNodeChildRelation(node, edge);
     this.ChangedIdentifiers.Add(node.Identifier);
     if (this.depth < this.maxDepth)
     {
         this.pendingCount++;
         CoINodeLoader loader = new CoINodeLoader(node, this.viewReference, this.depth + 1, -1, this.vistedNodes);
         loader.Mode = CoINodeLoaderMode.SubNodeLoader;
         loader.fiResultColumnIndex = this.fiResultColumnIndex;
         loader.kpResultColumnIndex = this.kpResultColumnIndex;
         this.subNodeLoader.Add(loader);
         loader.TheDelegate = this;
     }
 }