public FilterEditorDialog(LogMessage message, LogMessageFilter filter)
{
if (message == null)
throw new ArgumentNullException(nameof(message));
if (filter == null)
throw new ArgumentNullException(nameof(filter));
m_sampleMessage = message;
m_filter = new LogMessageFilter();
m_filter.FilterLevel = filter.FilterLevel;
m_filter.TimeFilter = filter.TimeFilter ?? new TimestampMatching(TimestampMatchingMode.Inside, message.UtcTime.AddMinutes(-1), message.UtcTime.AddMinutes(1));
m_filter.Classification = filter.Classification ?? new EnumMatchingFlags(EnumMatchingFlagsMode.Any, 1 << (int)message.Classification, message.Classification.ToString());
m_filter.Level = filter.Level ?? new EnumMatchingFlags(EnumMatchingFlagsMode.Any, 1 << (int)message.Level, message.Level.ToString());
m_filter.Flags = filter.Flags ?? new EnumMatchingFlags(EnumMatchingFlagsMode.All, (int)message.Flags, message.Flags.ToString());
m_filter.Assembly = filter.Assembly ?? new StringMatching(StringMatchingMode.Exact, message.AssemblyName);
m_filter.Type = filter.Type ?? new StringMatching(StringMatchingMode.Exact, message.TypeName);
m_filter.RelatedType = filter.RelatedType ?? new StringMatching(StringMatchingMode.Exact, message.TypeName);
m_filter.StackDetails = filter.StackDetails ?? new StackDetailsMatching();
m_filter.StackTraceDetails = filter.StackTraceDetails ?? new StackTraceMatching();
m_filter.EventName = filter.EventName ?? new StringMatching(StringMatchingMode.Exact, message.EventName);
m_filter.MessageText = filter.MessageText ?? new StringMatching(StringMatchingMode.Exact, message.Message);
m_filter.DetailsText = filter.DetailsText ?? new StringMatching(StringMatchingMode.Exact, message.Details);
m_filter.ExceptionText = filter.ExceptionText ?? new StringMatching(StringMatchingMode.Exact, message.ExceptionString);
InitializeComponent();
chkTime.Checked = filter.TimeFilter != null;
chkClass.Checked = filter.Classification != null;
chkLevel.Checked = filter.Level != null;
chkFlags.Checked = filter.Flags != null;
chkAssembly.Checked = filter.Assembly != null;
chkType.Checked = filter.Type != null;
chkRelatedType.Checked = filter.RelatedType != null;
chkStackDetails.Checked = filter.StackDetails != null;
chkStackTrace.Checked = filter.StackTraceDetails != null;
chkEventName.Checked = filter.EventName != null;
chkMessage.Checked = filter.MessageText != null;
chkDetails.Checked = filter.DetailsText != null;
chkException.Checked = filter.ExceptionText != null;
lblTime.Text = m_filter.TimeFilter.ToString();
lblClass.Text = m_filter.Classification.ToString();
lblLevel.Text = m_filter.Level.ToString();
lblFlags.Text = m_filter.Flags.ToString();
lblAssembly.Text = m_filter.Assembly.ToString();
lblType.Text = m_filter.Type.ToString();
lblRelatedType.Text = m_filter.RelatedType.ToString();
lblStackDetails.Text = m_filter.StackDetails.ToString();
lblStackTrace.Text = m_filter.StackTraceDetails.ToString();
lblEventName.Text = m_filter.EventName.ToString();
lblMessage.Text = m_filter.MessageText.ToString();
lblDetails.Text = m_filter.DetailsText.ToString();
lblException.Text = m_filter.ExceptionText.ToString();
cmbVerbose.SelectedIndex = (int)m_filter.FilterLevel;
chkMessage.Checked = filter.MessageText != null;
chkMessage.Tag = filter.MessageText ?? new StringMatching(StringMatchingMode.Exact, message.Message);
}