Example #1
0
        public override object ShowViewDialog(IViewController owner)
        {
            IEnumerable <ChartInfo> charts = null;

            View.ShowDialog(owner.View);

            if (selectedOption != ChartOption.NoCharts)
            {
                var data = OutputData.GetData(inputFilePath);

                if (selectedOption == ChartOption.DefaultCharts)
                {
                    charts = buildDefaultCharts(data);
                }
                else if (selectedOption == ChartOption.CustomCharts)
                {
                    using (var custom = new CustomChartsController(data, Path.ChangeExtension(inputFilePath, Strings.GraphTemplateFileExtension)))
                    {
                        charts = custom.ShowViewDialog(this) as IEnumerable <ChartInfo>;
                    }

                    if (charts != null && charts.Any())
                    {
                        GraphTemplateStream.Write(Path.ChangeExtension(inputFilePath, Strings.GraphTemplateFileExtension), charts);
                    }
                }
            }

            return(charts);
        }
Example #2
0
        public override void ProcessCommand(Control control, Command command)
        {
            Debug.Assert(View.SelectedTab == null ||
                         (View.SelectedTab.Controls.Count > 0 && View.SelectedTab.Controls[0] is ChartSetup));

            if (command == Command.AddPrimary)
            {
                var chartSetup        = View.SelectedTab.Controls[0] as ChartSetup;
                var selectedItems     = chartSetup.SelectedSeries.Cast <SeriesInfo>().ToList();
                var allDataSource     = chartSetup.DataSource as IList;
                var primaryDataSource = chartSetup.PrimarySeries;

                foreach (var s in selectedItems)
                {
                    allDataSource.Remove(s);
                    primaryDataSource.Add(s);
                    s.ShowInSecondaryVerticalAxis = false;
                }
            }
            else if (command == Command.AddSecondary)
            {
                var chartSetup          = View.SelectedTab.Controls[0] as ChartSetup;
                var selectedItems       = chartSetup.SelectedSeries.Cast <SeriesInfo>().ToList();
                var allDataSource       = chartSetup.DataSource as IList;
                var secondaryDataSource = chartSetup.SecondarySeries;

                foreach (var s in selectedItems)
                {
                    allDataSource.Remove(s);
                    secondaryDataSource.Add(s);
                    s.ShowInSecondaryVerticalAxis = true;
                }
            }
            else if (command == Command.RemovePrimary)
            {
                var chartSetup        = View.SelectedTab.Controls[0] as ChartSetup;
                var selectedItems     = chartSetup.SelectedPrimarySeries.ToList();
                var allDataSource     = chartSetup.DataSource as IList;
                var primaryDataSource = chartSetup.PrimarySeries;

                foreach (var s in selectedItems)
                {
                    primaryDataSource.Remove(s);
                    allDataSource.Add(s);
                }
            }
            else if (command == Command.RemoveSecondary)
            {
                var chartSetup          = View.SelectedTab.Controls[0] as ChartSetup;
                var selectedItems       = chartSetup.SelectedSecondarySeries.ToList();
                var allDataSource       = chartSetup.DataSource as IList;
                var secondaryDataSource = chartSetup.SecondarySeries;

                foreach (var s in selectedItems)
                {
                    secondaryDataSource.Remove(s);
                    allDataSource.Add(s);
                }
            }
            else if (command == Command.Load)
            {
                var series = OutputData.GetAllSeries(data).ToList();

                try
                {
                    control.Enabled = false;
                    View.ClearTabs();
                    var graphs = GraphTemplateStream.Read(templateFilePath, data);

                    foreach (var graph in graphs)
                    {
                        ProcessCommand(null, Command.AddTab);
                        loadGraph(View.SelectedTab.Controls[0] as ChartSetup, graph);
                    }

                    control.Enabled = true;
                }
                catch (Exception exc)
                {
                    if (exc is FormatException)
                    {
                        View.ShowErrorMessage(Strings.FormatExceptionMessage, Strings.FormatExceptionCaption);
                    }
                    else if (exc is InvalidOperationException)
                    {
                        View.ShowErrorMessage(Strings.InvalidOperationExceptionMessage, Strings.InvalidOperationExceptionCaption);
                    }
                    else if (exc is IOException)
                    {
                        View.ShowErrorMessage(Strings.IOExceptionMessage, Strings.IOExceptionCaption);
                    }
                    else
                    {
                        throw;
                    }
                }
            }
            else if (command == Command.AddTab)
            {
                var newTab = View.AddNewTab();
                (View.SelectedTab.Controls[0] as ChartSetup).DataSource = new BindingList <SeriesInfo>(OutputData.GetAllSeries(data).ToList());
            }
            else if (command == Command.RemoveTab)
            {
                Debug.Assert(View.SelectedTab != null);
                View.RemoveTab(View.SelectedTab);
            }
            else if (command == Command.Accept)
            {
                View.DialogResult = DialogResult.OK;
                View.Close();
            }
            else if (command == Command.Cancel)
            {
                View.DialogResult = DialogResult.Cancel;
                View.Close();
            }
            else
            {
                Debug.Assert(false, "command");
            }
        }