public void Create(IList<SwapsSummaryRow> rows_) { if (m_grid != null) return; setImages(); // kick off live curves CarbonSubscriber.Instance().Initiate(); m_grid = new MainGrid {Dock = DockStyle.Fill}; tableLayoutPanel1.Controls.Add(m_grid, 0, 1); if (rows_ != null) { m_originalList = rows_; rebuildWorkingSet(); m_grid.Create(m_workingSet); } else loadRowsAsync(); cbAlwaysDisplay.CheckedChanged += (x, y) => { cmbAlwaysPlot.Enabled = cbAlwaysDisplay.Checked; reChart(); }; cmbAlwaysPlot.AddItems(typeof(StatCols), true); cmbAlwaysPlot.SelectedIndex = 0; for (int i =0;i<cmbAlwaysPlot.Items.Count;++i) if (cmbAlwaysPlot.Items[i].DisplayText.Equals("Level")) { cmbAlwaysPlot.SelectedIndex = i; break; } cmbAlwaysPlot.ValueChanged += (x, y) => reChart(); { m_scatter = new StatContScatter {Dock = DockStyle.Fill}; utBottomRight.Tabs[1].TabPage.Controls.Add(m_scatter); m_scatter.Create(() => m_workingSet); } // initially hide multiregressor stuff utBottomRight.Tabs[2].Visible = false; multiRegressionCompare1.SetPopupContainer(ultraPopupControlContainer1); m_chartArgs.PropertyChanged += (x, y) => { reChart(); }; dateRangeSelect1.Create(m_chartArgs); m_grid.StatCellClicked += (x, y) => { if (y.Button == System.Windows.Forms.MouseButtons.Left) { m_lastClicked = y; m_scatter.Selected = y.SelectedRows; if (y.SelectedRows.Count()==1 && y.GetSelectedColsAsEnum().First().Value == StatCols.RSquared) { RegressionHelper.ShowRegression(y.SelectedRows.First()); } if (y.SelectedRows.Count()==1 && y.GetSelectedColsAsEnum().First().Value == StatCols.DeMark) { // do nothing when click on DeMark column } else { reChart(); if(utBottomRight.Tabs[2].Visible && y.SelectedRows.Count()==1 && y.GetSelectedColsAsEnum().First().Value==StatCols.Residuals) { utBottomRight.Tabs[2].Text = string.Format("{0} regressor comparison", y.SelectedRows.First().Inst); multiRegressionCompare1.Create(y.SelectedRows.First()); } } } else if (y.Button == System.Windows.Forms.MouseButtons.Right && y.SelectedRows.Count()==1 ) { if (m_contextMenu == null) m_contextMenu = new ContextMenuStrip(); m_contextMenu.Items.Clear(); { var item = y.SelectedRows.First(); m_contextMenu.Items.Add( new MenuItems.GenericMenuItem(item, async (swapSummaryRow_) => { if (swapSummaryRow_.OriginatingConfig != null) await UserListCache.Instance().Remove(swapSummaryRow_.OriginatingConfig); }, string.Format("Remove '{0}' from products", item.Inst)) ); m_contextMenu.Items.Add( new MenuItems.GenericMenuItem(item, (swapSummaryRow_) => { var result = CalendarAnalysisHelper.FindSeasonalPattern(swapSummaryRow_.GetInstrument().A_Prices, new CalendarMovesArgs() { StartYear = 2011 }); var gui = new CalendarPatternTestDisplay(); gui.Create(result); gui.DisplayInShowForm(string.Format("{0} calendar analysis", swapSummaryRow_.Inst)); }, string.Format("'{0}' calendar analysis..", item.Inst)) ); } if (m_contextMenu.Items.Count > 0) m_contextMenu.Show(Cursor.Position); } }; }
private void ultraStatusBar1_ButtonClick(object sender, Infragistics.Win.UltraWinStatusBar.PanelEventArgs e) { setStatus(string.Empty); switch (e.Panel.Key) { case "BTN_REG": { if (m_regEditor == null) { m_regEditor = new RegArgsEditor(); LookFeel.ProcessControl(m_regEditor); } m_regEditor.Create(); if (!object.ReferenceEquals(m_regEditor, ultraPopupControlContainer1.PopupControl)) ultraPopupControlContainer1.PopupControl = m_regEditor; ultraPopupControlContainer1.Show(this, Cursor.Position); } break; case "BTN_STAT": { if (m_statEditor == null) { m_statEditor = new StatContributionEditor(); LookFeel.ProcessControl(m_statEditor); } m_statEditor.Create(); if (!object.ReferenceEquals(m_statEditor, ultraPopupControlContainer1.PopupControl)) ultraPopupControlContainer1.PopupControl = m_statEditor; ultraPopupControlContainer1.Show(this, Cursor.Position); } break; case "BTN_SEASONALITY": { var con = new SI.Strategy.SeasonalityAnalysis.SeasonalityControl(); var insert = new SeasonalityInsert(); insert.Create(m_workingSet); con.AddInstrumentSelectionControl("Trade Analyzer products",insert); //con.Create(); con.DisplayInShowForm("Seasonality analysis on selected products"); } break; case "BTN_NEWPRODUCT": { if (m_structureCreator == null) { m_structureCreator = new StructureCreator(); m_structureCreator.Create(); LookFeel.ProcessControl(m_structureCreator); m_structureCreator.StructureCreated += async (a, b) => { ultraPopupControlContainer1.Close(); if (b.ParsedConfig == null) return; b.ParsedConfig.ListName = profileManageDisplay1.SelectedProfile; try { // has the item already been added to this profile? var item = m_originalList.FirstOrDefault( x => x.OriginatingConfig != null && x.OriginatingConfig.IsSameAs(b.ParsedConfig)); setStatus(string.Empty); if (item != null) { // need to highlight existing one var row = m_grid.Grid.Rows.FirstOrDefault(x => x.ListObject == item); if (row != null) { m_grid.Grid.ActiveRowScrollRegion.ScrollRowIntoView(row); m_grid.Grid.Selected.Rows.Clear(); m_grid.Grid.Selected.Rows.Add(row); } else { setStatus(string.Format("'{0}' is in product list but is currently being filtered out.", item.Inst)); } return; } // chuck the new config into the cache. Once it's been updated to the server, we'll get a callback @ setStatus("Updating your list on the server..."); await UserConfig.UserListCache.Instance().AddOrUpdateDefinition(b.ParsedConfig); } catch (Exception ex_) { Logger.Error("Error adding in new product", typeof (MainControl), ex_); } }; } if (!object.ReferenceEquals(m_structureCreator, ultraPopupControlContainer1.PopupControl)) ultraPopupControlContainer1.PopupControl = m_structureCreator; ultraPopupControlContainer1.Show(this, Cursor.Position); } break; case "BTN_RELOAD": { m_lastClicked = null; m_workingSet.Clear(); foreach (var v in m_originalList) v.Dispose(); m_originalList.Clear(); ButterflySwap.ClearMemoryCache(); CurveSwap.ClearMemoryCache(); OutrightSwap.ClearMemoryCache(); xYyY.ClearMemoryCache(); TenorDatesCache.Instance().InnerList.Clear(); DFsCache.Instance().InnerList.Clear(); UserListCache.Instance().InnerList.Clear(); LiveRateCurveSwapPoint.ClearUpAll(); LiveXRateCurveSwapPoint.ClearUpAll(); GC.Collect(); loadRowsAsync(); } break; } }