string IInspectedObject.GetCurrentPrimaryPropertyValue(FocusedMessageEventsRange focusedMessage) { if (primaryPropertyName == null) { return(null); } var query = from change in history let pc = change.OriginalEvent as PropertyChange where pc != null where pc.PropertyName == primaryPropertyName select new { idx = change.Index, pc = pc }; var lastPC = query .TakeWhile(pc => isTimeless || pc.idx < focusedMessage.EqualRange.Item2) .Select(pc => pc.pc) .LastOrDefault(); if (lastPC == null) { return(null); } if (lastPC.ValueType == ValueType.UserHash) { return(shortNames.GetShortNameForUserHash(lastPC.Value)); } return(lastPC.Value); }
private InspectedObjectLiveStatus GetLiveStatusInternal(FocusedMessageEventsRange focusedMessage) { if (isTimeless) { return(InspectedObjectLiveStatus.NotCreatedYet); } if (creation == null || focusedMessage.EqualRange == null) { return(InspectedObjectLiveStatus.NotCreatedYet); } if (focusedMessage.EqualRange.Item2 <= creation.Index) { return(InspectedObjectLiveStatus.NotCreatedYet); } if (deletion == null) { return(InspectedObjectLiveStatus.Alive); } if (focusedMessage.EqualRange.Item1 > deletion.Index) { return(InspectedObjectLiveStatus.Deleted); } return(InspectedObjectLiveStatus.Alive); }
InspectedObjectLiveStatus IInspectedObject.GetLiveStatus(FocusedMessageEventsRange focusedMessage) { return(GetLiveStatusInternal(focusedMessage)); }
IEnumerable <KeyValuePair <string, PropertyViewBase> > IInspectedObject.GetCurrentProperties(FocusedMessageEventsRange focusedMessageEqualRange) { yield return(new KeyValuePair <string, PropertyViewBase>("id", new IdPropertyView(this, id))); if (parent == null) { yield return(new KeyValuePair <string, PropertyViewBase>("(log source)", new SourceReferencePropertyView(this))); } if (creation != null && !isTimeless) { yield return(new KeyValuePair <string, PropertyViewBase>("created at", new PropertyChangeView(this, creation, PropertyChangeView.DisplayMode.Date, shortNames))); } if (deletion != null && !isTimeless) { yield return(new KeyValuePair <string, PropertyViewBase>("deleted at", new PropertyChangeView(this, deletion, PropertyChangeView.DisplayMode.Date, shortNames))); } if (focusedMessageEqualRange.EqualRange == null) { yield break; } var dynamicProps = new Dictionary <string, PropertyViewBase>(); foreach (var change in history .TakeWhile(e => isTimeless || e.Index < focusedMessageEqualRange.EqualRange.Item2) .Select(e => new { ChangeEvt = e.OriginalEvent as PropertyChange, StateInspectorEvt = e }) .Where(e => e.ChangeEvt != null)) { dynamicProps[change.ChangeEvt.PropertyName] = new PropertyChangeView(this, change.StateInspectorEvt, ToPropDisplayMode(change.ChangeEvt.ValueType), shortNames); } foreach (var v in dynamicProps) { yield return(v); } }