Exemplo n.º 1
0
        private void SeriesMoving(MouseEventArgs e)
        {
            MoveSeriesIndicator.MoveStatusEnum moveStatusEnum = CanStartMoveSeries(_seriesSelected);

            object           o;
            ObjectFromCursor objectFromCursor = _chartX.GetObjectFromCursor(out o);

            _chartPanelToMoveTo = null;

            if (moveStatusEnum == MoveSeriesIndicator.MoveStatusEnum.CantMove)
            {
                _moveStatusEnum = MoveSeriesIndicator.MoveStatusEnum.CantMove;
            }
            else
            {
                switch (objectFromCursor)
                {
                case ObjectFromCursor.PanelRightYAxis:
                case ObjectFromCursor.PanelLeftYAxis:
                    if (_chartX.MaximizedPanel != null)
                    {
                        _moveStatusEnum = MoveSeriesIndicator.MoveStatusEnum.CantMove;
                    }
                    else
                    {
                        _moveStatusEnum = moveStatusEnum == MoveSeriesIndicator.MoveStatusEnum.MoveToNewPanel
                                ? moveStatusEnum
                                : MoveSeriesIndicator.MoveStatusEnum.CantMove;
                    }
                    break;

                case ObjectFromCursor.PanelRightNonPaintableArea:
                case ObjectFromCursor.PanelPaintableArea:
                case ObjectFromCursor.PanelLeftNonPaintableArea:
                    _chartPanelToMoveTo = (ChartPanel)o;
                    _moveStatusEnum     = _chartPanelToMoveTo._index != _index
                              ? MoveSeriesIndicator.MoveStatusEnum.MoveToExistingPanel
                              : MoveSeriesIndicator.MoveStatusEnum.CantMove;
                    break;
                }
            }

            _panelsContainer.ShowMoveSeriesIndicator(_panelsContainer.ToPanelsHolder(e), _moveStatusEnum);
        }
Exemplo n.º 2
0
        internal void MoveSeriesTo(Series seriesToMove, ChartPanel chartPanelToMoveTo, MoveSeriesIndicator.MoveStatusEnum moveStatusEnum)
        {
            _panelsContainer.HideMoveSeriesIndicator();
            _chartX.Status = StockChartX.ChartStatus.Ready;
            seriesToMove.HideSelection();
            _rootCanvas.ReleaseMouseCapture();

            if (moveStatusEnum == MoveSeriesIndicator.MoveStatusEnum.CantMove)
            {
                return;
            }

            ChartPanel chartPanel = (moveStatusEnum == MoveSeriesIndicator.MoveStatusEnum.MoveToNewPanel
                                 ? null
                                 : chartPanelToMoveTo) ?? _chartX.AddChartPanel();

            chartPanel._enforceSeriesSetMinMax = true;

            seriesToMove.Painted = false;
            seriesToMove.MoveToPanel(chartPanel);
            if ((seriesToMove._seriesType != SeriesTypeEnum.stCandleChart &&
                 seriesToMove._seriesType != SeriesTypeEnum.stStockBarChart) &&
                seriesToMove._seriesType != SeriesTypeEnum.stStockBarChartHLC)
            {
                _chartX.FireSeriesMoved(seriesToMove, _series.Count == 0 ? -1 : Index, chartPanel.Index);

                _chartX.UpdateByTimer();
                return;
            }
            //series is a part from (O)|HLC group, move the others too
            Series seriesRelated;

            if (seriesToMove.OHLCType != SeriesTypeOHLC.Open &&
                (seriesRelated = GetSeriesOHLCV(seriesToMove, SeriesTypeOHLC.Open)) != null)
            {
                seriesRelated.Painted = false;
                seriesRelated.MoveToPanel(chartPanel);
            }
            if (seriesToMove.OHLCType != SeriesTypeOHLC.High &&
                (seriesRelated = GetSeriesOHLCV(seriesToMove, SeriesTypeOHLC.High)) != null)
            {
                seriesRelated.Painted = false;
                seriesRelated.MoveToPanel(chartPanel);
            }
            if (seriesToMove.OHLCType != SeriesTypeOHLC.Low &&
                (seriesRelated = GetSeriesOHLCV(seriesToMove, SeriesTypeOHLC.Low)) != null)
            {
                seriesRelated.Painted = false;
                seriesRelated.MoveToPanel(chartPanel);
            }
            if (seriesToMove.OHLCType != SeriesTypeOHLC.Close &&
                (seriesRelated = GetSeriesOHLCV(seriesToMove, SeriesTypeOHLC.Close)) != null)
            {
                seriesRelated.Painted = false;
                seriesRelated.MoveToPanel(chartPanel);
            }

            _chartX.FireSeriesMoved(seriesToMove, _series.Count == 0 ? -1 : Index, chartPanel.Index);

            _chartX.UpdateByTimer();
        }