Example #1
0
        public ParserPanel()
        {
            InitializeComponent();

            _messageTable = new ParserMessageDataTable("Messages");
            _messageView  = new DataView(_messageTable);

            _fieldTable = new FieldDataTable("Fields");
            _fieldView  = new DataView(_fieldTable);

            _messageSearchTextBox = new SearchTextBox
            {
                Dock = DockStyle.Top
            };
            _messageSearchTextBox.TextChanged += MessageSearchTextBoxTextChanged;
            _fieldSearchTextBox = new SearchTextBox
            {
                Dock = DockStyle.Top
            };
            _fieldSearchTextBox.TextChanged += FieldSearchTextBoxTextChanged;

            _statusMessage = new TextBox
            {
                Dock     = DockStyle.Bottom,
                ReadOnly = true
            };

            messageStatusErrorImage = Properties.Resources.MessageStatusError;
            messageStatusInfoImage  = Properties.Resources.MessageStatusInfo;
            messageStatusWarnImage  = Properties.Resources.MessageStatusWarn;
            messageStatusNoneImage  = Properties.Resources.MessageStatusNone;

            #region ToolStrip
            var loadButton = new ToolStripButton(Properties.Resources.Open)
            {
                ImageTransparentColor = Color.Magenta,
                ToolTipText           = "Load a Glue/Gate/FIX Router/Desk Server log file"
            };
            loadButton.Click += LoadClientMessagesButtonClick;

            _showAdminMessageCheckBox = new ToolStripCheckBox();
            _showAdminMessageCheckBox.CheckChanged += ShowAdminMessageCheckBoxCheckChanged;

            _statusNoneMenuItem = new ToolStripMenuItem {
                Text = "None", Checked = true, CheckOnClick = true
            };
            _statusNoneMenuItem.Click += StatusMenuItemClick;

            _statusInfoMenuItem = new ToolStripMenuItem {
                Text = "Info", Checked = true, CheckOnClick = true
            };
            _statusInfoMenuItem.Click += StatusMenuItemClick;

            _statusWarnMenuItem = new ToolStripMenuItem {
                Text = "Warn", Checked = true, CheckOnClick = true
            };
            _statusWarnMenuItem.Click += StatusMenuItemClick;

            _statusErrorMenuItem = new ToolStripMenuItem {
                Text = "Error", Checked = true, CheckOnClick = true
            };
            _statusErrorMenuItem.Click += StatusMenuItemClick;

            _statusButton = new ToolStripDropDownButton("Message Status");

            _statusButton.DropDownItems.Add(_statusNoneMenuItem);
            _statusButton.DropDownItems.Add(_statusInfoMenuItem);
            _statusButton.DropDownItems.Add(_statusWarnMenuItem);
            _statusButton.DropDownItems.Add(_statusErrorMenuItem);

            var toolStrip = new ToolStrip(new ToolStripItem[]
            {
                loadButton,
                new ToolStripLabel("Show Administrative Messages"),
                _showAdminMessageCheckBox,
                _statusButton
            })
            {
                GripStyle = ToolStripGripStyle.Hidden,
                BackColor = LookAndFeel.Color.ToolStrip,
                Renderer  = new ToolStripRenderer()
            };

            #endregion

            var splitter = new SplitContainer
            {
                Orientation      = Orientation.Horizontal,
                Dock             = DockStyle.Fill,
                SplitterDistance = 200
            };

            var messageSplitter = new SplitContainer
            {
                Orientation = Orientation.Vertical,
                Dock        = DockStyle.Fill
            };

            var container = new ToolStripContainer {
                Dock = DockStyle.Fill
            };
            container.ContentPanel.Controls.Add(messageSplitter);
            container.TopToolStripPanel.Join(toolStrip);
            container.TopToolStripPanel.BackColor = LookAndFeel.Color.ToolStrip;

            _messageGridView = new ParserMessageDataGridView
            {
                Dock        = DockStyle.Fill,
                VirtualMode = true
            };
            _messageGridView.SelectionChanged += ClientMessageGridGridSelectionChanged;
            _messageGridView.CellValueNeeded  += MessageGridViewCellValueNeeded;
            _messageGridView.CellFormatting   += MessageGridViewCellFormatting;

            foreach (DataColumn source in _messageTable.Columns)
            {
                if (source.ColumnMapping == MappingType.Hidden)
                {
                    continue;
                }

                DataGridViewColumn column;

                if (source.DataType == typeof(Image))
                {
                    column = new DataGridViewImageColumn
                    {
                        Name      = source.ColumnName,
                        ValueType = source.DataType
                    };
                }
                else
                {
                    column = new DataGridViewTextBoxColumn
                    {
                        Name      = source.ColumnName,
                        ValueType = source.DataType
                    };
                }
                _messageGridView.Columns.Add(column);
            }

            var fieldGridView = new FieldDataGridView
            {
                Dock       = DockStyle.Fill,
                DataSource = _fieldView
            };

            messageSplitter.Panel1.Controls.Add(_messageGridView);
            messageSplitter.Panel1.Controls.Add(_messageSearchTextBox);
            messageSplitter.Panel2.Controls.Add(fieldGridView);
            messageSplitter.Panel2.Controls.Add(_fieldSearchTextBox);
            messageSplitter.Panel2.Controls.Add(_statusMessage);

            _orderBook = new Fix.OrderBook();
            _orderBook.Messages.MessageAdded += MessagesMessageAdded;
            _orderBook.OrderInserted         += OrderBookOrderInserted;
            _orderBook.OrderUpdated          += OrderBookOrderUpdated;

            _orderTable = new OrderDataTable("Orders");
            _orderView  = new DataView(_orderTable);
            orderGrid   = new OrderDataGridView
            {
                DataSource           = _orderView,
                Dock                 = DockStyle.Fill,
                DisplayExDestination = true
            };

            _orderSearchTextBox = new SearchTextBox
            {
                Dock = DockStyle.Top
            };
            _orderSearchTextBox.TextChanged += OrderSearchTextBoxTextChanged;

            splitter.Panel1.Controls.Add(container);
            splitter.Panel2.Controls.Add(orderGrid);
            splitter.Panel2.Controls.Add(_orderSearchTextBox);

            ContentPanel.Controls.Add(splitter);

            ShowAdminMessageCheckBoxCheckChanged(this, null);
        }
