private void toolStripButtonDeleteSession_Click(object sender, EventArgs e) { foreach (ToolStripButton button in GetPanelsButtons()) { Panel panel = (Panel)button.Tag; if (button.Checked == false) { continue; } if (panel.Tag is PlatformExpertSessionControl) { PlatformExpertSessionControl control = panel.Tag as PlatformExpertSessionControl; _expert.Manager.UnRegisterExpertSession(control.Session); } else {// This is a stand alone component - just remove it. this.Controls.Remove(panel); button.Click -= new EventHandler(toolStripButton_Click); toolStripMain.Items.Remove(button); } break; } }
Panel CreateSessionPanel(PlatformExpertSession session) { Panel panel = new Panel(); // Session not found, create new button for it. PlatformExpertSessionControl sessionChartControl = new PlatformExpertSessionControl(); sessionChartControl.Dock = DockStyle.Fill; sessionChartControl.CreateControl(); sessionChartControl.Session = session; panel.Controls.Add(sessionChartControl); if (session.OrderExecutionProvider != null) { Splitter splitter = new SplitterEx(); splitter.Dock = DockStyle.Bottom; panel.Controls.Add(splitter); splitter.Height = 6; OrdersControl ordersControl = new OrdersControl(); ordersControl.Dock = DockStyle.Bottom; ordersControl.CreateControl(); ordersControl.SingleSession = session; ordersControl.VisibleChanged += delegate(object sender, EventArgs e) { splitter.Visible = ordersControl.Visible; }; //ordersControl.Manager = this._expert.Manager; panel.Controls.Add(ordersControl); sessionChartControl.CorrespondingOrdersControl = ordersControl; Splitter splitter2 = new Splitter(); splitter2.Dock = DockStyle.Bottom; panel.Controls.Add(splitter2); AccountControl accountControl = new AccountControl(); accountControl.Dock = DockStyle.Bottom; accountControl.CreateControl(); accountControl.Account = session.OrderExecutionProvider.DefaultAccount; panel.Controls.Add(accountControl); } panel.Tag = sessionChartControl; panel.Visible = false; panel.Dock = DockStyle.Fill; return(panel); }
/// <summary> /// When there is update in sessions - synchronize UI components with available sessions. /// </summary> /// <param name="parameter1"></param> void SessionManager_SessionsUpdateEvent(ISourceAndExpertSessionManager parameter1) { foreach (PlatformExpertSession session in _expert.Manager.SessionsArray) { if (GetDragControlBySessionInfo(session.Info) != null) { continue; } PlatformExpertSessionControl sessionControl = new PlatformExpertSessionControl(); AddComponentControl(sessionControl, session.Info.Name); sessionControl.Session = session; } }
void DestroySessionPanel(Panel panel) { if (panel.Tag is PlatformExpertSessionControl) { PlatformExpertSessionControl sessionControl = (PlatformExpertSessionControl)panel.Tag; if (sessionControl.CorrespondingOrdersControl != null) { sessionControl.CorrespondingOrdersControl.SessionManager = null; sessionControl.CorrespondingOrdersControl = null; } sessionControl.Session = null; sessionControl.Dispose(); panel.Tag = null; } }
/// <summary> /// When there is update in sessions - synchronize UI components with available sessions. /// </summary> /// <param name="parameter1"></param> void SessionManager_SessionsUpdateEvent(ISourceAndExpertSessionManager parameter1) { foreach (PlatformExpertSession session in _expert.Manager.SessionsArray) { if (GetDragControlBySessionInfo(session.Info) != null) { continue; } PlatformExpertSessionControl sessionControl = new PlatformExpertSessionControl(); AddComponentControl(sessionControl, session.Info.Name); sessionControl.Session = session; } }
/// <summary> /// Update user interface based on the underlying information. /// </summary> void UpdateUI() { if (_expert == null || _expert.Manager == null) { return; } ExpertSession[] sessions; lock (_expert.Manager) { sessions = GeneralHelper.EnumerableToArray <ExpertSession>(_expert.Manager.SessionsArray); } List <ToolStripButton> panelsButtons = GetPanelsButtons(); foreach (PlatformExpertSession session in sessions) { // Search in already existing. bool sessionFound = false; foreach (ToolStripButton button in panelsButtons) { Panel containingPanel = (Panel)button.Tag; if (containingPanel.Tag is PlatformExpertSessionControl) { PlatformExpertSessionControl sessionControl = (PlatformExpertSessionControl)containingPanel.Tag; if (sessionControl.Session == session) {// Session found and presented, continue. panelsButtons.Remove(button); sessionFound = true; break; } } } if (sessionFound) { continue; } // Create new sessionInformation. Panel panel = CreateSessionPanel(session); panel.Parent = this; panel.BringToFront(); panel.CreateControl(); ToolStripButton newButton = new ToolStripButton(session.Info.Name, ForexPlatformFrontEnd.Properties.Resources.PIN_GREY); newButton.Tag = panel; newButton.Click += new EventHandler(toolStripButton_Click); this.toolStripMain.Items.Add(newButton); // Show newly created sessionInformation. toolStripButton_Click(newButton, EventArgs.Empty); } // Those buttons no longer have corresponding sessions and must be removed. foreach (ToolStripButton button in panelsButtons) { Panel panel = button.Tag as Panel; if (panel.Tag is PlatformExpertSessionControl) { DestroySessionPanel(panel); this.Controls.Remove(panel); button.Click -= new EventHandler(toolStripButton_Click); toolStripMain.Items.Remove(button); } } // Make sure there is at least one visibile sessionInformation if there are any. panelsButtons = GetPanelsButtons(); bool visibleSessionFound = false; foreach (ToolStripButton button in panelsButtons) { if (((Panel)(button.Tag)).Visible) { visibleSessionFound = true; break; } } if (visibleSessionFound == false && panelsButtons.Count > 0) {// Show the first available sessionInformation. toolStripButton_Click(panelsButtons[0], EventArgs.Empty); } //toolStripAdvanced.Visible = toolStripButtonAdvanced.Checked; }
Panel CreateSessionPanel(PlatformExpertSession session) { Panel panel = new Panel(); // Session not found, create new button for it. PlatformExpertSessionControl sessionChartControl = new PlatformExpertSessionControl(); sessionChartControl.Dock = DockStyle.Fill; sessionChartControl.CreateControl(); sessionChartControl.Session = session; panel.Controls.Add(sessionChartControl); if (session.OrderExecutionProvider != null) { Splitter splitter = new SplitterEx(); splitter.Dock = DockStyle.Bottom; panel.Controls.Add(splitter); splitter.Height = 6; OrdersControl ordersControl = new OrdersControl(); ordersControl.Dock = DockStyle.Bottom; ordersControl.CreateControl(); ordersControl.SingleSession = session; ordersControl.VisibleChanged += delegate(object sender, EventArgs e) { splitter.Visible = ordersControl.Visible; }; //ordersControl.Manager = this._expert.Manager; panel.Controls.Add(ordersControl); sessionChartControl.CorrespondingOrdersControl = ordersControl; Splitter splitter2 = new Splitter(); splitter2.Dock = DockStyle.Bottom; panel.Controls.Add(splitter2); AccountControl accountControl = new AccountControl(); accountControl.Dock = DockStyle.Bottom; accountControl.CreateControl(); accountControl.Account = session.OrderExecutionProvider.DefaultAccount; panel.Controls.Add(accountControl); } panel.Tag = sessionChartControl; panel.Visible = false; panel.Dock = DockStyle.Fill; return panel; }