public ImportXlsSheetControl()
        {
            InitializeComponent();

            _grid = new ReoGridControl();
            ReoGridUtil.InitGrid(_grid, read_only: true);
            _previewPanel.Controls.Add(_grid);

            _columnsControl = new ImportColumnsControl {
                Dock = DockStyle.Fill
            };
            _columnsLoadControl = new LoadingContainerControl {
                ContainedControl = _columnsControl, Dock = DockStyle.Fill
            };
            _columnsPanel.Controls.Add(_columnsLoadControl);

            _propGrid.SelectedObject = new SheetOptions();

            Load += (sender, e) => {
                _outerSplitContainer.SplitterDistance = _outerSplitContainer.Height - BOTTOM_PANE_HEIGHT;
                _outerSplitContainer.SplitterWidth    = 11;

                _bottomSplitContainer.SplitterDistance = OPTIONS_WIDTH;
                _bottomSplitContainer.SplitterWidth    = 11;
            };
        }
Example #2
0
        }                                                      // the ultimate result of this forum

        public ImportCsvForm(string filePath, DatabaseSchema schema, NotebookManager manager)
        {
            InitializeComponent();
            _filePath       = filePath;
            _databaseSchema = schema;
            _manager        = manager;

            _dockPanel = new DockPanel {
                Dock          = DockStyle.Fill,
                DocumentStyle = DocumentStyle.DockingWindow,
                Theme         = new VS2012LightTheme {
                    ShowWindowListButton    = false,
                    ShowAutoHideButton      = false,
                    ForceActiveCaptionColor = true
                },
                DockTopPortion            = 0.5,
                AllowEndUserDocking       = false,
                AllowEndUserNestedDocking = false,
                ShowDocumentIcon          = true
            };
            _dockPanelContainer.Controls.Add(_dockPanel);

            _optionsControl = new ImportCsvOptionsControl(schema)
            {
                Dock = DockStyle.Fill
            };
            {
                var dc = new UserControlDockContent("Import Options", _optionsControl, DockAreas.DockTop)
                {
                    CloseButtonVisible = false
                };
                dc.Show(_dockPanel, DockState.DockTop);
            }

            _columnsControl = new ImportColumnsControl {
                Dock = DockStyle.Fill
            };
            _columnsLoadControl = new LoadingContainerControl {
                ContainedControl = _columnsControl
            };
            {
                var dc = new UserControlDockContent("Columns", _columnsLoadControl, DockAreas.Float | DockAreas.DockTop)
                {
                    CloseButtonVisible = false
                };
                dc.Show(_dockPanel, new Rectangle(-50000, -50000, 100, 100)); // hide brief flash of this floating window
                dc.DockHandler.FloatPane.DockTo(_dockPanel.DockWindows[DockState.DockTop]);
                dc.DockAreas = DockAreas.DockTop;
            }

            DockContent inputPreviewDc;

            _inputPreviewControl = new ImportTextFilePreviewControl {
                Dock = DockStyle.Fill
            };
            _inputPreviewLoadControl = new LoadingContainerControl {
                ContainedControl = _inputPreviewControl
            };
            {
                var dc = new UserControlDockContent("Original File", _inputPreviewLoadControl)
                {
                    CloseButton        = false,
                    CloseButtonVisible = false,
                    ControlBox         = false,
                    Icon = Properties.Resources.PageWhiteTextIco
                };
                dc.Show(_dockPanel);
                inputPreviewDc = dc;
            }

            _sqlControl = new SqlTextControl(readOnly: true)
            {
                Dock = DockStyle.Fill
            };
            _sqlLoadControl = new LoadingContainerControl {
                ContainedControl = _sqlControl
            };
            {
                var dc = new UserControlDockContent("Import Script", _sqlLoadControl)
                {
                    CloseButton        = false,
                    CloseButtonVisible = false,
                    ControlBox         = false,
                    Icon = Properties.Resources.ScriptIco
                };
                dc.Show(_dockPanel);
            }

            _outputPreviewControl = new ImportPreviewControl {
                Dock = DockStyle.Fill
            };
            _outputPreviewLoadControl = new LoadingContainerControl {
                ContainedControl = _outputPreviewControl
            };
            {
                var dc = new UserControlDockContent("Preview", _outputPreviewLoadControl)
                {
                    CloseButton        = false,
                    CloseButtonVisible = false,
                    ControlBox         = false,
                    Icon = Properties.Resources.TableImportIco
                };
                dc.Show(_dockPanel);
            }

            inputPreviewDc.Activate(); // select "Original File" tab initially

            Load += async(sender, e) => {
                ValidateOptions();
                await UpdateControls(inputChange : true);
            };

            var o = _optionsControl;

            Bind.OnChange(new Slot[] { o.TargetTableName },
                          async(sender, e) => {
                ValidateOptions();
                await UpdateControls(columnsChange: true);
            });
            Bind.OnChange(new Slot[] { o.FileEncoding },
                          async(sender, e) => await UpdateControls(inputChange: true));
            Bind.OnChange(new Slot[] { o.IfTableExists, o.SkipLines, o.HasColumnHeaders },
                          async(sender, e) => await UpdateControls(columnsChange: true));
            Bind.OnChange(new Slot[] { o.IfConversionFails, _columnsControl.Change, _optionsError, _columnsError,
                                       _inputPreviewError },
                          async(sender, e) => await UpdateScriptAndOutputPreview());
            Bind.BindAny(new[] { _columnsLoadControl.IsOverlayVisible, _inputPreviewLoadControl.IsOverlayVisible,
                                 _outputPreviewLoadControl.IsOverlayVisible, _sqlLoadControl.IsOverlayVisible },
                         x => _okBtn.Enabled = !x);

            Text = $"Import {Path.GetFileName(_filePath)}";
            o.TargetTableName.Value = Path.GetFileNameWithoutExtension(_filePath);
        }