Example #2
0
        public OrdersPanel(MessagesPanel messageDefaults, ToolStripButton defaultsButton)
        {
            _messageDefaults = messageDefaults;
            _defaultsButton  = defaultsButton;

            #region ToolStrip
            _clientToolStrip = new ToolStrip
            {
                GripStyle = ToolStripGripStyle.Hidden,
                BackColor = LookAndFeel.Color.ToolStrip,
                Renderer  = new ToolStripRenderer()
            };

            _cancelButton = new ToolStripSplitButton
            {
                Text        = "Cancel",
                ToolTipText = "Cancel the selected order"
            };
            _cancelButton.Click += CancelButtonClick;

            _cancelAllButton = new ToolStripMenuItem
            {
                Text        = "Cancel All",
                ToolTipText = "Cancel all open orders immediately"
            };
            _cancelAllButton.Click += CancelAllButtonClick;
            _cancelButton.DropDownItems.Add(_cancelAllButton);

            _amendButton = new ToolStripButton
            {
                Text        = "Amend",
                ToolTipText = "Amend the selected order"
            };
            _amendButton.Click += AmendButtonClick;

            _statusButton = new ToolStripButton
            {
                Text        = "Status",
                ToolTipText = "Request a status update for the selected order"
            };
            _statusButton.Click += StatusButtonClick;

            _listExecuteButton = new ToolStripButton
            {
                Text        = "ListExecute",
                ToolTipText = "Execute the Order List associated with the selected order"
            };
            _listExecuteButton.Click += ListExecuteButtonClick;

            _listStatusButton = new ToolStripButton
            {
                Text        = "ListStatus",
                ToolTipText =
                    "Request the status of the Order List associated with the selected order"
            };
            _listStatusButton.Click += ListStatusButtonClick;

            _listCancelButton = new ToolStripButton
            {
                Text        = "ListCancel",
                ToolTipText = "Cancel the Order List associated with the selected order"
            };
            _listCancelButton.Click += ListCancelButtonClick;

            _clientToolStrip.Items.AddRange(new ToolStripItem[]
            {
                _cancelButton,
                _amendButton,
                _statusButton,
                new ToolStripSeparator(),
                _listExecuteButton,
                _listStatusButton,
                _listCancelButton
            });

            _serverToolStrip = new ToolStrip
            {
                GripStyle = ToolStripGripStyle.Hidden,
                BackColor = LookAndFeel.Color.ToolStrip,
                Renderer  = new ToolStripRenderer()
            };

            _ackButton = new ToolStripDropDownButton
            {
                Text        = "Ack",
                ToolTipText = "Acknowledge the selected order"
            };
            _ackButton.Click += AckButtonClick;

            _ackAllButton = new ToolStripMenuItem
            {
                Text        = "Acknowledge All",
                ToolTipText = "Acknowledge all pending orders immediately"
            };
            _ackAllButton.Click += AcknowledgeAllButtonClick;
            _ackButton.DropDownItems.Add(_ackAllButton);

            _rejectButton = new ToolStripDropDownButton
            {
                Text        = "Reject",
                ToolTipText = "Reject the selected order"
            };
            _rejectButton.Click += RejectButtonClick;

            _rejectAllButton = new ToolStripMenuItem
            {
                Text        = "Reject All",
                ToolTipText = "Reject all pending orders immediately"
            };
            _rejectAllButton.Click += RejectAllButtonClick;
            _rejectButton.DropDownItems.Add(_rejectAllButton);

            _acceptorCancelButton = new ToolStripSplitButton
            {
                Text        = "Cancel",
                ToolTipText = "Cancel the selected order"
            };
            _acceptorCancelButton.Click += CancelButtonClick;

            _acceptorCancelAllButton = new ToolStripMenuItem
            {
                Text        = "Cancel All",
                ToolTipText = "Cancel all open orders immediately"
            };
            _acceptorCancelAllButton.Click += CancelAllButtonClick;
            _acceptorCancelButton.DropDownItems.Add(_acceptorCancelAllButton);

            _reportButton = new ToolStripButton
            {
                Text        = "Report",
                ToolTipText = "Send an execution teport for the selected order"
            };
            _reportButton.Click += ReportButtonClick;

            _serverToolStrip.Items.AddRange(new ToolStripItem[]
            {
                _ackButton,
                _rejectButton,
                _acceptorCancelButton,
                _reportButton
            });

            #endregion

            #region MenuStrip
            _clientMenuStrip = new ToolStripMenuItem("Action");

            _cancelMenuItem        = new ToolStripMenuItem("Cancel", _cancelButton.Image);
            _cancelMenuItem.Click += CancelButtonClick;
            _clientMenuStrip.DropDownItems.Add(_cancelMenuItem);

            _amendMenuItem        = new ToolStripMenuItem("Amend", _amendButton.Image);
            _amendMenuItem.Click += AmendButtonClick;
            _clientMenuStrip.DropDownItems.Add(_amendMenuItem);

            _statusMenuItem        = new ToolStripMenuItem("Status", _statusButton.Image);
            _statusMenuItem.Click += StatusButtonClick;
            _clientMenuStrip.DropDownItems.Add(_statusMenuItem);

            _clientMenuStrip.DropDownItems.Add(new ToolStripSeparator());

            _listExecuteMenuItem        = new ToolStripMenuItem("ListExecute", _listExecuteButton.Image);
            _listExecuteMenuItem.Click += ListExecuteButtonClick;
            _clientMenuStrip.DropDownItems.Add(_listExecuteMenuItem);

            _listStatusMenuItem        = new ToolStripMenuItem("ListStatus", _listStatusButton.Image);
            _listStatusMenuItem.Click += ListStatusButtonClick;
            _clientMenuStrip.DropDownItems.Add(_listStatusMenuItem);

            _listCancelMenuItem        = new ToolStripMenuItem("ListCancel", _listCancelButton.Image);
            _listCancelMenuItem.Click += ListCancelButtonClick;
            _clientMenuStrip.DropDownItems.Add(_listCancelMenuItem);

            _serverMenuStrip = new ToolStripMenuItem("Action");

            _ackMenuItem        = new ToolStripMenuItem("Acknowledge", _ackButton.Image);
            _ackMenuItem.Click += AckButtonClick;
            _serverMenuStrip.DropDownItems.Add(_ackMenuItem);

            _rejectMenuItem        = new ToolStripMenuItem("Reject", _rejectButton.Image);
            _rejectMenuItem.Click += RejectButtonClick;
            _serverMenuStrip.DropDownItems.Add(_rejectMenuItem);

            _reportMenuItem        = new ToolStripMenuItem("Report", _reportButton.Image);
            _reportMenuItem.Click += ReportButtonClick;
            _serverMenuStrip.DropDownItems.Add(_reportMenuItem);
            #endregion

            _orderTable = new OrderDataTable("Orders");
            _orderView  = new DataView(_orderTable);

            _orderGrid = new OrderDataGridView
            {
                Dock       = DockStyle.Fill,
                DataSource = _orderView
            };
            _orderGrid.SelectionChanged += (sender, ev) => UpdateUiState();

            _orderSearchTextBox = new SearchTextBox
            {
                Dock = DockStyle.Top
            };
            _orderSearchTextBox.TextChanged += (sender, ev) => ApplyFilters();

            ContentPanel.Controls.Add(_orderGrid);
            ContentPanel.Controls.Add(_orderSearchTextBox);

            UpdateUiState();
            ApplyFilters();

            IntPtr h = Handle;
        }
