protected override void Initialize(bool initData)
        {
            base.Initialize(initData);

            if (initData)
            {
                _xColumn = _doc.RowHeaderColumn;
                _yColumn = _doc.ColumnHeaderColumn;
                // Initialize value columns
                _valueColumns.Clear();
                for (int i = 0; i < _doc.ColumnCount; ++i)
                {
                    var col = _doc.GetDataColumnProxy(i);
                    _valueColumns.Add(new SelectableListNode(col.Document != null ? col.Document.FullName : "Unresolved column", col, false));
                }

                CalcMaxPossiblePlotRangeTo();

                // Initialize tables
                string[] tables = Current.Project.DataTableCollection.GetSortedTableNames();

                string dataTableName = _doc.DataTable == null ? string.Empty : _doc.DataTable.Name;

                _availableTables.Clear();
                foreach (var tableName in tables)
                {
                    _availableTables.Add(new SelectableListNode(tableName, Current.Project.DataTableCollection[tableName], dataTableName == tableName));
                }

                // Initialize columns
                FillAvailableColumnList();

                _rowsController = new Common.AscendingIntegerCollectionController();
                _rowsController.InitializeDocument(_doc.ParticipatingDataRows.Clone());
            }

            if (null != _view)
            {
                EhSelectedColumnKindChanged(); // ask view which column kind is now selected
                UpdateButtonEnablingInView();  // do that in every case, even if nothing has changed

                _view.InitializeAvailableTables(_availableTables);
                _view.InitializeAvailableColumns(_availableColumns);

                _view.GroupNumber = _doc.GroupNumber;
                _view.UseAllAvailableDataColumns = _doc.UseAllAvailableDataColumnsOfGroup;
                _view.UseAllAvailableDataRows    = _doc.UseAllAvailableDataRows;

                _view.Initialize_XColumn(_xColumn == null ? string.Empty : _xColumn.FullName);
                _view.Initialize_YColumn(_yColumn == null ? string.Empty : _yColumn.FullName);
                _view.Initialize_VColumns(_valueColumns);
                CalcMaxPossiblePlotRangeTo();

                if (_rowsController.ViewObject == null)
                {
                    Current.Gui.FindAndAttachControlTo(_rowsController);
                }
                _view.Initialize_DataRowsControl(_rowsController.ViewObject);
            }
        }
 public override IEnumerable <ControllerAndSetNullMethod> GetSubControllers()
 {
     yield return(new ControllerAndSetNullMethod(_rowsController, () => _rowsController = null));
 }