public void LogControl_DragDrop(object sender, DragEventArgs e) { LogControl sourceLogControl = GetDragEventSourceLogControl(e); LogRange sourceLogRange = GetDragEventSourceLogRange(e); if (sourceLogControl != null || sourceLogRange != null) { foreach (LogView logView in m_logViews) { logView.SetSingleOrdiColour(RGB.RandomHueRGB()); } foreach (Control lliControl in logListTableLayoutPanel.Controls) { LogListItem lli = (LogListItem)lliControl; lli.UpdateContents(); } logListTableLayoutPanel.SuspendLayout(); { if (sourceLogControl != null) { foreach (LogView logView in sourceLogControl.m_logViews) { FrameRecordRange frr = logView.m_logData == logView.m_baseLogData ? null : logView.m_logData.FrameRecordRange; LogRange logRange = new LogRange(logView.m_baseLogData, frr); AddNewLogRange(logRange); } } else if (sourceLogRange != null) { AddNewLogRange(sourceLogRange); } } logListTableLayoutPanel.ResumeLayout(); m_statoscopeForm.SetSessionInfoList(this); RefreshItemInfoPanel(); UpdateControls(0); SetUMTreeViewNodeColours(); foreach (LogView logView in m_logViews) { // this is required as in calculating value stats in UpdateControls(), an OnPaint could happen and use invalid data logView.DeleteDisplayListsEndingIn(".MA"); logView.DeleteDisplayListsEndingIn(".LM"); } } else { m_statoscopeForm.StatoscopeForm_DragDrop(sender, e); } }
void SerializeInLogViewStates(SerializeState serializeState) { if (serializeState.LogViewStates == null) { return; } for (int i = 0; i < m_logViews.Count; i++) { LogView logView = m_logViews[i]; LogViewSerializeState lvss; lock (logView.m_logData) { if (i < serializeState.LogViewStates.Length) { lvss = serializeState.LogViewStates[i]; if ((m_logViews.Count > 1) && (lvss.SingleORDIColour != null)) { logView.m_singleOrdiColour = lvss.SingleORDIColour; } } else { lvss = serializeState.LogViewStates.Last(); } if (!(logView.m_logData is SocketLogData)) // this is only a temporary quick fix - fixing this properly will take some time { UserMarkerRDI startURDI = GetFirstURDIMatching(lvss.StartUM, logView); UserMarkerRDI endURDI = GetFirstURDIMatching(lvss.EndUM, logView); FrameRecordRange frr = logView.GetFrameRecordRange(); int startIdx = (startURDI != null) ? startURDI.m_uml.m_fr.Index : frr.StartIdx; int endIdx = (endURDI != null) ? endURDI.m_uml.m_fr.Index : frr.EndIdx; logView.SetFrameRecordRange(Math.Min(startIdx, endIdx), Math.Max(startIdx, endIdx)); logView.m_startUM = (startURDI != null) ? startURDI.DisplayUserMarker : null; logView.m_endUM = (endURDI != null) ? endURDI.DisplayUserMarker : null; } foreach (Control lliControl in logListTableLayoutPanel.Controls) { LogListItem lli = (LogListItem)lliControl; lli.UpdateContents(); } SetUMTreeViewNodeColours(); } } }