Example #3
0
        public HistoryPanel()
        {
            InitializeComponent();

            #region ToolStrip
            var toolStrip = new ToolStrip
            {
                GripStyle = ToolStripGripStyle.Hidden,
                BackColor = LookAndFeel.Color.ToolStrip,
                Renderer  = new ToolStripRenderer()
            };


            _clearButton = new ToolStripButton
            {
                Image = Properties.Resources.Clear,
                ImageTransparentColor = Color.Magenta,
                ToolTipText           = "Clear all session messages"
            };
            _clearButton.Click += ClearButtonClick;

            _resendButton = new ToolStripButton
            {
                Image = Properties.Resources.Send,
                ImageTransparentColor = Color.White,
                ToolTipText           = "Resend the selected message"
            };
            _resendButton.Click += ResendButtonClick;

            _exportButton = new ToolStripButton
            {
                Image = Properties.Resources.Export,
                ImageTransparentColor = Color.Magenta,
                ToolTipText           = "Export the message history to a text file"
            };
            _exportButton.Click += ExportButtonClick;

            _tailMessagesCheckBox = new ToolStripCheckBox();
            _tailMessagesCheckBox.CheckChanged += TailMessagesCheckBoxCheckChanged;

            toolStrip.Items.AddRange(new ToolStripItem[]
            {
                _clearButton,
                _resendButton,
                _exportButton,
                new ToolStripLabel("Tail Messages"),
                _tailMessagesCheckBox
            });

            TopToolStripPanel.Join(toolStrip);

            #endregion

            #region MenuStrip
            var menu = new ToolStripMenuItem("Action");
            SetMenuStrip(menu);

            _clearMenuItem        = new ToolStripMenuItem("Clear", _clearButton.Image);
            _clearMenuItem.Click += ClearButtonClick;
            menu.DropDownItems.Add(_clearMenuItem);

            _resendMenuItem        = new ToolStripMenuItem("Resend", _resendButton.Image);
            _resendMenuItem.Click += ResendButtonClick;
            menu.DropDownItems.Add(_resendMenuItem);

            _exportMenuItem        = new ToolStripMenuItem("Export", _exportButton.Image);
            _exportMenuItem.Click += ExportButtonClick;
            menu.DropDownItems.Add(_exportMenuItem);
            #endregion

            _messageSearchTextBox = new SearchTextBox
            {
                Dock = DockStyle.Top,
            };
            _messageSearchTextBox.TextChanged += MessageSearchTextBoxTextChanged;
            _fieldSearchTextBox = new SearchTextBox
            {
                Dock = DockStyle.Top,
            };
            _fieldSearchTextBox.TextChanged += FieldSearchTextBoxTextChanged;

            var container = new SplitContainer
            {
                Dock        = DockStyle.Fill,
                Orientation = Orientation.Vertical
            };

            _messageGrid = new HistoryMessageDataGridView
            {
                Dock        = DockStyle.Fill,
                VirtualMode = true
            };
            _messageGrid.SelectionChanged += MessageGridSelectionChanged;
            _messageGrid.CellValueNeeded  += MessageGridCellValueNeeded;
            _messageGrid.CellFormatting   += MessageGridCellFormatting;

            _messageTable             = new MessageDataTable("Messages");
            _messageView              = new DataView(_messageTable);
            _messageView.ListChanged += ViewListChanged;

            _fieldTable = new FieldDataTable("Fields");
            _fieldView  = new DataView(_fieldTable);

            _fieldGrid = new FieldDataGridView
            {
                Dock       = DockStyle.Fill,
                DataSource = _fieldView
            };

            var rightSplitter = new SplitContainer
            {
                Dock             = DockStyle.Fill,
                Orientation      = Orientation.Horizontal,
                SplitterDistance = ClientRectangle.Height
            };

            _rawMessage = new TextBox
            {
                Dock        = DockStyle.Fill,
                Multiline   = true,
                ReadOnly    = true,
                Font        = new Font("Consolas", 10),
                BackColor   = LookAndFeel.Color.GridCellBackground,
                ForeColor   = LookAndFeel.Color.GridCellForeground,
                BorderStyle = BorderStyle.None
            };

            _statusMessage = new TextBox
            {
                Dock     = DockStyle.Bottom,
                ReadOnly = true
            };

            rightSplitter.Panel1.Controls.Add(_fieldGrid);
            rightSplitter.Panel1.Controls.Add(_fieldSearchTextBox);
            rightSplitter.Panel2.Controls.Add(_rawMessage);
            rightSplitter.Panel2.Controls.Add(_statusMessage);

            container.Panel1.Controls.Add(_messageGrid);
            container.Panel1.Controls.Add(_messageSearchTextBox);
            container.Panel2.Controls.Add(rightSplitter);

            ContentPanel.Controls.Add(container);

            IntPtr h = Handle;

            UpdateUiState();
        }
