2613 lines
		
	
	
		
			74 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			2613 lines
		
	
	
		
			74 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System;
 | 
						|
using System.Collections;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.ComponentModel;
 | 
						|
using System.ComponentModel.Design;
 | 
						|
using System.Drawing;
 | 
						|
using System.Drawing.Design;
 | 
						|
using System.Drawing.Drawing2D;
 | 
						|
using System.Windows.Forms;
 | 
						|
using System.Windows.Forms.Design;
 | 
						|
using System.Windows.Forms.Design.Behavior;
 | 
						|
using DevComponents.DotNetBar;
 | 
						|
using DevComponents.DotNetBar.Charts;
 | 
						|
using DevComponents.DotNetBar.Charts.Style;
 | 
						|
using Microsoft.Win32;
 | 
						|
 | 
						|
namespace DevComponents.Charts.Design
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// ChartControlDesigner
 | 
						|
    /// </summary>
 | 
						|
    public class ChartControlDesigner : ControlDesigner
 | 
						|
    {
 | 
						|
        static Random _Rand = new Random();
 | 
						|
 | 
						|
        #region Private variables
 | 
						|
 | 
						|
        private ChartControl _ChartControl;
 | 
						|
 | 
						|
        private IDesignerHost _DesignerHost;
 | 
						|
        private DesignerActionListCollection _ActionLists;
 | 
						|
        private DesignerActionUIService _ActionUIService;
 | 
						|
 | 
						|
        private IComponentChangeService _ChangeService;
 | 
						|
        private ISelectionService _SelectionService;
 | 
						|
        private IMenuCommandService _MenuCommandService;
 | 
						|
        private IMenuEditorService _MenuEditorService;
 | 
						|
        private IToolboxService _ToolboxService;
 | 
						|
 | 
						|
        private bool _InCopyItem;
 | 
						|
        private bool _DragMoving;
 | 
						|
 | 
						|
        private bool _UseGlyphs;
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Public properties
 | 
						|
 | 
						|
        #region ChangeService
 | 
						|
 | 
						|
        public IComponentChangeService ChangeService
 | 
						|
        {
 | 
						|
            get { return (_ChangeService); }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region ControlDesigner
 | 
						|
 | 
						|
        public ControlDesigner ControlDesigner
 | 
						|
        {
 | 
						|
            get { return (this); }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region DesignerHost
 | 
						|
 | 
						|
        public IDesignerHost DesignerHost
 | 
						|
        {
 | 
						|
            get { return (_DesignerHost); }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InCopyItem
 | 
						|
 | 
						|
        public bool InCopyItem
 | 
						|
        {
 | 
						|
            get { return (_InCopyItem); }
 | 
						|
            set { _InCopyItem = value; }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InCopyItem
 | 
						|
 | 
						|
        public bool DragMoving
 | 
						|
        {
 | 
						|
            get { return (_DragMoving); }
 | 
						|
            set { _DragMoving = value; }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region SelectionService
 | 
						|
 | 
						|
        public ISelectionService SelectionService
 | 
						|
        {
 | 
						|
            get { return (_SelectionService); }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region MenuEditorService
 | 
						|
 | 
						|
        public IMenuEditorService MenuEditorService
 | 
						|
        {
 | 
						|
            get { return (_MenuEditorService); }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region MenuCommandService
 | 
						|
 | 
						|
        public IMenuCommandService MenuCommandService
 | 
						|
        {
 | 
						|
            get { return (_MenuCommandService); }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region ToolboxService
 | 
						|
 | 
						|
        public IToolboxService ToolboxService
 | 
						|
        {
 | 
						|
            get { return (_ToolboxService); }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Initialize
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Initializes our designer
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="component"></param>
 | 
						|
        public override void Initialize(IComponent component)
 | 
						|
        {
 | 
						|
            base.Initialize(component);
 | 
						|
 | 
						|
            if (component.Site.DesignMode == true)
 | 
						|
                _ChartControl = component as ChartControl;
 | 
						|
 | 
						|
            _DesignerHost = GetService(typeof(IDesignerHost)) as IDesignerHost;
 | 
						|
 | 
						|
            if (_DesignerHost != null)
 | 
						|
                _DesignerHost.LoadComplete += DhLoadComplete;
 | 
						|
 | 
						|
            InitializeServices();
 | 
						|
        }
 | 
						|
 | 
						|
        #region InitializeServices
 | 
						|
 | 
						|
        private void InitializeServices()
 | 
						|
        {
 | 
						|
            _ChangeService = GetService(typeof(IComponentChangeService)) as IComponentChangeService;
 | 
						|
            _SelectionService = GetService(typeof(ISelectionService)) as ISelectionService;
 | 
						|
            _ActionUIService =  GetService(typeof(DesignerActionUIService)) as DesignerActionUIService;
 | 
						|
            _MenuCommandService = GetService(typeof(IMenuCommandService)) as IMenuCommandService;
 | 
						|
            _MenuEditorService = GetService(typeof(IMenuEditorService)) as IMenuEditorService;
 | 
						|
            _ToolboxService = GetService(typeof(IToolboxService)) as IToolboxService;
 | 
						|
 | 
						|
            _ChangeService.ComponentChanged += ChangeService_ComponentChanged;
 | 
						|
            _ChangeService.ComponentAdded += ChangeService_ComponentAdded;
 | 
						|
            _ChangeService.ComponentRemoved += ChangeService_ComponentRemoved;
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InitializeNewComponent
 | 
						|
 | 
						|
        public override void InitializeNewComponent(IDictionary defaultValues)
 | 
						|
        {
 | 
						|
            base.InitializeNewComponent(defaultValues);
 | 
						|
 | 
						|
            ChartStyleDialog csd = new ChartStyleDialog();
 | 
						|
 | 
						|
            csd.ShowDialog();
 | 
						|
 | 
						|
            if (Component != null && Component.Site != null && Component.Site.DesignMode == true)
 | 
						|
            {
 | 
						|
                if (_ChartControl != null)
 | 
						|
                {
 | 
						|
                    IDesignerHost dh = (IDesignerHost)GetService(typeof(IDesignerHost));
 | 
						|
 | 
						|
                    if (dh == null)
 | 
						|
                        return;
 | 
						|
 | 
						|
                    DesignerTransaction dt = dh.CreateTransaction();
 | 
						|
 | 
						|
                    try
 | 
						|
                    {
 | 
						|
                        IComponentChangeService change =
 | 
						|
                            GetService(typeof(IComponentChangeService)) as IComponentChangeService;
 | 
						|
 | 
						|
                        if (change != null)
 | 
						|
                            change.OnComponentChanging(this.Component, null);
 | 
						|
 | 
						|
                        CreateNewChart(csd);
 | 
						|
 | 
						|
                        if (change != null)
 | 
						|
                            change.OnComponentChanged(_ChartControl, null, null, null);
 | 
						|
                    }
 | 
						|
                    finally
 | 
						|
                    {
 | 
						|
                        dt.Commit();
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
#if !TRIAL
 | 
						|
            ChartControl chartControl = Control as ChartControl;
 | 
						|
 | 
						|
            if (chartControl != null)
 | 
						|
                chartControl.LicenseKey = GetLicenseKey();
 | 
						|
#endif
 | 
						|
        }
 | 
						|
 | 
						|
        #region CreateNewChart
 | 
						|
 | 
						|
        private void CreateNewChart(ChartStyleDialog csd)
 | 
						|
        {
 | 
						|
            SetupScrollBarStyles();
 | 
						|
 | 
						|
            switch (csd.CbSelected)
 | 
						|
            {
 | 
						|
                case "cbPointPlot":
 | 
						|
                    InitDefaultPlot(SeriesType.Point);
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbLinePlot":
 | 
						|
                    InitDefaultPlot(SeriesType.Line);
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbMultiAxis":
 | 
						|
                    InitMultiAxis();
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbVDotPlot":
 | 
						|
                    InitDotPlot(SeriesType.HorizontalDot);
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbHDotPlot":
 | 
						|
                    InitDotPlot(SeriesType.VerticalDot);
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbMultiChart":
 | 
						|
                    InitMultiChart();
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbBubblePlot":
 | 
						|
                    InitBubblePlot();
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbStepLine":
 | 
						|
                    ChartSeries series1 = InitDefaultPlot(SeriesType.Line);
 | 
						|
                    
 | 
						|
                    if (series1 != null)
 | 
						|
                        series1.ChartLineDisplayMode = ChartLineDisplayMode.DisplayStepLine;
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbLineArea":
 | 
						|
                    ChartSeries series2 = InitDefaultPlot(SeriesType.Line);
 | 
						|
                    
 | 
						|
                    if (series2 != null)
 | 
						|
                        series2.ChartLineAreaDisplayMode = ChartLineAreaDisplayMode.DisplayLine;
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbBarV":
 | 
						|
                    InitBar(SeriesType.VerticalBar, false);
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbBarH":
 | 
						|
                    InitBar(SeriesType.HorizontalBar, false);
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbRangeBarV":
 | 
						|
                    InitBar(SeriesType.VerticalBar, true);
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbRangeBarH":
 | 
						|
                    InitBar(SeriesType.HorizontalBar, true);
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbHiLoVBox":
 | 
						|
                    InitHiLoBar(SeriesType.VerticalHiLoBar, HiLoBarType.Box);
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbHiLoHBox":
 | 
						|
                    InitHiLoBar(SeriesType.HorizontalHiLoBar, HiLoBarType.Box);
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbHiLoVLine":
 | 
						|
                    InitHiLoBar(SeriesType.VerticalHiLoBar, HiLoBarType.Line);
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbHiLoHLine":
 | 
						|
                    InitHiLoBar(SeriesType.HorizontalHiLoBar, HiLoBarType.Line);
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbPieSimple":
 | 
						|
                    InitPieSimple();
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbPieDonut":
 | 
						|
                    InitPieDonut();
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbPieExtent":
 | 
						|
                    InitPieExtent();
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbPieExtentFill":
 | 
						|
                    InitPieExtentFill();
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbPieMultiRing":
 | 
						|
                    InitPieMultiRing();
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbPieMultiRingRev":
 | 
						|
                    InitPieMultiRingRev();
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbPieMultiSeries":
 | 
						|
                    InitPieMultiSeries();
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbPieShowSingleRing":
 | 
						|
                    InitPieShowSingleRing();
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbPieGridAngle":
 | 
						|
                    InitPieGridAngle();
 | 
						|
                    break;
 | 
						|
 | 
						|
                case "cbPieOverlay":
 | 
						|
                    InitPieOverlay();
 | 
						|
                    break;
 | 
						|
 | 
						|
                default:
 | 
						|
                    InitBlankChart();
 | 
						|
                    break;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #region InitDefaultPie
 | 
						|
 | 
						|
        private PieChart InitDefaultPie(int seriesCount, int ringCount, bool extent)
 | 
						|
        {
 | 
						|
            PieChart pieChart = AddPieChart();
 | 
						|
 | 
						|
            if (pieChart != null)
 | 
						|
            {
 | 
						|
                for (int i = 0; i < seriesCount; i++)
 | 
						|
                {
 | 
						|
                    PieSeries series = GetNewPieSeries(pieChart);
 | 
						|
 | 
						|
                    if (series != null)
 | 
						|
                        AddSimulatedPieData(series, ringCount, extent);
 | 
						|
 | 
						|
                    pieChart.ChartSeries.Add(series);
 | 
						|
                }
 | 
						|
 | 
						|
                _ChartControl.ChartPanel.ChartContainers.Add(pieChart);
 | 
						|
            }
 | 
						|
 | 
						|
            return (pieChart);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InitPieSimple
 | 
						|
 | 
						|
        private void InitPieSimple()
 | 
						|
        {
 | 
						|
            InitDefaultPie(1, 1, false);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InitPieDonut
 | 
						|
 | 
						|
        private void InitPieDonut()
 | 
						|
        {
 | 
						|
            PieChart pieChart = InitDefaultPie(1, 1, false);
 | 
						|
 | 
						|
            pieChart.InnerRadius = .2;
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InitPieExtent
 | 
						|
 | 
						|
        private void InitPieExtent()
 | 
						|
        {
 | 
						|
            InitDefaultPie(1, 1, true);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InitPieExtentFill
 | 
						|
 | 
						|
        private void InitPieExtentFill()
 | 
						|
        {
 | 
						|
            PieChart pieChart = InitDefaultPie(1, 1, true);
 | 
						|
 | 
						|
            pieChart.SubSliceVisualLayout.ShowSliceWhiteSpace = Tbool.True;
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InitPieMultiRing
 | 
						|
 | 
						|
        private void InitPieMultiRing()
 | 
						|
        {
 | 
						|
            InitDefaultPie(1, 2, false);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InitPieMultiRingRev
 | 
						|
 | 
						|
        private void InitPieMultiRingRev()
 | 
						|
        {
 | 
						|
            PieChart pieChart = InitDefaultPie(1, 2, false);
 | 
						|
 | 
						|
            pieChart.ReverseRingOrder = true;
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InitPieMultiSeries
 | 
						|
 | 
						|
        private void InitPieMultiSeries()
 | 
						|
        {
 | 
						|
            InitDefaultPie(2, 1, false);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InitPieShowSingleRing
 | 
						|
 | 
						|
        private void InitPieShowSingleRing()
 | 
						|
        {
 | 
						|
            PieChart pieChart = InitDefaultPie(1, 2, false);
 | 
						|
 | 
						|
            pieChart.InnerRadius = .3;
 | 
						|
            pieChart.ShowAllRings = Tbool.False;
 | 
						|
            pieChart.MouseDoubleClickSliceAction = MouseDoubleClickSliceAction.ChangeActiveRing;
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InitPieGridAngle
 | 
						|
 | 
						|
        private void InitPieGridAngle()
 | 
						|
        {
 | 
						|
            PieChart pieChart = InitDefaultPie(1, 1, true);
 | 
						|
 | 
						|
            pieChart.ShowPieGrid = true;
 | 
						|
            pieChart.SubSliceVisualLayout.AngleMargin = 2;
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InitPieOverlay
 | 
						|
 | 
						|
        private void InitPieOverlay()
 | 
						|
        {
 | 
						|
            PieChart pieChart = InitDefaultPie(2, 1, true);
 | 
						|
 | 
						|
            pieChart.ShowPieGrid = true;
 | 
						|
            pieChart.SeriesOverlayEnabled = true;
 | 
						|
 | 
						|
            pieChart.ChartControl.UpdateLayout();
 | 
						|
 | 
						|
            pieChart.SubSliceVisualLayout.AngleMargin = 2;
 | 
						|
 | 
						|
            for (int i = 0; i < pieChart.ChartSeries.Count; i++)
 | 
						|
            {
 | 
						|
                PieSeries series = pieChart.ChartSeries[i];
 | 
						|
 | 
						|
                UpdateOverlayBackground(series.SeriesPoints);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #region UpdateOverlayBackground
 | 
						|
 | 
						|
        private void UpdateOverlayBackground(PieSeriesPointCollection spc)
 | 
						|
        {
 | 
						|
            if (spc.Count > 0)
 | 
						|
            {
 | 
						|
                foreach (PieSeriesPoint psp in spc)
 | 
						|
                {
 | 
						|
                    psp.SliceVisualStyles.Default.Background =
 | 
						|
                        new Background(Color.FromArgb(110, psp.DefaultPaletteColor));
 | 
						|
 | 
						|
                    UpdateOverlayBackground(psp.SeriesPoints);
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region AddPieChart
 | 
						|
 | 
						|
        private PieChart AddPieChart()
 | 
						|
        {
 | 
						|
            PieChart pieChart = new PieChart();
 | 
						|
 | 
						|
            if (pieChart != null)
 | 
						|
            {
 | 
						|
                pieChart.Name = _ChartControl.ChartPanel.ChartContainers.GetUniqueName("PieChart");
 | 
						|
 | 
						|
                pieChart.IsExploded = true;
 | 
						|
 | 
						|
                SetupPieChartStyle(pieChart);
 | 
						|
                SetupContainerStyle(pieChart);
 | 
						|
                SetupPieLegend(pieChart);
 | 
						|
 | 
						|
                AddChartTitle(pieChart);
 | 
						|
            }
 | 
						|
 | 
						|
            return (pieChart);
 | 
						|
        }
 | 
						|
 | 
						|
        #region SetupPieChartStyle
 | 
						|
 | 
						|
        private void SetupPieChartStyle(PieChart pieChart)
 | 
						|
        {
 | 
						|
            PieChartVisualStyle pstyle = pieChart.ChartVisualStyle;
 | 
						|
 | 
						|
            pstyle.Background = new Background(Color.White);
 | 
						|
            pstyle.BorderThickness = new Thickness(1);
 | 
						|
            pstyle.BorderColor = new BorderColor(Color.Black);
 | 
						|
 | 
						|
            pstyle.Padding = new DevComponents.DotNetBar.Charts.Style.Padding(6);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region SetupPieLegend
 | 
						|
 | 
						|
        private void SetupPieLegend(BaseChart baseChart)
 | 
						|
        {
 | 
						|
            ChartLegend legend = baseChart.Legend;
 | 
						|
 | 
						|
            legend.ShowCheckBoxes = false;
 | 
						|
 | 
						|
            legend.Placement = Placement.Outside;
 | 
						|
            legend.Alignment = Alignment.BottomCenter;
 | 
						|
            legend.Direction = Direction.LeftToRight;
 | 
						|
 | 
						|
            legend.AlignVerticalItems = true;
 | 
						|
 | 
						|
            legend.MaxVerticalPct = 90;
 | 
						|
 | 
						|
            ChartLegendVisualStyle lstyle = legend.ChartLegendVisualStyles.Default;
 | 
						|
 | 
						|
            lstyle.BorderThickness = new Thickness(1);
 | 
						|
            lstyle.BorderColor = new BorderColor(Color.Black);
 | 
						|
 | 
						|
            lstyle.Margin = new DevComponents.DotNetBar.Charts.Style.Padding(4);
 | 
						|
            lstyle.Padding = new DevComponents.DotNetBar.Charts.Style.Padding(4);
 | 
						|
 | 
						|
            lstyle.Background = new Background(Color.FromArgb(200, Color.White));
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region AddPieTitle
 | 
						|
 | 
						|
        private void AddPieTitle(ChartXy chartXy)
 | 
						|
        {
 | 
						|
            ChartTitle title = new ChartTitle();
 | 
						|
 | 
						|
            title.Name = chartXy.Titles.GetUniqueName();
 | 
						|
 | 
						|
            title.Text = "PieChart Title";
 | 
						|
            title.XyAlignment = XyAlignment.Top;
 | 
						|
 | 
						|
            ChartTitleVisualStyle tstyle = title.ChartTitleVisualStyle;
 | 
						|
 | 
						|
            tstyle.Padding = new DevComponents.DotNetBar.Charts.Style.Padding(8);
 | 
						|
            tstyle.Font = new Font("Georgia", 16);
 | 
						|
            tstyle.TextColor = Color.Navy;
 | 
						|
            tstyle.Alignment = Alignment.MiddleCenter;
 | 
						|
 | 
						|
            chartXy.Titles.Add(title);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InitBlankChart
 | 
						|
 | 
						|
        private void InitBlankChart()
 | 
						|
        {
 | 
						|
            ChartPanel chartPanel = _ChartControl.ChartPanel;
 | 
						|
 | 
						|
            chartPanel.EmptyText = "No Charts Defined.";
 | 
						|
 | 
						|
            chartPanel.ContainerVisualStyles.Default.BorderColor = new BorderColor(Color.Black);
 | 
						|
            chartPanel.ContainerVisualStyles.Default.BorderThickness = new Thickness(1);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InitDefaultPlot
 | 
						|
 | 
						|
        private ChartSeries InitDefaultPlot(SeriesType seriesType)
 | 
						|
        {
 | 
						|
            ChartXy chartXy = AddChartXy();
 | 
						|
 | 
						|
            if (chartXy != null)
 | 
						|
            {
 | 
						|
                ChartSeries series = GetNewChartSeries(chartXy, seriesType);
 | 
						|
 | 
						|
                if (series != null)
 | 
						|
                    AddSimulatedData(series);
 | 
						|
 | 
						|
                _ChartControl.ChartPanel.ChartContainers.Add(chartXy);
 | 
						|
 | 
						|
                chartXy.ChartSeries.Add(series);
 | 
						|
 | 
						|
                return (series);
 | 
						|
            }
 | 
						|
 | 
						|
            return (null);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InitMultiAxis
 | 
						|
 | 
						|
        private void InitMultiAxis()
 | 
						|
        {
 | 
						|
            ChartXy chartXy = AddChartXy();
 | 
						|
 | 
						|
            if (chartXy != null)
 | 
						|
            {
 | 
						|
                ChartAxisX axisX = new ChartAxisX();
 | 
						|
                axisX.Name = chartXy.AncillaryAxesX.GetUniqueName();
 | 
						|
 | 
						|
                chartXy.AncillaryAxesX.Add(axisX);
 | 
						|
 | 
						|
                ChartAxisY axisY = new ChartAxisY();
 | 
						|
                axisY.Name = chartXy.AncillaryAxesY.GetUniqueName();
 | 
						|
                axisY.AxisAlignment = AxisAlignment.Near;
 | 
						|
 | 
						|
                chartXy.AncillaryAxesY.Add(axisY);
 | 
						|
 | 
						|
                ChartSeries series = GetNewChartSeries(chartXy, SeriesType.Line);
 | 
						|
 | 
						|
                if (series != null)
 | 
						|
                {
 | 
						|
                    series.ChartLineDisplayMode = ChartLineDisplayMode.DisplayPoints;
 | 
						|
 | 
						|
                    AddSimulatedData(series);
 | 
						|
 | 
						|
                    series.SeriesPoints.Add(new SeriesPoint(0d, 50d));
 | 
						|
                    series.SeriesPoints.Add(new SeriesPoint(12d, 0d));
 | 
						|
 | 
						|
                    chartXy.ChartSeries.Add(series);
 | 
						|
                }
 | 
						|
 | 
						|
                series = GetNewChartSeries(chartXy, SeriesType.Line);
 | 
						|
 | 
						|
                if (series != null)
 | 
						|
                {
 | 
						|
                    series.ChartLineDisplayMode = ChartLineDisplayMode.DisplaySpline;
 | 
						|
 | 
						|
                    AddSimulatedData(series);
 | 
						|
 | 
						|
                    series.SeriesPoints.Add(new SeriesPoint(0d, 0d));
 | 
						|
                    series.SeriesPoints.Add(new SeriesPoint(12d, 50d));
 | 
						|
 | 
						|
                    series.AxisX = axisX;
 | 
						|
                    series.AxisY = axisY;
 | 
						|
 | 
						|
                    chartXy.ChartSeries.Add(series);
 | 
						|
                }
 | 
						|
 | 
						|
                _ChartControl.ChartPanel.ChartContainers.Add(chartXy);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InitDotPlot
 | 
						|
 | 
						|
        private void InitDotPlot(SeriesType chartType)
 | 
						|
        {
 | 
						|
            ChartXy chartXy = AddChartXy();
 | 
						|
 | 
						|
            if (chartXy != null)
 | 
						|
            {
 | 
						|
                chartXy.Legend.Alignment = Alignment.TopRight;
 | 
						|
 | 
						|
                chartXy.AxisX.MinGridInterval = 20;
 | 
						|
                chartXy.AxisY.MinGridInterval = 20;
 | 
						|
 | 
						|
                chartXy.AxisX.MinorTickmarks.TickmarkCount = 0;
 | 
						|
                chartXy.AxisY.MinorTickmarks.TickmarkCount = 0;
 | 
						|
 | 
						|
                chartXy.MinContentSize = new Size(100, 100);
 | 
						|
 | 
						|
                ChartSeries series = GetNewChartSeries(chartXy, chartType);
 | 
						|
 | 
						|
                if (series != null)
 | 
						|
                {
 | 
						|
                    PointMarkerVisualStyle mstyle = series.ChartSeriesVisualStyle.MarkerVisualStyle;
 | 
						|
 | 
						|
                    mstyle.Size = new Size(10, 10);
 | 
						|
                    mstyle.Background = new Background(Color.CornflowerBlue);
 | 
						|
                    mstyle.BorderColor = Color.Black;
 | 
						|
                    mstyle.BorderWidth = 1;
 | 
						|
 | 
						|
                    AddSimulatedDotPlotData(series);
 | 
						|
                }
 | 
						|
 | 
						|
                _ChartControl.ChartPanel.ChartContainers.Add(chartXy);
 | 
						|
 | 
						|
                chartXy.ChartSeries.Add(series);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InitMultiChart
 | 
						|
 | 
						|
        private void InitMultiChart()
 | 
						|
        {
 | 
						|
            for (int i = 0; i < 4; i++)
 | 
						|
                InitDefaultPlot(SeriesType.Line);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InitBubblePlot
 | 
						|
 | 
						|
        private void InitBubblePlot()
 | 
						|
        {
 | 
						|
            ChartXy chartXy = AddChartXy();
 | 
						|
 | 
						|
            if (chartXy != null)
 | 
						|
            {
 | 
						|
                ChartSeries series = GetNewChartSeries(chartXy, SeriesType.Bubble);
 | 
						|
 | 
						|
                if (series != null)
 | 
						|
                {
 | 
						|
                    PointMarkerVisualStyle mstyle =
 | 
						|
                        series.ChartSeriesVisualStyle.MarkerVisualStyle;
 | 
						|
 | 
						|
                    mstyle.Background = new Background(Color.FromArgb(150, Color.DarkGreen));
 | 
						|
                    mstyle.BorderWidth = 1;
 | 
						|
                    mstyle.BorderColor = Color.DarkGreen;
 | 
						|
 | 
						|
                    AddSimulatedBubbleData(series);
 | 
						|
 | 
						|
                    chartXy.ChartSeries.Add(series);
 | 
						|
                }
 | 
						|
 | 
						|
                series = GetNewChartSeries(chartXy, SeriesType.Bubble);
 | 
						|
 | 
						|
                if (series != null)
 | 
						|
                {
 | 
						|
                    PointMarkerVisualStyle mstyle =
 | 
						|
                        series.ChartSeriesVisualStyle.MarkerVisualStyle;
 | 
						|
 | 
						|
                    mstyle.Background = new Background(Color.FromArgb(150, Color.DarkBlue));
 | 
						|
                    mstyle.BorderWidth = 1;
 | 
						|
                    mstyle.BorderColor = Color.DarkBlue;
 | 
						|
 | 
						|
                    AddSimulatedBubbleData(series);
 | 
						|
 | 
						|
                    chartXy.ChartSeries.Add(series);
 | 
						|
                }
 | 
						|
 | 
						|
                _ChartControl.ChartPanel.ChartContainers.Add(chartXy);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InitBar
 | 
						|
 | 
						|
        private void InitBar(SeriesType seriesType, bool rangeBar)
 | 
						|
        {
 | 
						|
            ChartXy chartXy = AddChartXy();
 | 
						|
 | 
						|
            if (chartXy != null)
 | 
						|
            {
 | 
						|
                chartXy.BarShadingEnabled = Tbool.True;
 | 
						|
 | 
						|
                ChartSeries series = GetNewChartSeries(chartXy, seriesType);
 | 
						|
 | 
						|
                if (series != null)
 | 
						|
                {
 | 
						|
                    if (rangeBar == true)
 | 
						|
                        AddSimulatedRangeData(series);
 | 
						|
                    else
 | 
						|
                        AddSimulatedData(series);
 | 
						|
 | 
						|
                    _ChartControl.ChartPanel.ChartContainers.Add(chartXy);
 | 
						|
 | 
						|
                    chartXy.ChartSeries.Add(series);
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region InitHiLoBar
 | 
						|
 | 
						|
        private void InitHiLoBar(SeriesType seriesType, HiLoBarType hiloType)
 | 
						|
        {
 | 
						|
            ChartXy chartXy = AddChartXy();
 | 
						|
 | 
						|
            if (chartXy != null)
 | 
						|
            {
 | 
						|
                chartXy.BarShadingEnabled = Tbool.True;
 | 
						|
 | 
						|
                chartXy.AxisX.GridSpacing = 1;
 | 
						|
                chartXy.AxisY.GridSpacing = 1;
 | 
						|
 | 
						|
                if (seriesType == SeriesType.VerticalHiLoBar)
 | 
						|
                {
 | 
						|
                    chartXy.AxisX.AxisMargins = 0;
 | 
						|
                    chartXy.AxisX.MinorTickmarks.TickmarkCount = 0;
 | 
						|
                    chartXy.AxisY.MinorTickmarks.TickmarkCount = 1;
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    chartXy.AxisY.AxisMargins = 0;
 | 
						|
                    chartXy.AxisX.MinorTickmarks.TickmarkCount = 1;
 | 
						|
                    chartXy.AxisY.MinorTickmarks.TickmarkCount = 0;
 | 
						|
                }
 | 
						|
 | 
						|
                ChartSeries series = GetNewChartSeries(chartXy, seriesType);
 | 
						|
 | 
						|
                if (series != null)
 | 
						|
                {
 | 
						|
                    series.HiLoBarType = hiloType;
 | 
						|
 | 
						|
                    ChartHiLoBarVisualStyle style = series.ChartSeriesVisualStyle.HiLoBarVisualStyle;
 | 
						|
 | 
						|
                    style.ShowWhiskerCaps = Tbool.True;
 | 
						|
                    style.UseAlternateSegmentStyle = Tbool.True;
 | 
						|
 | 
						|
                    style.DefaultSegmentStyle.BoxBackground = new Background(Color.Green);
 | 
						|
                    style.DefaultSegmentStyle.Default.LineColor = Color.Green;
 | 
						|
                    style.DefaultSegmentStyle.Default.LineWidth = 2;
 | 
						|
 | 
						|
                    style.AlternateSegmentStyle.BoxBackground = new Background(Color.Red);
 | 
						|
                    style.AlternateSegmentStyle.Default.LineColor = Color.Crimson;
 | 
						|
                    style.AlternateSegmentStyle.Default.LineWidth = 2;
 | 
						|
 | 
						|
                    AddSimulatedHiLoData(series);
 | 
						|
 | 
						|
                    _ChartControl.ChartPanel.ChartContainers.Add(chartXy);
 | 
						|
 | 
						|
                    chartXy.ChartSeries.Add(series);
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region SetupScrollBarStyles
 | 
						|
 | 
						|
        private void SetupScrollBarStyles()
 | 
						|
        {
 | 
						|
            ScrollBarVisualStyle moStyle =
 | 
						|
                _ChartControl.DefaultVisualStyles.HScrollBarVisualStyles.MouseOver;
 | 
						|
 | 
						|
            moStyle.ArrowBackground = new Background(Color.AliceBlue);
 | 
						|
            moStyle.ThumbBackground = new Background(Color.AliceBlue);
 | 
						|
 | 
						|
            ScrollBarVisualStyle smoStyle =
 | 
						|
                _ChartControl.DefaultVisualStyles.HScrollBarVisualStyles.SelectedMouseOver;
 | 
						|
 | 
						|
            smoStyle.ArrowBackground = new Background(Color.White);
 | 
						|
            smoStyle.ThumbBackground = new Background(Color.White);
 | 
						|
 | 
						|
            moStyle = _ChartControl.DefaultVisualStyles.VScrollBarVisualStyles.MouseOver;
 | 
						|
 | 
						|
            moStyle.ArrowBackground = new Background(Color.AliceBlue);
 | 
						|
            moStyle.ThumbBackground = new Background(Color.AliceBlue);
 | 
						|
 | 
						|
            smoStyle = _ChartControl.DefaultVisualStyles.VScrollBarVisualStyles.SelectedMouseOver;
 | 
						|
 | 
						|
            smoStyle.ArrowBackground = new Background(Color.White);
 | 
						|
            smoStyle.ThumbBackground = new Background(Color.White);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region AddChartXy
 | 
						|
 | 
						|
        private ChartXy AddChartXy()
 | 
						|
        {
 | 
						|
            ChartXy chartXy = new ChartXy();
 | 
						|
 | 
						|
            if (chartXy != null)
 | 
						|
            {
 | 
						|
                chartXy.Name = _ChartControl.ChartPanel.ChartContainers.GetUniqueName("ChartXy");
 | 
						|
 | 
						|
                chartXy.ChartCrosshair.AxisOrientation = AxisOrientation.X;
 | 
						|
 | 
						|
                chartXy.ChartCrosshair.ShowValueXLine = true;
 | 
						|
                chartXy.ChartCrosshair.ShowValueYLine = true;
 | 
						|
                chartXy.ChartCrosshair.ShowValueXLabels = true;
 | 
						|
                chartXy.ChartCrosshair.ShowValueYLabels = true;
 | 
						|
 | 
						|
                chartXy.ChartCrosshair.HighlightPoints = true;
 | 
						|
 | 
						|
                chartXy.ChartCrosshair.ShowCrosshairLabels = true;
 | 
						|
                chartXy.ChartCrosshair.CrosshairLabelMode = CrosshairLabelMode.NearestSeries;
 | 
						|
 | 
						|
                chartXy.ChartCrosshair.CrosshairVisualStyle.Background = new Background(Color.White);
 | 
						|
 | 
						|
                SetupChartStyle(chartXy);
 | 
						|
                SetupContainerStyle(chartXy);
 | 
						|
                SetupChartAxes(chartXy);
 | 
						|
                SetupChartLegend(chartXy);
 | 
						|
 | 
						|
                AddChartTitle(chartXy);
 | 
						|
            }
 | 
						|
 | 
						|
            return (chartXy);
 | 
						|
        }
 | 
						|
 | 
						|
        #region SetupChartAxes
 | 
						|
 | 
						|
        private void SetupChartAxes(ChartXy chartXy)
 | 
						|
        {
 | 
						|
            // X Axis
 | 
						|
 | 
						|
            ChartAxis axis = chartXy.AxisX;
 | 
						|
 | 
						|
            axis.MajorGridLines.GridLinesVisualStyle.LineColor = Color.Gainsboro;
 | 
						|
            axis.MinorGridLines.GridLinesVisualStyle.LineColor = Color.WhiteSmoke;
 | 
						|
 | 
						|
            // Y Axis
 | 
						|
 | 
						|
            axis = chartXy.AxisY;
 | 
						|
 | 
						|
            axis.AxisAlignment = AxisAlignment.Far;
 | 
						|
 | 
						|
            axis.MajorGridLines.GridLinesVisualStyle.LineColor = Color.Gainsboro;
 | 
						|
            axis.MinorGridLines.GridLinesVisualStyle.LineColor = Color.WhiteSmoke;
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region SetupChartStyle
 | 
						|
 | 
						|
        private void SetupChartStyle(ChartXy chartXy)
 | 
						|
        {
 | 
						|
            ChartXyVisualStyle xystyle = chartXy.ChartVisualStyle;
 | 
						|
 | 
						|
            xystyle.Background = new Background(Color.White);
 | 
						|
            xystyle.BorderThickness = new Thickness(1);
 | 
						|
            xystyle.BorderColor = new BorderColor(Color.Black);
 | 
						|
 | 
						|
            xystyle.Padding = new DevComponents.DotNetBar.Charts.Style.Padding(6);
 | 
						|
 | 
						|
            ChartSeriesVisualStyle cstyle = chartXy.ChartSeriesVisualStyle;
 | 
						|
            PointMarkerVisualStyle pstyle = cstyle.MarkerHighlightVisualStyle;
 | 
						|
 | 
						|
            pstyle.Background = new Background(Color.Yellow);
 | 
						|
            pstyle.Type = PointMarkerType.Ellipse;
 | 
						|
            pstyle.Size = new Size(15, 15);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region SetupContainerStyle
 | 
						|
 | 
						|
        private void SetupContainerStyle(BaseChart baseChart)
 | 
						|
        {
 | 
						|
            ContainerVisualStyle dstyle = baseChart.ContainerVisualStyles.Default;
 | 
						|
 | 
						|
            dstyle.Background = new Background(Color.White);
 | 
						|
            dstyle.BorderColor = new BorderColor(Color.DimGray);
 | 
						|
            dstyle.BorderThickness = new Thickness(1);
 | 
						|
 | 
						|
            dstyle.DropShadow.Enabled = Tbool.True;
 | 
						|
            dstyle.Padding = new DevComponents.DotNetBar.Charts.Style.Padding(6);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region SetupChartLegend
 | 
						|
 | 
						|
        private void SetupChartLegend(BaseChart baseChart)
 | 
						|
        {
 | 
						|
            ChartLegend legend = baseChart.Legend;
 | 
						|
 | 
						|
            legend.ShowCheckBoxes = false;
 | 
						|
            legend.Placement = Placement.Inside;
 | 
						|
            legend.Alignment = Alignment.TopLeft;
 | 
						|
            legend.AlignVerticalItems = true;
 | 
						|
            legend.Direction = Direction.LeftToRight;
 | 
						|
 | 
						|
            legend.MaxHorizontalPct = 75;
 | 
						|
 | 
						|
            ChartLegendVisualStyle lstyle = legend.ChartLegendVisualStyles.Default;
 | 
						|
 | 
						|
            lstyle.BorderThickness = new Thickness(1);
 | 
						|
            lstyle.BorderColor = new BorderColor(Color.Black);
 | 
						|
 | 
						|
            lstyle.Margin = new DevComponents.DotNetBar.Charts.Style.Padding(8);
 | 
						|
            lstyle.Padding = new DevComponents.DotNetBar.Charts.Style.Padding(4);
 | 
						|
 | 
						|
            lstyle.Background = new Background(Color.FromArgb(200, Color.White));
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region AddChartTitle
 | 
						|
 | 
						|
        private void AddChartTitle(BaseChart baseChart)
 | 
						|
        {
 | 
						|
            ChartTitle title = new ChartTitle();
 | 
						|
 | 
						|
            title.Name = baseChart.Titles.GetUniqueName();
 | 
						|
 | 
						|
            title.Text = "Chart Title";
 | 
						|
            title.XyAlignment = XyAlignment.Top;
 | 
						|
 | 
						|
            ChartTitleVisualStyle tstyle = title.ChartTitleVisualStyle;
 | 
						|
 | 
						|
            tstyle.Padding = new DevComponents.DotNetBar.Charts.Style.Padding(8);
 | 
						|
            tstyle.Font = new Font("Georgia", 16);
 | 
						|
            tstyle.TextColor = Color.Navy;
 | 
						|
            tstyle.Alignment = Alignment.MiddleCenter;
 | 
						|
 | 
						|
            baseChart.Titles.Add(title);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region GetNewChartSeries
 | 
						|
 | 
						|
        private ChartSeries GetNewChartSeries(ChartXy chartXy, SeriesType chartType)
 | 
						|
        {
 | 
						|
            ChartSeries series = new ChartSeries(chartType);
 | 
						|
 | 
						|
            if (series != null)
 | 
						|
            {
 | 
						|
                series.Name = chartXy.ChartSeries.GetUniqueName();
 | 
						|
 | 
						|
                series.CrosshairHighlightPoints = Tbool.True;
 | 
						|
            }
 | 
						|
 | 
						|
            return (series);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region GetNewPieSeries
 | 
						|
 | 
						|
        private PieSeries GetNewPieSeries(PieChart pieChart)
 | 
						|
        {
 | 
						|
            PieSeries series = new PieSeries();
 | 
						|
 | 
						|
            if (series != null)
 | 
						|
                series.Name = pieChart.ChartSeries.GetUniqueName();
 | 
						|
 | 
						|
            return (series);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region AddSimulatedData
 | 
						|
 | 
						|
        private void AddSimulatedData(ChartSeries series)
 | 
						|
        {
 | 
						|
            for (int i = 0; i < 10; i++)
 | 
						|
            {
 | 
						|
                double d = Convert.ToDouble(i);
 | 
						|
 | 
						|
                series.SeriesPoints.Add(
 | 
						|
                    new SeriesPoint(d, Convert.ToDouble(_Rand.Next(2, 50))));
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region AddSimulatedDotPlotData
 | 
						|
 | 
						|
        private void AddSimulatedDotPlotData(ChartSeries series)
 | 
						|
        {
 | 
						|
            for (int i = 0; i < 10; i++)
 | 
						|
            {
 | 
						|
                series.SeriesPoints.Add(
 | 
						|
                    new SeriesPoint(i, _Rand.Next(0, 10)));
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region AddSimulatedBubbleData
 | 
						|
 | 
						|
        private void AddSimulatedBubbleData(ChartSeries series)
 | 
						|
        {
 | 
						|
            for (int i = 0; i < 5; i++)
 | 
						|
            {
 | 
						|
                double d = Convert.ToDouble(i);
 | 
						|
 | 
						|
                series.SeriesPoints.Add(
 | 
						|
                    new SeriesPoint(d, 
 | 
						|
                        Convert.ToDouble(_Rand.Next(0, 10)), 
 | 
						|
                        Convert.ToDouble(_Rand.Next(10, 1000))));
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region AddSimulatedRangeData
 | 
						|
 | 
						|
        private void AddSimulatedRangeData(ChartSeries series)
 | 
						|
        {
 | 
						|
            for (int i = 0; i < 10; i++)
 | 
						|
            {
 | 
						|
                double d = Convert.ToDouble(i);
 | 
						|
 | 
						|
                double v1 = Convert.ToDouble(_Rand.Next(2, 50));
 | 
						|
                double v2 = v1 + Convert.ToDouble(_Rand.Next(10, 20));
 | 
						|
 | 
						|
                series.SeriesPoints.Add(new SeriesPoint(d, v1, v2));
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region AddSimulatedHiLoData
 | 
						|
 | 
						|
        private void AddSimulatedHiLoData(ChartSeries series)
 | 
						|
        {
 | 
						|
            for (int i = 0; i < 5; i++)
 | 
						|
            {
 | 
						|
                double d = Convert.ToDouble(i);
 | 
						|
 | 
						|
                double lo = _Rand.NextDouble() * 5;
 | 
						|
                double hi = lo + _Rand.NextDouble() * 5 + 10;
 | 
						|
 | 
						|
                double mid = Math.Floor((hi + lo) / 2);
 | 
						|
 | 
						|
                double open = mid - _Rand.NextDouble() * 5;
 | 
						|
                double close = mid + _Rand.NextDouble() * 5;
 | 
						|
 | 
						|
                if (i % 2 == 1)
 | 
						|
                {
 | 
						|
                    double swap = open;
 | 
						|
 | 
						|
                    open = close;
 | 
						|
                    close = swap;
 | 
						|
                }
 | 
						|
 | 
						|
                series.SeriesPoints.Add(new SeriesPoint(d, new object[] { hi, lo, close, open }));
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region AddSimulatedPieData
 | 
						|
 | 
						|
        private void AddSimulatedPieData(PieSeries series, int ringCount, bool extent)
 | 
						|
        {
 | 
						|
            for (int i = 0; i < 5; i++)
 | 
						|
            {
 | 
						|
                PieSeriesPoint psp = (extent == true) ?
 | 
						|
                    new PieSeriesPoint("PX" + i, _Rand.Next(30, 100), _Rand.Next(30, 100)) :
 | 
						|
                    new PieSeriesPoint("P" + i, _Rand.Next(30, 100));
 | 
						|
 | 
						|
                series.SeriesPoints.Add(psp);
 | 
						|
 | 
						|
                AddPieRing(psp, ringCount - 1);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #region AddPieRing
 | 
						|
 | 
						|
        private void AddPieRing(PieSeriesPoint psp, int ringCount)
 | 
						|
        {
 | 
						|
            if (ringCount > 0)
 | 
						|
            {
 | 
						|
                for (int i = 0; i < 2; i++)
 | 
						|
                {
 | 
						|
                    PieSeriesPoint psp2 = new PieSeriesPoint("P" + i, 50);
 | 
						|
 | 
						|
                    psp.SeriesPoints.Add(psp2);
 | 
						|
 | 
						|
                    AddPieRing(psp, ringCount - 1);
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region ChangeService
 | 
						|
 | 
						|
        #region ChangeService_ComponentChanged
 | 
						|
 | 
						|
        void ChangeService_ComponentChanged(object sender, ComponentChangedEventArgs e)
 | 
						|
        {
 | 
						|
            if (InCopyItem == false)
 | 
						|
            {
 | 
						|
                _ChartControl.UpdateLayout();
 | 
						|
 | 
						|
                if (e.Member != null)
 | 
						|
                {
 | 
						|
                    switch (e.Member.Name)
 | 
						|
                    {
 | 
						|
                        case "AncillaryAxesX":
 | 
						|
                        case "AncillaryAxesY":
 | 
						|
                        case "ChartContainers":
 | 
						|
                        case "Location":
 | 
						|
                        case "Titles":
 | 
						|
                        case "Visible":
 | 
						|
                            UpdateGlyphs();
 | 
						|
                            break;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    UpdateGlyphs();
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region ChangeService_ComponentAdded
 | 
						|
 | 
						|
        void ChangeService_ComponentAdded(object sender, ComponentEventArgs e)
 | 
						|
        {
 | 
						|
            CheckGlyphUse();
 | 
						|
 | 
						|
            UpdateGlyphs();
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region ChangeService_ComponentRemoved
 | 
						|
 | 
						|
        void ChangeService_ComponentRemoved(object sender, ComponentEventArgs e)
 | 
						|
        {
 | 
						|
            CheckGlyphUse();
 | 
						|
 | 
						|
            UpdateGlyphs();
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region CheckGlyphUse
 | 
						|
 | 
						|
        private void CheckGlyphUse()
 | 
						|
        {
 | 
						|
            _UseGlyphs = true;
 | 
						|
 | 
						|
            if (_DesignerHost is IContainer)
 | 
						|
            {
 | 
						|
                foreach (IComponent comp in ((IContainer)_DesignerHost).Components)
 | 
						|
                {
 | 
						|
                    if (comp is ContextMenuStrip)
 | 
						|
                    {
 | 
						|
                        _UseGlyphs = false;
 | 
						|
                        break;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region UpdateGlyphs
 | 
						|
 | 
						|
        private void UpdateGlyphs()
 | 
						|
        {
 | 
						|
            RemoveAdorners();
 | 
						|
 | 
						|
            AddContainerGlyphs(_ChartControl.ChartPanel);
 | 
						|
 | 
						|
            ICollection ic = _SelectionService.GetSelectedComponents();
 | 
						|
 | 
						|
            if (ic != null)
 | 
						|
            {
 | 
						|
                _SelectionService.SetSelectedComponents(null);
 | 
						|
                _SelectionService.SetSelectedComponents(ic);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region RemoveAdorners
 | 
						|
 | 
						|
        private void RemoveAdorners()
 | 
						|
        {
 | 
						|
            List<Adorner> adornerList = new List<Adorner>();
 | 
						|
 | 
						|
            for (int i = 0; i < BehaviorService.Adorners.Count; i++)
 | 
						|
            {
 | 
						|
                Adorner adorner = BehaviorService.Adorners[i];
 | 
						|
 | 
						|
                if (adorner.Glyphs != null && adorner.Glyphs.Count > 0)
 | 
						|
                {
 | 
						|
                    SelectionGlyph sg = adorner.Glyphs[0] as SelectionGlyph;
 | 
						|
 | 
						|
                    if (sg != null && sg.ControlDesigner == this)
 | 
						|
                        adornerList.Add(adorner);
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            foreach (Adorner ad in adornerList)
 | 
						|
            {
 | 
						|
                for (int i = ad.Glyphs.Count - 1; i >= 0; i--)
 | 
						|
                {
 | 
						|
                    SelectionGlyph sg = (SelectionGlyph)ad.Glyphs[i];
 | 
						|
 | 
						|
                    ad.Glyphs.RemoveAt(i);
 | 
						|
 | 
						|
                    sg.Dispose();
 | 
						|
                }
 | 
						|
 | 
						|
                BehaviorService.Adorners.Remove(ad);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region ActionLists
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Gets our DesignerActionListCollection list
 | 
						|
        /// </summary>
 | 
						|
        public override DesignerActionListCollection ActionLists
 | 
						|
        {
 | 
						|
            get
 | 
						|
            {
 | 
						|
                if (_ActionLists == null)
 | 
						|
                {
 | 
						|
                    _ActionLists = new DesignerActionListCollection();
 | 
						|
 | 
						|
                    _ActionLists.Add(new ChartControlActionList(_ChartControl));
 | 
						|
                }
 | 
						|
 | 
						|
                return (_ActionLists);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Load complete
 | 
						|
 | 
						|
        private void DhLoadComplete(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            IDesignerHost dh = GetService(typeof(IDesignerHost)) as IDesignerHost;
 | 
						|
 | 
						|
            if (dh != null)
 | 
						|
                dh.LoadComplete -= DhLoadComplete;
 | 
						|
 | 
						|
            ChartControl chartControl = Control as ChartControl;
 | 
						|
 | 
						|
            if (chartControl != null)
 | 
						|
            {
 | 
						|
                CheckGlyphUse();
 | 
						|
 | 
						|
                ValidateLicenseKey(chartControl);
 | 
						|
 | 
						|
                AddContainerGlyphs(chartControl.ChartPanel);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region AddContainerGlyphs
 | 
						|
 | 
						|
        private void AddContainerGlyphs(ChartContainer cc)
 | 
						|
        {
 | 
						|
            if (_UseGlyphs == true)
 | 
						|
            {
 | 
						|
                if (cc.Visible == true)
 | 
						|
                {
 | 
						|
                    AddSelectionAdorner(cc);
 | 
						|
 | 
						|
                    if (cc.Legend.Visible == true)
 | 
						|
                        AddSelectionAdorner(cc.Legend);
 | 
						|
 | 
						|
                    if (cc.Titles != null)
 | 
						|
                    {
 | 
						|
                        foreach (ChartTitle title in cc.Titles)
 | 
						|
                        {
 | 
						|
                            if (title.Visible == true)
 | 
						|
                                AddSelectionAdorner(title);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
 | 
						|
                    if (cc is ChartPanel)
 | 
						|
                    {
 | 
						|
                        ChartPanel cp = (ChartPanel)cc;
 | 
						|
 | 
						|
                        foreach (ChartContainer cont in cp.ChartContainers)
 | 
						|
                        {
 | 
						|
                            if (cont.Visible == true)
 | 
						|
                                AddContainerGlyphs(cont);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    else if (cc is ChartXy)
 | 
						|
                    {
 | 
						|
                        ChartXy chartXy = (ChartXy)cc;
 | 
						|
 | 
						|
                        if (chartXy.AxisX.Visible == true)
 | 
						|
                            AddSelectionAdorner(chartXy.AxisX);
 | 
						|
 | 
						|
                        if (chartXy.AxisY.Visible == true)
 | 
						|
                            AddSelectionAdorner(chartXy.AxisY);
 | 
						|
 | 
						|
                        foreach (ChartAxis axis in chartXy.AncillaryAxesX)
 | 
						|
                        {
 | 
						|
                            if (axis.Visible == true)
 | 
						|
                                AddSelectionAdorner(axis);
 | 
						|
                        }
 | 
						|
 | 
						|
                        foreach (ChartAxis axis in chartXy.AncillaryAxesY)
 | 
						|
                        {
 | 
						|
                            if (axis.Visible == true)
 | 
						|
                                AddSelectionAdorner(axis);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #region AddSelectionAdorner
 | 
						|
 | 
						|
        private void AddSelectionAdorner(ChartVisualElement visualItem)
 | 
						|
        {
 | 
						|
            if (visualItem.Visible == true)
 | 
						|
            {
 | 
						|
                Adorner adorner = new Adorner();
 | 
						|
 | 
						|
                adorner.Glyphs.Add(new SelectionGlyph(this, visualItem, adorner));
 | 
						|
 | 
						|
                BehaviorService.Adorners.Add(adorner);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region OnSetCursor
 | 
						|
 | 
						|
        protected override void OnSetCursor()
 | 
						|
        {
 | 
						|
            if (ToolboxService == null ||
 | 
						|
                ToolboxService.GetSelectedToolboxItem() == null)
 | 
						|
            {
 | 
						|
                if (DragMoving == true)
 | 
						|
                {
 | 
						|
                    Cursor.Current = Cursors.SizeAll;
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    if (SelectionBehavior.ContextMenuActive == true)
 | 
						|
                        Cursor.Current = Cursors.Arrow;
 | 
						|
                    else
 | 
						|
                        base.OnSetCursor();
 | 
						|
                }
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                Control ctl1 = (Control)Component;
 | 
						|
 | 
						|
                Form form = ctl1.FindForm();
 | 
						|
 | 
						|
                if (form != null)
 | 
						|
                    base.OnSetCursor();
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region OnMouseDragBegin
 | 
						|
 | 
						|
        protected override void OnMouseDragBegin(int x, int y)
 | 
						|
        {
 | 
						|
            DragMoving = true;
 | 
						|
 | 
						|
            base.OnMouseDragBegin(x, y);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region OnMouseDragEnd
 | 
						|
 | 
						|
        protected override void OnMouseDragEnd(bool cancel)
 | 
						|
        {
 | 
						|
            DragMoving = false;
 | 
						|
 | 
						|
            base.OnMouseDragEnd(cancel);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region GetLicenseKey
 | 
						|
 | 
						|
#if !TRIAL
 | 
						|
        private string GetLicenseKey()
 | 
						|
        {
 | 
						|
            string key = "";
 | 
						|
 | 
						|
            RegistryKey regkey =
 | 
						|
                Registry.LocalMachine.OpenSubKey("Software\\DevComponents\\Licenses", false);
 | 
						|
 | 
						|
            if (regkey != null)
 | 
						|
            {
 | 
						|
                object keyValue = regkey.GetValue("DevComponents.DotNetBar.DotNetBarManager2");
 | 
						|
 | 
						|
                if (keyValue != null)
 | 
						|
                    key = keyValue.ToString();
 | 
						|
            }
 | 
						|
 | 
						|
            return (key);
 | 
						|
        }
 | 
						|
#endif
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region ValidateLicenseKey
 | 
						|
 | 
						|
        private void ValidateLicenseKey(ChartControl chartControl)
 | 
						|
        {
 | 
						|
#if !TRIAL
 | 
						|
            string key = GetLicenseKey();
 | 
						|
 | 
						|
            if (key != "" && chartControl != null && chartControl.LicenseKey == "" && chartControl.LicenseKey != key)
 | 
						|
                TypeDescriptor.GetProperties(chartControl)["LicenseKey"].SetValue(chartControl, key);
 | 
						|
#endif
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region SelectionGlyph
 | 
						|
 | 
						|
        public class SelectionGlyph : Glyph, IDisposable
 | 
						|
        {
 | 
						|
            #region Private variables
 | 
						|
 | 
						|
            private ChartControlDesigner _ControlDesigner;
 | 
						|
 | 
						|
            private Adorner _SelectionAdorner;
 | 
						|
            private Control _RelatedControl;
 | 
						|
 | 
						|
            private Rectangle _Bounds;
 | 
						|
            private ChartVisualElement _VisualItem;
 | 
						|
 | 
						|
            private bool _IsSelected;
 | 
						|
 | 
						|
            private Brush _SelBrush;
 | 
						|
            private Brush _SelBrush2;
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            public SelectionGlyph(ChartControlDesigner controlDesigner, ChartVisualElement visualItem, Adorner selectionAdorner)
 | 
						|
                : base(new SelectionBehavior(controlDesigner))
 | 
						|
            {
 | 
						|
                _VisualItem = visualItem;
 | 
						|
                _ControlDesigner = controlDesigner;
 | 
						|
                _SelectionAdorner = selectionAdorner;
 | 
						|
 | 
						|
                _RelatedControl = _ControlDesigner.Component as Control;
 | 
						|
 | 
						|
                _ControlDesigner.SelectionService.SelectionChanged += SelectionService_SelectionChanged;
 | 
						|
                _ControlDesigner.ChangeService.ComponentChanged += ChangeService_ComponentChanged;
 | 
						|
 | 
						|
                _VisualItem.ChartControl.UpdateLayout();
 | 
						|
 | 
						|
                CalcGlyphBounds();
 | 
						|
            }
 | 
						|
 | 
						|
            #region Public properties
 | 
						|
 | 
						|
            #region Bounds
 | 
						|
 | 
						|
            public override Rectangle Bounds
 | 
						|
            {
 | 
						|
                get { return (_Bounds); }
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region ControlDesigner
 | 
						|
 | 
						|
            public ChartControlDesigner ControlDesigner
 | 
						|
            {
 | 
						|
                get { return (_ControlDesigner); }
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region SelectionAdorner
 | 
						|
 | 
						|
            public Adorner SelectionAdorner
 | 
						|
            {
 | 
						|
                get { return (_SelectionAdorner); }
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region VisualItem
 | 
						|
 | 
						|
            public ChartVisualElement VisualItem
 | 
						|
            {
 | 
						|
                get { return (_VisualItem); }
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region Private properties
 | 
						|
 | 
						|
            #region SelBrush
 | 
						|
 | 
						|
            private Brush SelBrush
 | 
						|
            {
 | 
						|
                get
 | 
						|
                {
 | 
						|
                    if (_SelBrush == null)
 | 
						|
                    {
 | 
						|
                        _SelBrush = new HatchBrush(HatchStyle.BackwardDiagonal,
 | 
						|
                            Color.FromArgb(20, Color.Purple), Color.Transparent);
 | 
						|
                    }
 | 
						|
 | 
						|
                    return (_SelBrush);
 | 
						|
                }
 | 
						|
 | 
						|
                set
 | 
						|
                {
 | 
						|
                    if (_SelBrush != null)
 | 
						|
                        _SelBrush.Dispose();
 | 
						|
 | 
						|
                    _SelBrush = null;
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region SelBrush2
 | 
						|
 | 
						|
            private Brush SelBrush2
 | 
						|
            {
 | 
						|
                get
 | 
						|
                {
 | 
						|
                    if (_SelBrush2 == null)
 | 
						|
                    {
 | 
						|
                        _SelBrush2 = new HatchBrush(HatchStyle.BackwardDiagonal,
 | 
						|
                            Color.FromArgb(60, Color.White), Color.Transparent);
 | 
						|
                    }
 | 
						|
 | 
						|
                    return (_SelBrush2);
 | 
						|
                }
 | 
						|
 | 
						|
                set
 | 
						|
                {
 | 
						|
                    if (_SelBrush2 != null)
 | 
						|
                        _SelBrush2.Dispose();
 | 
						|
 | 
						|
                    _SelBrush2 = value;
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region Paint
 | 
						|
 | 
						|
            public override void Paint(PaintEventArgs e)
 | 
						|
            {
 | 
						|
                if (_ControlDesigner.SelectionService.GetComponentSelected(_VisualItem) == true)
 | 
						|
                {
 | 
						|
                    Graphics g = e.Graphics;
 | 
						|
 | 
						|
                    int n = (_VisualItem is ChartPanel || _VisualItem is ChartXy) ? -2 : 2;
 | 
						|
 | 
						|
                    Rectangle r = Bounds;
 | 
						|
                    r.Inflate(n, n);
 | 
						|
 | 
						|
                    g.RenderingOrigin = new Point(1, 0);
 | 
						|
                    g.FillRectangle(SelBrush, r);
 | 
						|
 | 
						|
                    g.RenderingOrigin = new Point(0, 0);
 | 
						|
                    g.FillRectangle(SelBrush2, r);
 | 
						|
 | 
						|
                    ControlPaint.DrawFocusRectangle(g, r);
 | 
						|
 | 
						|
                    r.Inflate(1, 1);
 | 
						|
 | 
						|
                    using (Pen pen = new Pen(Color.FromArgb(170, Color.White)))
 | 
						|
                    {
 | 
						|
                        pen.DashStyle = DashStyle.Dot;
 | 
						|
 | 
						|
                        r.Height--;
 | 
						|
                        r.Width--;
 | 
						|
 | 
						|
                        g.DrawRectangle(pen, r);
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region GetHitTest
 | 
						|
 | 
						|
            public override Cursor GetHitTest(Point p)
 | 
						|
            {
 | 
						|
                Control control = GetIt(p);
 | 
						|
 | 
						|
                if (control == _RelatedControl)
 | 
						|
                {
 | 
						|
                    if (control.Parent != null && control.Parent.Visible == true)
 | 
						|
                    {
 | 
						|
                        ChartControlDesigner ccd = _ControlDesigner;
 | 
						|
 | 
						|
                        if (ccd.ToolboxService == null ||
 | 
						|
                            ccd.ToolboxService.GetSelectedToolboxItem() == null)
 | 
						|
                        {
 | 
						|
                            if (ccd.DragMoving == false)
 | 
						|
                            {
 | 
						|
                                if (Bounds.Contains(p))
 | 
						|
                                    return (Cursors.Hand);
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
 | 
						|
                return (null);
 | 
						|
            }
 | 
						|
 | 
						|
            #region GetIt
 | 
						|
 | 
						|
            private Control GetIt(Point pt)
 | 
						|
            {
 | 
						|
                if (_RelatedControl != null)
 | 
						|
                {
 | 
						|
                    Control ctl = _RelatedControl.Parent;
 | 
						|
                    Control ctl2 = _ControlDesigner.DesignerHost.RootComponent as Control;
 | 
						|
 | 
						|
                    if (ctl != null && ctl2 != null && ctl2.Parent != null)
 | 
						|
                    {
 | 
						|
                        Point pt1 = ctl.PointToScreen(Point.Empty);
 | 
						|
                        Point pt2 = ctl2.Parent.PointToScreen(ctl2.Parent.Location);
 | 
						|
 | 
						|
                        pt.X -= (pt1.X - pt2.X);
 | 
						|
                        pt.Y -= (pt1.Y - pt2.Y);
 | 
						|
 | 
						|
                        return (ctl.GetChildAtPoint(pt));
 | 
						|
                    }
 | 
						|
                }
 | 
						|
 | 
						|
                return (null);
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region SelectionService_SelectionChanged
 | 
						|
 | 
						|
            void SelectionService_SelectionChanged(object sender, EventArgs e)
 | 
						|
            {
 | 
						|
                bool selected = _ControlDesigner.SelectionService.GetComponentSelected(_VisualItem);
 | 
						|
 | 
						|
                if (selected == true)
 | 
						|
                    CalcGlyphBounds();
 | 
						|
 | 
						|
                if (_IsSelected != selected)
 | 
						|
                {
 | 
						|
                    _IsSelected = selected;
 | 
						|
 | 
						|
                    Control ctl = _ControlDesigner.DesignerHost.RootComponent as Control;
 | 
						|
 | 
						|
                    if (ctl != null)
 | 
						|
                        ctl.Invalidate(true);
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region ChangeService_ComponentChanged
 | 
						|
 | 
						|
            void ChangeService_ComponentChanged(object sender, ComponentChangedEventArgs e)
 | 
						|
            {
 | 
						|
                if (_ControlDesigner.InCopyItem == false)
 | 
						|
                {
 | 
						|
                    if (_IsSelected == true)
 | 
						|
                    {
 | 
						|
                        if (_VisualItem != null && _VisualItem.ChartControl != null)
 | 
						|
                        {
 | 
						|
                            _VisualItem.ChartControl.UpdateLayout();
 | 
						|
 | 
						|
                            CalcGlyphBounds();
 | 
						|
 | 
						|
                            _RelatedControl.Invalidate();
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region CalcGlyphBounds
 | 
						|
 | 
						|
            private void CalcGlyphBounds()
 | 
						|
            {
 | 
						|
                Rectangle bounds = _VisualItem.Bounds;
 | 
						|
 | 
						|
                if (_RelatedControl != null)
 | 
						|
                {
 | 
						|
                    if (_VisualItem is ChartContainer)
 | 
						|
                    {
 | 
						|
                        ChartContainer cc = (ChartContainer)_VisualItem;
 | 
						|
 | 
						|
                        bounds = GetAdjustedBounds(bounds, cc.EffectiveContainerStyles[StyleType.Default].Margin);
 | 
						|
                    }
 | 
						|
                    else if (_VisualItem is ChartXy)
 | 
						|
                    {
 | 
						|
                        ChartXy bc = (ChartXy)_VisualItem;
 | 
						|
 | 
						|
                        bounds = GetAdjustedBounds(bounds, bc.EffectiveChartStyle.Margin);
 | 
						|
                    }
 | 
						|
                    else if (_VisualItem is ChartTitle)
 | 
						|
                    {
 | 
						|
                        ChartTitle ct = (ChartTitle)_VisualItem;
 | 
						|
 | 
						|
                        bounds = GetAdjustedBounds(bounds, ct.EffectiveTitleStyle.Margin);
 | 
						|
                    }
 | 
						|
 | 
						|
                    Point pt = _ControlDesigner.BehaviorService.ControlToAdornerWindow(_RelatedControl);
 | 
						|
 | 
						|
                    bounds.Offset(pt);
 | 
						|
                }
 | 
						|
 | 
						|
                _Bounds = bounds;
 | 
						|
            }
 | 
						|
 | 
						|
            #region GetAdjustedBounds
 | 
						|
 | 
						|
            internal Rectangle GetAdjustedBounds(Rectangle bounds, Thickness padding)
 | 
						|
            {
 | 
						|
                if (padding.IsEmpty == false)
 | 
						|
                {
 | 
						|
                    if (bounds.Height > padding.Vertical)
 | 
						|
                    {
 | 
						|
                        bounds.Y += padding.Top;
 | 
						|
                        bounds.Height -= padding.Vertical;
 | 
						|
                    }
 | 
						|
 | 
						|
                    if (bounds.Width > padding.Horizontal)
 | 
						|
                    {
 | 
						|
                        bounds.X += padding.Left;
 | 
						|
                        bounds.Width -= padding.Horizontal;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
 | 
						|
                return (bounds);
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region Dispose
 | 
						|
 | 
						|
            public void Dispose()
 | 
						|
            {
 | 
						|
                SelBrush = null;
 | 
						|
                SelBrush2 = null;
 | 
						|
 | 
						|
                if (_ControlDesigner != null)
 | 
						|
                {
 | 
						|
                    _ControlDesigner.SelectionService.SelectionChanged -= SelectionService_SelectionChanged;
 | 
						|
                    _ControlDesigner.ChangeService.ComponentChanged -= ChangeService_ComponentChanged;
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region SelectionBehavior
 | 
						|
 | 
						|
        internal class SelectionBehavior : Behavior
 | 
						|
        {
 | 
						|
            #region Static variables
 | 
						|
 | 
						|
            static public bool ContextMenuActive;
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region Private variables
 | 
						|
 | 
						|
            private IDesigner _ControlDesigner;
 | 
						|
            private Control _RelatedControl;
 | 
						|
            private Point _DragPoint;
 | 
						|
            private bool _MouseDown;
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            internal SelectionBehavior(IDesigner controlDesigner)
 | 
						|
            {
 | 
						|
                _ControlDesigner = controlDesigner;
 | 
						|
                _RelatedControl = controlDesigner.Component as Control;
 | 
						|
            }
 | 
						|
 | 
						|
            #region OnMouseDown
 | 
						|
 | 
						|
            public override bool OnMouseDown(Glyph g, MouseButtons button, Point mouseLoc)
 | 
						|
            {
 | 
						|
                SelectionGlyph sg = g as SelectionGlyph;
 | 
						|
 | 
						|
                if (button == MouseButtons.Left)
 | 
						|
                {
 | 
						|
                    if (sg.ControlDesigner.SelectionService.GetComponentSelected(sg.VisualItem) == false)
 | 
						|
                    {
 | 
						|
                        if (ContextMenuActive == false)
 | 
						|
                            SelectVisualElement(sg, sg.VisualItem);
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                else if (button == MouseButtons.Right)
 | 
						|
                {
 | 
						|
                    object primarySelection = sg.ControlDesigner.SelectionService.PrimarySelection;
 | 
						|
 | 
						|
                    if (CanSelectVisualItem(primarySelection, sg.VisualItem) == true)
 | 
						|
                        SelectVisualElement(sg, sg.VisualItem);
 | 
						|
                }
 | 
						|
 | 
						|
                ContextMenuActive = false;
 | 
						|
 | 
						|
                _DragPoint = Control.MousePosition;
 | 
						|
 | 
						|
                _MouseDown = true;
 | 
						|
 | 
						|
                return (true);
 | 
						|
            }
 | 
						|
 | 
						|
            #region CanSelectVisualItem
 | 
						|
 | 
						|
            private bool CanSelectVisualItem(
 | 
						|
                object primarySelection, ChartVisualElement cve)
 | 
						|
            {
 | 
						|
                if (cve is ChartLegend || cve is ChartTitle || cve is ChartAxis)
 | 
						|
                    return (true);
 | 
						|
 | 
						|
                if (primarySelection == null)
 | 
						|
                    return (true);
 | 
						|
 | 
						|
                if (primarySelection is ChartControl)
 | 
						|
                    return (false);
 | 
						|
 | 
						|
                ChartVisualElement pcve = primarySelection as ChartVisualElement;
 | 
						|
 | 
						|
                if (pcve == null)
 | 
						|
                    return (true);
 | 
						|
 | 
						|
                return (IsChildItem(cve, pcve) == false);
 | 
						|
            }
 | 
						|
 | 
						|
            #region IsChildItem
 | 
						|
 | 
						|
            private bool IsChildItem(ChartVisualElement cve, ChartVisualElement pcve)
 | 
						|
            {
 | 
						|
                ChartVisualElement parent = cve.Parent as ChartVisualElement;
 | 
						|
 | 
						|
                while (parent != null)
 | 
						|
                {
 | 
						|
                    if (parent == pcve)
 | 
						|
                        return (true);
 | 
						|
 | 
						|
                    parent = parent.Parent as ChartVisualElement;
 | 
						|
                }
 | 
						|
 | 
						|
                return (false);
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region SelectVisualElement
 | 
						|
 | 
						|
            private void SelectVisualElement(SelectionGlyph sg, ChartVisualElement cve)
 | 
						|
            {
 | 
						|
                if (cve != null)
 | 
						|
                    sg.ControlDesigner.SelectionService.SetSelectedComponents(new object[] { cve });
 | 
						|
                else
 | 
						|
                    sg.ControlDesigner.SelectionService.SetSelectedComponents(new object[] { _RelatedControl });
 | 
						|
 | 
						|
                _RelatedControl.Invalidate();
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region OnMouseUp
 | 
						|
 | 
						|
            public override bool OnMouseUp(Glyph g, MouseButtons button)
 | 
						|
            {
 | 
						|
                ChartControlDesigner ccd = (ChartControlDesigner)_ControlDesigner;
 | 
						|
 | 
						|
                _MouseDown = false;
 | 
						|
 | 
						|
                bool value = base.OnMouseUp(g, button);
 | 
						|
 | 
						|
                if (button == MouseButtons.Right)
 | 
						|
                {
 | 
						|
                    SelectionGlyph sg = g as SelectionGlyph;
 | 
						|
 | 
						|
                    if (sg != null)
 | 
						|
                    {
 | 
						|
                        if (ShowGlyphContextMenu(g as SelectionGlyph) == true)
 | 
						|
                            return (true);
 | 
						|
 | 
						|
                        return (true);
 | 
						|
                    }
 | 
						|
                }
 | 
						|
 | 
						|
                return (value);
 | 
						|
            }
 | 
						|
 | 
						|
            #region ShowGlyphContextMenu
 | 
						|
 | 
						|
            private bool ShowGlyphContextMenu(SelectionGlyph sg)
 | 
						|
            {
 | 
						|
                if (sg != null)
 | 
						|
                {
 | 
						|
                    ChartControlDesigner ccd = (ChartControlDesigner)_ControlDesigner;
 | 
						|
 | 
						|
                    Point pt = _RelatedControl.PointToClient(Control.MousePosition);
 | 
						|
 | 
						|
                    ContextMenu cm = GetContextMenu(sg, ccd);
 | 
						|
 | 
						|
                    if (cm != null)
 | 
						|
                    {
 | 
						|
                        ContextMenuActive = true;
 | 
						|
 | 
						|
                        cm.Show(_RelatedControl, pt);
 | 
						|
 | 
						|
                        return (true);
 | 
						|
                    }
 | 
						|
                }
 | 
						|
 | 
						|
                return (false);
 | 
						|
            }
 | 
						|
 | 
						|
            #region GetContextMenu
 | 
						|
 | 
						|
            private ContextMenu GetContextMenu(SelectionGlyph sg, ChartControlDesigner ccd)
 | 
						|
            {
 | 
						|
                ContextMenu cm = new ContextMenu();
 | 
						|
 | 
						|
                MenuItem mi = AddMenuItem(cm, null, "View Code", new EventHandler(MenuViewCode));
 | 
						|
 | 
						|
                ChartVisualElement cve = ccd.SelectionService.PrimarySelection as ChartVisualElement;
 | 
						|
 | 
						|
                if (cve != null)
 | 
						|
                {
 | 
						|
                    AddMenuItem(cm, cve, "-", null);
 | 
						|
 | 
						|
                    if (cve is ChartPanel)
 | 
						|
                    {
 | 
						|
                        AddMenuItem(cm, cve, "Hide Panel", new EventHandler(HideVisualItem));
 | 
						|
 | 
						|
                        if (cve.Parent != null)
 | 
						|
                            AddMenuItem(cm, cve, "Delete Panel", new EventHandler(DeleteChartPanel));
 | 
						|
                    }
 | 
						|
                    else if (cve is BaseChart)
 | 
						|
                    {
 | 
						|
                        AddMenuItem(cm, cve, "Hide Chart", new EventHandler(HideVisualItem));
 | 
						|
                        AddMenuItem(cm, cve, "Delete Chart", new EventHandler(DeleteChartPanel));
 | 
						|
                    }
 | 
						|
                    else if (cve is ChartTitle)
 | 
						|
                    {
 | 
						|
                        AddMenuItem(cm, cve, "Hide Title", new EventHandler(HideVisualItem));
 | 
						|
                        AddMenuItem(cm, cve, "Delete Title", new EventHandler(DeleteTitle));
 | 
						|
                        AddMenuItem(cm, cve, "-", null);
 | 
						|
 | 
						|
                        mi = AddMenuItem(cm, cve, "XyAlignment", null);
 | 
						|
 | 
						|
                        AddSubMenuItem(mi, cve, "Top", new EventHandler(AlignTitleTop));
 | 
						|
                        AddSubMenuItem(mi, cve, "Left", new EventHandler(AlignTitleLeft));
 | 
						|
                        AddSubMenuItem(mi, cve, "Bottom", new EventHandler(AlignTitleBottom));
 | 
						|
                        AddSubMenuItem(mi, cve, "Right", new EventHandler(AlignTitleRight));
 | 
						|
                    }
 | 
						|
                    else if (cve is ChartAxis)
 | 
						|
                    {
 | 
						|
                        ChartAxis axis = (ChartAxis)cve;
 | 
						|
 | 
						|
                        AddMenuItem(cm, cve, "Hide Axis", new EventHandler(HideVisualItem));
 | 
						|
 | 
						|
                        if (axis.IsPrimaryAxis == false)
 | 
						|
                            AddMenuItem(cm, cve, "Delete Axis", new EventHandler(DeleteAxis));
 | 
						|
 | 
						|
                        AddMenuItem(cm, cve, "-", null);
 | 
						|
 | 
						|
                        mi = AddMenuItem(cm, cve, "Alignment", null);
 | 
						|
 | 
						|
                        AddSubMenuItem(mi, cve, "Near", new EventHandler(AlignAxisNear));
 | 
						|
                        AddSubMenuItem(mi, cve, "Far", new EventHandler(AlignAxisFar));
 | 
						|
                    }
 | 
						|
                    else if (cve is ChartLegend)
 | 
						|
                    {
 | 
						|
                        ChartLegend legend = (ChartLegend)cve;
 | 
						|
 | 
						|
                        AddMenuItem(cm, cve, "Hide Legend", new EventHandler(HideVisualItem));
 | 
						|
                    }
 | 
						|
                }
 | 
						|
 | 
						|
                AddMenuItem(cm, null, "-", null);
 | 
						|
 | 
						|
                int n = cm.MenuItems.Count;
 | 
						|
 | 
						|
                AddParentSelect(cm, ccd.SelectionService.PrimarySelection);
 | 
						|
 | 
						|
                if (cm.MenuItems.Count == n)
 | 
						|
                    cm.MenuItems.RemoveAt(cm.MenuItems.Count - 1);
 | 
						|
 | 
						|
                return (cm);
 | 
						|
            }
 | 
						|
 | 
						|
            #region AddMenuItem
 | 
						|
 | 
						|
            private MenuItem AddMenuItem(ContextMenu cm,
 | 
						|
                ChartVisualElement cve, string text, EventHandler e)
 | 
						|
            {
 | 
						|
                MenuItem mi = new MenuItem(text, e);
 | 
						|
 | 
						|
                mi.Tag = cve;
 | 
						|
 | 
						|
                cm.MenuItems.Add(mi);
 | 
						|
 | 
						|
                return (mi);
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region AddSubMenuItem
 | 
						|
 | 
						|
            private MenuItem AddSubMenuItem(MenuItem mi,
 | 
						|
                ChartVisualElement cve, string text, EventHandler e)
 | 
						|
            {
 | 
						|
                MenuItem submi = new MenuItem(text, e);
 | 
						|
 | 
						|
                submi.Tag = cve;
 | 
						|
 | 
						|
                mi.MenuItems.Add(submi);
 | 
						|
 | 
						|
                return (submi);
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region AddParentSelect
 | 
						|
 | 
						|
            private void AddParentSelect(ContextMenu cm, object psel)
 | 
						|
            {
 | 
						|
                ChartVisualElement cve = psel as ChartVisualElement;
 | 
						|
 | 
						|
                if (cve != null)
 | 
						|
                {
 | 
						|
                    ChartVisualElement parent = cve.Parent as ChartVisualElement;
 | 
						|
 | 
						|
                    while (parent != null)
 | 
						|
                    {
 | 
						|
                        if (string.IsNullOrEmpty(parent.Name) == false)
 | 
						|
                        {
 | 
						|
                            AddMenuItem(cm, parent,
 | 
						|
                                "Select '" + parent.Name + "'", new EventHandler(SelectVisualItem));
 | 
						|
                        }
 | 
						|
 | 
						|
                        parent = parent.Parent as ChartVisualElement;
 | 
						|
                    }
 | 
						|
 | 
						|
                    string s = string.IsNullOrEmpty(_RelatedControl.Name)
 | 
						|
                        ? "ChartControl" : _RelatedControl.Name;
 | 
						|
 | 
						|
                    AddMenuItem(cm, null,
 | 
						|
                        "Select '" + s + "'", new EventHandler(SelectVisualItem));
 | 
						|
                }
 | 
						|
 | 
						|
                Control ctl = _RelatedControl.Parent;
 | 
						|
 | 
						|
                while (ctl != null)
 | 
						|
                {
 | 
						|
                    if (string.IsNullOrEmpty(ctl.Name) == false)
 | 
						|
                    {
 | 
						|
                        MenuItem mi = AddMenuItem(cm, null,
 | 
						|
                            "Select '" + ctl.Name + "'", new EventHandler(SelectControl));
 | 
						|
 | 
						|
                        mi.Tag = ctl;
 | 
						|
                    }
 | 
						|
 | 
						|
                    ctl = ctl.Parent;
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region Item click support
 | 
						|
 | 
						|
            #region SelectVisualItem
 | 
						|
 | 
						|
            private void SelectVisualItem(object sender, EventArgs e)
 | 
						|
            {
 | 
						|
                MenuItem mi = sender as MenuItem;
 | 
						|
 | 
						|
                if (mi != null)
 | 
						|
                {
 | 
						|
                    ChartControlDesigner ccd = (ChartControlDesigner)_ControlDesigner;
 | 
						|
 | 
						|
                    ChartVisualElement cve = mi.Tag as ChartVisualElement;
 | 
						|
 | 
						|
                    if (cve != null)
 | 
						|
                        ccd.SelectionService.SetSelectedComponents(new object[] { cve });
 | 
						|
                    else
 | 
						|
                        ccd.SelectionService.SetSelectedComponents(new object[] { _RelatedControl });
 | 
						|
                }
 | 
						|
 | 
						|
                SelectionBehavior.ContextMenuActive = false;
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region SelectControl
 | 
						|
 | 
						|
            private void SelectControl(object sender, EventArgs e)
 | 
						|
            {
 | 
						|
                MenuItem mi = sender as MenuItem;
 | 
						|
 | 
						|
                if (mi != null)
 | 
						|
                {
 | 
						|
                    ChartControlDesigner ccd = (ChartControlDesigner)_ControlDesigner;
 | 
						|
 | 
						|
                    ccd.SelectionService.SetSelectedComponents(new object[] { mi.Tag });
 | 
						|
                }
 | 
						|
 | 
						|
                SelectionBehavior.ContextMenuActive = false;
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region AlignAxis
 | 
						|
 | 
						|
            #region AlignAxisNear
 | 
						|
 | 
						|
            private void AlignAxisNear(object sender, EventArgs e)
 | 
						|
            {
 | 
						|
                MenuItem mi = sender as MenuItem;
 | 
						|
 | 
						|
                if (mi != null)
 | 
						|
                {
 | 
						|
                    ChartAxis axis = mi.Tag as ChartAxis;
 | 
						|
 | 
						|
                    if (axis != null)
 | 
						|
                        SetValue(axis, "AxisAlignment", AxisAlignment.Near);
 | 
						|
                }
 | 
						|
 | 
						|
                SelectionBehavior.ContextMenuActive = false;
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region AlignAxisFar
 | 
						|
 | 
						|
            private void AlignAxisFar(object sender, EventArgs e)
 | 
						|
            {
 | 
						|
                MenuItem mi = sender as MenuItem;
 | 
						|
 | 
						|
                if (mi != null)
 | 
						|
                {
 | 
						|
                    ChartAxis axis = mi.Tag as ChartAxis;
 | 
						|
 | 
						|
                    if (axis != null)
 | 
						|
                        SetValue(axis, "AxisAlignment", AxisAlignment.Far);
 | 
						|
                }
 | 
						|
 | 
						|
                SelectionBehavior.ContextMenuActive = false;
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region AlignTitle
 | 
						|
 | 
						|
            private void AlignTitleTop(object sender, EventArgs e)
 | 
						|
            {
 | 
						|
                MenuItem mi = sender as MenuItem;
 | 
						|
 | 
						|
                if (mi != null)
 | 
						|
                    AlignTitle(mi.Tag as ChartTitle, XyAlignment.Top);
 | 
						|
            }
 | 
						|
 | 
						|
            private void AlignTitleLeft(object sender, EventArgs e)
 | 
						|
            {
 | 
						|
                MenuItem mi = sender as MenuItem;
 | 
						|
 | 
						|
                if (mi != null)
 | 
						|
                    AlignTitle(mi.Tag as ChartTitle, XyAlignment.Left);
 | 
						|
            }
 | 
						|
 | 
						|
            private void AlignTitleBottom(object sender, EventArgs e)
 | 
						|
            {
 | 
						|
                MenuItem mi = sender as MenuItem;
 | 
						|
 | 
						|
                if (mi != null)
 | 
						|
                    AlignTitle(mi.Tag as ChartTitle, XyAlignment.Bottom);
 | 
						|
            }
 | 
						|
 | 
						|
            private void AlignTitleRight(object sender, EventArgs e)
 | 
						|
            {
 | 
						|
                MenuItem mi = sender as MenuItem;
 | 
						|
 | 
						|
                if (mi != null)
 | 
						|
                    AlignTitle(mi.Tag as ChartTitle, XyAlignment.Right);
 | 
						|
            }
 | 
						|
 | 
						|
            private void AlignTitle(ChartTitle title, XyAlignment xyAlignment)
 | 
						|
            {
 | 
						|
                if (title != null)
 | 
						|
                    SetValue(title, "XyAlignment", xyAlignment);
 | 
						|
 | 
						|
                SelectionBehavior.ContextMenuActive = false;
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region DeleteAxis
 | 
						|
 | 
						|
            private void DeleteAxis(object sender, EventArgs e)
 | 
						|
            {
 | 
						|
                MenuItem mi = sender as MenuItem;
 | 
						|
 | 
						|
                if (mi != null)
 | 
						|
                {
 | 
						|
                    ChartAxis axis = mi.Tag as ChartAxis;
 | 
						|
 | 
						|
                    if (axis != null)
 | 
						|
                    {
 | 
						|
                        ChartXy chartXy = axis.Parent as ChartXy;
 | 
						|
 | 
						|
                        if (chartXy != null)
 | 
						|
                        {
 | 
						|
                            DialogResult result = MessageBoxEx.Show(
 | 
						|
                                "Are you sure you want to delete the selected Axis?",
 | 
						|
                                "Confirm Delete", MessageBoxButtons.YesNo);
 | 
						|
 | 
						|
                            if (result == DialogResult.Yes)
 | 
						|
                            {
 | 
						|
                                ChartControlDesigner ccd = (ChartControlDesigner)_ControlDesigner;
 | 
						|
 | 
						|
                                ccd.ChangeService.OnComponentChanging(chartXy, null);
 | 
						|
 | 
						|
                                if (axis.AxisOrientation == AxisOrientation.X)
 | 
						|
                                    chartXy.AncillaryAxesX.Remove(axis);
 | 
						|
                                else
 | 
						|
                                    chartXy.AncillaryAxesY.Remove(axis);
 | 
						|
 | 
						|
                                //axis.Dispose();
 | 
						|
 | 
						|
                                ccd.ChangeService.OnComponentChanged(chartXy, null, null, null);
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
 | 
						|
                SelectionBehavior.ContextMenuActive = false;
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region DeleteTitle
 | 
						|
 | 
						|
            private void DeleteTitle(object sender, EventArgs e)
 | 
						|
            {
 | 
						|
                MenuItem mi = sender as MenuItem;
 | 
						|
 | 
						|
                if (mi != null)
 | 
						|
                {
 | 
						|
                    ChartTitle title = mi.Tag as ChartTitle;
 | 
						|
 | 
						|
                    if (title != null)
 | 
						|
                    {
 | 
						|
                        ChartContainer parent = title.Parent as ChartContainer;
 | 
						|
 | 
						|
                        if (parent != null)
 | 
						|
                        {
 | 
						|
                            DialogResult result = MessageBoxEx.Show(
 | 
						|
                                "Are you sure you want to delete the selected Title?",
 | 
						|
                                "Confirm Delete", MessageBoxButtons.YesNo);
 | 
						|
 | 
						|
                            if (result == DialogResult.Yes)
 | 
						|
                            {
 | 
						|
                                ChartControlDesigner ccd = (ChartControlDesigner)_ControlDesigner;
 | 
						|
 | 
						|
                                ccd.ChangeService.OnComponentChanging(parent.Titles, null);
 | 
						|
 | 
						|
                                parent.Titles.Remove(title);
 | 
						|
                                //title.Dispose();
 | 
						|
 | 
						|
                                ccd.ChangeService.OnComponentChanged(parent.Titles, null, null, null);
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
 | 
						|
                SelectionBehavior.ContextMenuActive = false;
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region DeleteChartPanel
 | 
						|
 | 
						|
            private void DeleteChartPanel(object sender, EventArgs e)
 | 
						|
            {
 | 
						|
                MenuItem mi = sender as MenuItem;
 | 
						|
 | 
						|
                if (mi != null)
 | 
						|
                {
 | 
						|
                    ChartContainer cc = mi.Tag as ChartContainer;
 | 
						|
 | 
						|
                    if (cc != null)
 | 
						|
                    {
 | 
						|
                        ChartPanel parent = cc.Parent as ChartPanel;
 | 
						|
 | 
						|
                        if (parent != null)
 | 
						|
                        {
 | 
						|
                            DialogResult result = MessageBoxEx.Show(
 | 
						|
                                "Are you sure you want to delete the selected " +
 | 
						|
                                (cc is ChartPanel ? "ChartPanel?" : "Chart?"),
 | 
						|
                                "Confirm Delete", MessageBoxButtons.YesNo);
 | 
						|
 | 
						|
                            if (result == DialogResult.Yes)
 | 
						|
                            {
 | 
						|
                                ChartControlDesigner ccd = (ChartControlDesigner)_ControlDesigner;
 | 
						|
 | 
						|
                                ccd.ChangeService.OnComponentChanging(parent.ChartContainers, null);
 | 
						|
 | 
						|
                                parent.ChartContainers.Remove(cc);
 | 
						|
                                //cc.Dispose();
 | 
						|
 | 
						|
                                ccd.ChangeService.OnComponentChanged(parent.ChartContainers, null, null, null);
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
 | 
						|
                SelectionBehavior.ContextMenuActive = false;
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region HideVisualItem
 | 
						|
 | 
						|
            private void HideVisualItem(object sender, EventArgs e)
 | 
						|
            {
 | 
						|
                MenuItem mi = sender as MenuItem;
 | 
						|
 | 
						|
                if (mi != null)
 | 
						|
                {
 | 
						|
                    ChartVisualElement cve = mi.Tag as ChartVisualElement;
 | 
						|
 | 
						|
                    if (cve != null)
 | 
						|
                        SetValue(cve, "Visible", false);
 | 
						|
                }
 | 
						|
 | 
						|
                SelectionBehavior.ContextMenuActive = false;
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region MenuViewCode
 | 
						|
 | 
						|
            private void MenuViewCode(object sender, EventArgs e)
 | 
						|
            {
 | 
						|
                ChartControlDesigner ccd = (ChartControlDesigner)_ControlDesigner;
 | 
						|
                IMenuCommandService mcs = ccd.MenuCommandService;
 | 
						|
 | 
						|
                mcs.GlobalInvoke(StandardCommands.ViewCode);
 | 
						|
 | 
						|
                SelectionBehavior.ContextMenuActive = false;
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region OnMouseMove
 | 
						|
 | 
						|
            public override bool OnMouseMove(Glyph g, MouseButtons button, Point mouseLoc)
 | 
						|
            {
 | 
						|
                if (Control.MouseButtons == 0)
 | 
						|
                    _MouseDown = false;
 | 
						|
 | 
						|
                if (_MouseDown == true && Control.MouseButtons != 0)
 | 
						|
                {
 | 
						|
                    Point pt = Control.MousePosition;
 | 
						|
 | 
						|
                    if (Math.Abs(_DragPoint.X - pt.X) > 4 || Math.Abs(_DragPoint.Y - pt.Y) > 4)
 | 
						|
                    {
 | 
						|
                        ChartControlDesigner ccd = (ChartControlDesigner)_ControlDesigner;
 | 
						|
 | 
						|
                        ccd.OnMouseDragBegin(pt.X, pt.Y);
 | 
						|
 | 
						|
                        return (true);
 | 
						|
                    }
 | 
						|
                }
 | 
						|
 | 
						|
                return base.OnMouseMove(g, button, mouseLoc);
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region SetValue
 | 
						|
 | 
						|
            private void SetValue(object item, string property, object value)
 | 
						|
            {
 | 
						|
                ChartControlDesigner ccd = (ChartControlDesigner)_ControlDesigner;
 | 
						|
 | 
						|
                ccd.ChangeService.OnComponentChanging(item, null);
 | 
						|
 | 
						|
                GetPropertyByName(item, property).SetValue(item, value);
 | 
						|
 | 
						|
                ccd.ChangeService.OnComponentChanged(item, null, null, null);
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
 | 
						|
            #region GetPropertyByName
 | 
						|
 | 
						|
            private PropertyDescriptor GetPropertyByName(object item, string propName)
 | 
						|
            {
 | 
						|
                PropertyDescriptor prop =
 | 
						|
                    TypeDescriptor.GetProperties(item)[propName];
 | 
						|
 | 
						|
                if (prop == null)
 | 
						|
                    throw new ArgumentException("Matching property not found.", propName);
 | 
						|
 | 
						|
                return (prop);
 | 
						|
            }
 | 
						|
 | 
						|
            #endregion
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
        #region Dispose
 | 
						|
 | 
						|
        protected override void Dispose(bool disposing)
 | 
						|
        {
 | 
						|
            if (disposing)
 | 
						|
            {
 | 
						|
                if (ChangeService != null)
 | 
						|
                {
 | 
						|
                    ChangeService.ComponentChanged -= ChangeService_ComponentChanged;
 | 
						|
                    ChangeService.ComponentAdded -= ChangeService_ComponentAdded;
 | 
						|
                    ChangeService.ComponentRemoved -= ChangeService_ComponentRemoved;
 | 
						|
                }
 | 
						|
 | 
						|
                if (BehaviorService != null)
 | 
						|
                    RemoveAdorners();
 | 
						|
            }
 | 
						|
 | 
						|
            base.Dispose(disposing);
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
}
 |