예제 #1
0
        void ClientMessageGridGridSelectionChanged(object sender, EventArgs e)
        {
            try
            {
                _fieldTable.BeginLoadData();
                _fieldTable.Clear();

                Fix.Message message = SelectedMessage;

                if (message == null)
                {
                    return;
                }

                switch (message.Status)
                {
                case Fix.MessageStatus.Error:
                    _statusMessage.ForeColor = Color.White;
                    _statusMessage.BackColor = Color.Red;
                    break;

                case Fix.MessageStatus.Warn:
                    _statusMessage.ForeColor = Color.Black;
                    _statusMessage.BackColor = Color.Yellow;
                    break;

                case Fix.MessageStatus.Info:
                    _statusMessage.ForeColor = Color.White;
                    _statusMessage.BackColor = Color.DodgerBlue;
                    break;

                case Fix.MessageStatus.None:
                    _statusMessage.ForeColor = SystemColors.ControlText;
                    _statusMessage.BackColor = SystemColors.Control;
                    break;
                }

                _statusMessage.Text = message.StatusMessage;

                foreach (Fix.Field field in message.Fields)
                {
                    if (_fieldTable.NewRow() is not FieldDataRow dataRow)
                    {
                        continue;
                    }

                    if (field.Definition == null && message.Definition != null)
                    {
                        field.Definition = FieldDefinition(message.Definition, field);
                    }

                    dataRow.Field = field;

                    if (field.Definition != null)
                    {
                        dataRow[FieldDataTable.ColumnIndent]      = field.Definition.Indent;
                        dataRow[FieldDataTable.ColumnName]        = field.Definition.Name;
                        dataRow[FieldDataTable.ColumnCustom]      = false;
                        dataRow[FieldDataTable.ColumnRequired]    = field.Definition.Required;
                        dataRow[FieldDataTable.ColumnDescription] = field.ValueDescription;
                    }
                    else
                    {
                        dataRow[FieldDataTable.ColumnCustom]   = true;
                        dataRow[FieldDataTable.ColumnRequired] = false;
                    }

                    dataRow[FieldDataTable.ColumnTag]   = field.Tag;
                    dataRow[FieldDataTable.ColumnValue] = field.Value;

                    _fieldTable.Rows.Add(dataRow);
                }
            }
            finally
            {
                _fieldTable.EndLoadData();
            }
        }
예제 #2
0
        void MessageGridSelectionChanged(object sender, EventArgs e)
        {
            try
            {
                _fieldTable.BeginLoadData();
                _fieldTable.Rows.Clear();

                Fix.Message message = SelectedMessage;

                if (message == null)
                {
                    return;
                }

                foreach (Fix.Field field in message.Fields)
                {
                    if (_fieldTable.NewRow() is not FieldDataRow dataRow)
                    {
                        continue;
                    }

                    if (field.Definition == null)
                    {
                        field.Definition = Session.FieldDefinition(message, field);
                    }

                    dataRow.Field = field;

                    if (field.Definition != null)
                    {
                        dataRow[FieldDataTable.ColumnIndent]      = field.Definition.Indent;
                        dataRow[FieldDataTable.ColumnName]        = field.Definition.Name;
                        dataRow[FieldDataTable.ColumnCustom]      = false;
                        dataRow[FieldDataTable.ColumnRequired]    = field.Definition.Required;
                        dataRow[FieldDataTable.ColumnDescription] = field.ValueDescription;
                    }
                    else
                    {
                        dataRow[FieldDataTable.ColumnCustom]   = true;
                        dataRow[FieldDataTable.ColumnRequired] = false;
                    }

                    dataRow[FieldDataTable.ColumnTag]   = field.Tag;
                    dataRow[FieldDataTable.ColumnValue] = field.Value;

                    _fieldTable.Rows.Add(dataRow);
                }

                string text;
                using (MemoryStream stream = new())
                    using (Fix.Writer writer = new(stream, true))
                    {
                        writer.Write(message);
                        writer.Close();
                        text = Encoding.UTF8.GetString(stream.GetBuffer());
                    }

                _rawMessage.Text = text;

                switch (message.Status)
                {
                case Fix.MessageStatus.Error:
                    _statusMessage.ForeColor = Color.White;
                    _statusMessage.BackColor = Color.Red;
                    break;

                case Fix.MessageStatus.Warn:
                    _statusMessage.ForeColor = Color.Black;
                    _statusMessage.BackColor = Color.Yellow;
                    break;

                case Fix.MessageStatus.Info:
                    _statusMessage.ForeColor = Color.White;
                    _statusMessage.BackColor = Color.DodgerBlue;
                    break;

                case Fix.MessageStatus.None:
                    _statusMessage.ForeColor = SystemColors.ControlText;
                    _statusMessage.BackColor = SystemColors.Control;
                    break;
                }

                _statusMessage.Text = message.StatusMessage;

                MessageSelected?.Invoke(message);

                ApplyFieldSearch();
            }
            finally
            {
                _fieldTable.EndLoadData();
                UpdateUiState();
            }
        }