Example #4
0
        public FiltersPanel()
        {
            InitializeComponent();

            _messageSearchTextBox = new SearchTextBox
            {
                Dock = DockStyle.Top,
            };
            _messageSearchTextBox.TextChanged += MessageSearchTextBoxTextChanged;
            _fieldSearchTextBox = new SearchTextBox
            {
                Dock = DockStyle.Top,
            };
            _fieldSearchTextBox.TextChanged += FieldSearchTextBoxTextChanged;

            #region Message ToolStrip

            var messageToolstrip = new ToolStrip
            {
                GripStyle = ToolStripGripStyle.Hidden,
                BackColor = LookAndFeel.Color.ToolStrip,
                Renderer  = new ToolStripRenderer()
            };

            _checkAllMessagesButton = new ToolStripButton
            {
                Image = Properties.Resources.CheckAll,
                ImageTransparentColor = Color.White,
                ToolTipText           = "Check all the messages"
            };
            _checkAllMessagesButton.Click += (sender, ev) => SetAllMessagesVisibility(true);
            messageToolstrip.Items.Add(_checkAllMessagesButton);

            _uncheckAllMessagesButton = new ToolStripButton
            {
                Image = Properties.Resources.UnCheckAll,
                ImageTransparentColor = Color.White,
                ToolTipText           = "UnCheck all the messages"
            };
            _uncheckAllMessagesButton.Click += (sender, ev) => SetAllMessagesVisibility(false);
            messageToolstrip.Items.Add(_uncheckAllMessagesButton);

            #endregion

            #region Field ToolStrip

            var fieldToolStrip = new ToolStrip
            {
                GripStyle = ToolStripGripStyle.Hidden,
                BackColor = LookAndFeel.Color.ToolStrip
            };

            _checkAllFieldsButton = new ToolStripButton
            {
                Image = Properties.Resources.CheckAll,
                ImageTransparentColor = Color.White,
                ToolTipText           = "Check all the fields of the selected message"
            };
            _checkAllFieldsButton.Click += (sender, ev) => SetAllFieldsVisibility(true);
            fieldToolStrip.Items.Add(_checkAllFieldsButton);

            _uncheckAllFieldsButton = new ToolStripButton
            {
                Image = Properties.Resources.UnCheckAll,
                ImageTransparentColor = Color.White,
                ToolTipText           = "UnCheck all the fields of the selected message"
            };
            _uncheckAllFieldsButton.Click += (sender, ev) => SetAllFieldsVisibility(false);
            fieldToolStrip.Items.Add(_uncheckAllFieldsButton);

            #endregion

            #region Action Menu

            var menu = new ToolStripMenuItem("Action");
            SetMenuStrip(menu);

            _checkAllMessagesMenuItem        = new ToolStripMenuItem("Check All Messages", _checkAllMessagesButton.Image);
            _checkAllMessagesMenuItem.Click += (sender, ev) => SetAllMessagesVisibility(true);
            menu.DropDownItems.Add(_checkAllMessagesMenuItem);

            _uncheckAllMessagesMenuItem        = new ToolStripMenuItem("UnCheck All Messages", _uncheckAllMessagesButton.Image);
            _uncheckAllMessagesMenuItem.Click += (sender, ev) => SetAllMessagesVisibility(false);
            menu.DropDownItems.Add(_uncheckAllMessagesMenuItem);

            menu.DropDownItems.Add(new ToolStripSeparator());

            _checkAllFieldsMenuItem        = new ToolStripMenuItem("Check All Fields", _checkAllFieldsButton.Image);
            _checkAllFieldsMenuItem.Click += (sender, ev) => SetAllFieldsVisibility(true);
            menu.DropDownItems.Add(_checkAllFieldsMenuItem);

            _uncheckAllFieldsMenuItem        = new ToolStripMenuItem("UnCheck All Fields", _uncheckAllFieldsButton.Image);
            _uncheckAllFieldsMenuItem.Click += (sender, ev) => SetAllFieldsVisibility(false);
            menu.DropDownItems.Add(_uncheckAllFieldsMenuItem);


            #endregion

            _messageTable = new FilterMessageDataTable("Messages");
            _messageView  = new DataView(_messageTable);

            _fieldTable = new FilterFieldDataTable("Fields");
            _fieldView  = new DataView(_fieldTable);

            _messageGrid = new FilterMessageDataGridView
            {
                Dock        = DockStyle.Fill,
                VirtualMode = true
            };
            _messageGrid.CellValueNeeded  += MessageGridCellValueNeeded;
            _messageGrid.SelectionChanged += MessageGridSelectionChanged;
            _messageGrid.CellContentClick += MessageGridCellContentClick;

            _fieldGrid = new FilterFieldDataGridView
            {
                Dock        = DockStyle.Fill,
                VirtualMode = true
            };
            _fieldGrid.CellValueNeeded  += FieldGridCellValueNeeded;
            _fieldGrid.CellContentClick += FieldGridCellContentClick;

            var messageContainer = new ToolStripContainer
            {
                Dock      = DockStyle.Fill,
                BackColor = LookAndFeel.Color.ToolStrip
            };
            messageContainer.TopToolStripPanel.BackColor = LookAndFeel.Color.ToolStrip;
            messageContainer.ContentPanel.Controls.Add(_messageGrid);
            messageContainer.ContentPanel.Controls.Add(_messageSearchTextBox);
            messageContainer.TopToolStripPanel.Controls.Add(messageToolstrip);

            var fieldContainer = new ToolStripContainer
            {
                Dock      = DockStyle.Fill,
                BackColor = LookAndFeel.Color.ToolStrip
            };
            fieldContainer.TopToolStripPanel.BackColor = LookAndFeel.Color.ToolStrip;
            fieldContainer.ContentPanel.Controls.Add(_fieldGrid);
            fieldContainer.ContentPanel.Controls.Add(_fieldSearchTextBox);
            fieldContainer.TopToolStripPanel.Controls.Add(fieldToolStrip);

            var splitter = new SplitContainer
            {
                Dock        = DockStyle.Fill,
                Orientation = Orientation.Vertical
            };

            splitter.Panel1.Controls.Add(messageContainer);
            splitter.Panel2.Controls.Add(fieldContainer);

            ContentPanel.Controls.Add(splitter);

            UpdateUiState();
        }