private void DoTraceChanged(Object sender, TraceChangedInfo args) { //treeViewTraces.Nodes.Clear(); //treeViewTraces.Nodes.Add(new TreeNode()); //ShowTrace(debugEntity.TopRAD, treeViewTraces.Nodes[0]); if (args.Type == TraceChangedType.NewPanel) { TreeNode newPanelNode = new TreeNode(); newPanelNode.Text = args.NewPanel.PanelInfo.PanelName; newPanelNode.Tag = args.NewPanel; currentRADNode.Nodes.Add(newPanelNode); currentPanelNode = newPanelNode; treeViewTraces.SelectedNode = newPanelNode; } else if (args.Type == TraceChangedType.NewRADCall) { TreeNode newRADNode = new TreeNode(); newRADNode.Text = args.NewRad.RADName; newRADNode.Tag = args.NewRad; currentRADNode.Nodes.Add(newRADNode); currentRADNode = newRADNode; treeViewTraces.SelectedNode = newRADNode; } else { currentRADNode = currentRADNode.Parent; } }
private void DoTraceChanged(Object sender, TraceChangedInfo args) { if (args.Type == TraceChangedType.NewPanel) { TreeNode newPanelNode = new TreeNode(); newPanelNode.Text = args.NewPanel.PanelInfo.PanelName; args.NewPanel.PreContext = GetContext(args.NewPanel.RADName, args.NewPanel.PanelInfo.PanelName); if (args.OldPanel != null) { args.OldPanel.PostContext = GetContext(args.OldPanel.RADName, args.OldPanel.PanelInfo.PanelName); } Invoke(new UpdateUI(delegate() { newPanelNode.Tag = args.NewPanel; currentRADNode.Nodes.Add(newPanelNode); currentPanelNode = newPanelNode; treeViewTraces.SelectedNode = newPanelNode; })); } else if (args.Type == TraceChangedType.NewRADCall) { //To Avoid the first RAD call. if (args.NewRad.RADName != currentRADNode.Text) { Invoke(new UpdateUI(delegate() { TreeNode newRADNode = new TreeNode(); newRADNode.Text = args.NewRad.RADName; newRADNode.Tag = args.NewRad; currentRADNode.Nodes.Add(newRADNode); currentRADNode = newRADNode; treeViewTraces.SelectedNode = newRADNode; })); } } else if (args.Type == TraceChangedType.RADCallReturn) { //if (args.OldPanel != null) //{ // args.OldPanel.PostContext = GetContext(args.OldPanel.RADName, args.OldPanel.PanelInfo.PanelName); //} currentRADNode = currentRADNode.Parent; } else { //Nothing to do. } //if (needHoldSMClient && checkboxAutoStep.Checked) //{ // GotoNextPanel(); //} }
public void AddTrace(Execute excuteObject) { ClientRequest clientRequest = excuteObject.ClientRequestEntity; if (clientRequest != null) { for (int i = clientRequest.Messages.Messages.Count - 1; i >= 0; i--) //for (int i = 0; i < clientRequest.Messages.Messages.Count ; i++) { MessageItem messageItem = clientRequest.Messages.Messages[i]; string debugMessage = messageItem.Text.Trim(); //rad call. if (radCallReg.IsMatch(debugMessage)) { TraceChangedInfo changedInfo = new TraceChangedInfo(); changedInfo.OldRad = currentRAD; changedInfo.OldPanel = currentTrance as DebugTracePanel; Match radMatch = radCallReg.Match(debugMessage); GroupCollection groups = radMatch.Groups; string threadId = groups[1].Value; string currentRADName = groups[2].Value; if (!followingReturn) { DebugTraceRADCall newRadCall = new DebugTraceRADCall(); newRadCall.Parent = currentRAD; newRadCall.RADName = currentRADName; currentRAD.Traces.Add(newRadCall); currentRAD = newRadCall; radStack.Push(currentRADName); currentTrance = null; changedInfo.NewRad = currentRAD; changedInfo.NewPanel = null; changedInfo.Type = TraceChangedType.NewRADCall; if (OnTraceChanged != null) { OnTraceChanged(this, changedInfo); } } else { //Check if current value is the same as the parent rad if (currentRAD.RADName != currentRADName) { do { radStack.Pop(); currentRAD = currentRAD.Parent as DebugTraceRADCall; }while (currentRADName != currentRAD.RADName); //throw new Exception("RAD stack mismatched..."); } } followingReturn = false; //nothing to do } else if (returnReg.IsMatch(debugMessage)) { followingReturn = true; TraceChangedInfo changedInfo = new TraceChangedInfo(); changedInfo.OldRad = currentRAD; changedInfo.OldPanel = currentTrance as DebugTracePanel; radStack.Pop(); currentRAD = currentRAD.Parent as DebugTraceRADCall; currentTrance = null; changedInfo.NewRad = currentRAD; changedInfo.NewPanel = null; changedInfo.Type = TraceChangedType.RADCallReturn; if (OnTraceChanged != null) { OnTraceChanged(this, changedInfo); } } else if (panelReg.IsMatch(debugMessage)) { followingReturn = false; TraceChangedInfo changedInfo = new TraceChangedInfo(); changedInfo.OldRad = currentRAD; changedInfo.OldPanel = currentTrance as DebugTracePanel; Match radMatch = panelReg.Match(debugMessage); GroupCollection groups = radMatch.Groups; string threadId = groups[1].Value; string currentPanelName = groups[2].Value; RADPanel panel = new RADPanel(); panel.RADName = currentRAD.RADName; panel.PanelName = currentPanelName; DebugTracePanel tracePanel = new DebugTracePanel(); tracePanel.PanelInfo = panel; tracePanel.Parent = currentRAD; currentRAD.Traces.Add(tracePanel); currentTrance = tracePanel; changedInfo.NewRad = currentRAD; changedInfo.NewPanel = currentTrance as DebugTracePanel; changedInfo.Type = TraceChangedType.NewPanel; if (OnTraceChanged != null) { OnTraceChanged(this, changedInfo); } } else { //followingReturn = false; } //radStack.Push(messageItem); } } }