Esempio n. 1
0
    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);

          }
        };
    }
Esempio n. 2
0
    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;
      }
    }