/// <summary> /// Raises the GetNextDataBlock event /// </summary> /// <param name="args"></param> private void OnGetNextDataBlock(GetNextNodeDataBlockEventArgs args) { if (!mRaiseEventsFlag) { return; } EventHandler<GetNextNodeDataBlockEventArgs> handler = GetNextDataBlock; if (handler != null) { handler(this, args); } }
/// <summary> /// Process the GetNextDataBlock event from the Tree. Finds the corresponding next data block /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected virtual void ProcessTreeGetNextDataBlock(object sender, GetNextNodeDataBlockEventArgs e) { List<KeyValuePair<string, Oid>> lOidPathList = new List<KeyValuePair<string, Oid>>(e.CompleteOidPath); IUQueryContext queryContext = null; if (IsRootNode(lOidPathList)) { TreeNodeController lNodeController = GetNodeById(lOidPathList[0].Key); if (lNodeController == null) { return; } queryContext = lNodeController.QueryContext; } else { lOidPathList.Reverse(); queryContext = UpdateAllNodeContextInformation(lOidPathList); } if (queryContext == null) { return; } // Get the DisplaySetInformation from the node controller. TreeNodeController treeNodeController = this.GetNodeById(e.NodeId); DisplaySetInformation lDisplaySetInfo = treeNodeController.DisplaySetInfo; DataTable lData = null; lData = GetNextDataBlock(queryContext, e.LastOid); // Send the DisplaySetInformation in the event arguments. e.DisplaySetInfo = lDisplaySetInfo; e.Data = lData; e.LastBlock = IsLastBlock(queryContext); }
/// <summary> /// Executes the selected node processing. /// </summary> /// <param name="treeNode">TreeView node.</param> private void ProcessNodeSelected(TreeNode treeNode) { InstanceNodeInfo lInstanceInfo = null; List<KeyValuePair<string, Oid>> lCompleteOidPath = GetCompleteOidPath(treeNode); // Next block of instances if (treeNode.Text.Equals("...")) { // Get the last Oid Oid lLastOid = null; if (treeNode.PrevNode != null && treeNode.PrevNode.Tag != null) { lInstanceInfo = treeNode.PrevNode.Tag as InstanceNodeInfo; if (lInstanceInfo != null) { lLastOid = lInstanceInfo.InstanceOid; } } GetNextNodeDataBlockEventArgs getNextBlockArgs = new GetNextNodeDataBlockEventArgs(treeNode.Name, lLastOid, lCompleteOidPath); OnGetNextDataBlock(getNextBlockArgs); TreeNode parentNode = treeNode.Parent; // Delete the special node mRaiseEventsFlag = false; mTreeViewIT.Nodes.Remove(treeNode); mRaiseEventsFlag = true; // Add the received data to the parent node AddDataToNode(parentNode,treeNode.Name, getNextBlockArgs.Data, getNextBlockArgs.DisplaySetInfo, getNextBlockArgs.LastBlock, false); return; } // Instance or intermadia node ? // Raise the proper selected event if (treeNode.Tag != null && (treeNode.Tag as InstanceNodeInfo) != null) { ProcessInstanceNodeSelected(treeNode); } else { ProcessNoInstanceNodeSelected(treeNode); } mTreeViewIT.Focus(); }
/// <summary> /// Executes actions related to getting next DataBlock. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void HandleTreeGetNextDataBlock(object sender, GetNextNodeDataBlockEventArgs e) { ProcessTreeGetNextDataBlock(sender, e); }