public ImportXlsBookForm(string filePath, DatabaseSchema schema, NotebookManager manager) { InitializeComponent(); _filePath = filePath; _databaseSchema = schema; _manager = manager; _dockPanel = DockPanelUtil.CreateDockPanel(); _dockPanel.DockLeftPortion = 300; _dockPanelContainer.Controls.Add(_dockPanel); _sheetsControl = new ImportXlsSheetsControl(); { var dc = new UserControlDockContent("Workbook", _sheetsControl, DockAreas.DockLeft) { CloseButtonVisible = false }; dc.Show(_dockPanel, DockState.DockLeft); } _optionsControl = new ImportXlsSheetControl(); { var dc = new UserControlDockContent("Worksheet", _optionsControl) { CloseButtonVisible = false, Icon = Properties.Resources.TableSheetIco }; dc.Show(_dockPanel); } _sqlControl = new SqlTextControl(readOnly: true); _sqlLoadControl = new LoadingContainerControl { ContainedControl = _sqlControl }; { var dc = new UserControlDockContent("Import Script", _sqlLoadControl, DockAreas.DockBottom) { CloseButtonVisible = false }; dc.Show(_dockPanel, DockState.DockBottomAutoHide); } _outputPreviewControl = new ImportPreviewControl(); _outputPreviewLoadControl = new LoadingContainerControl { ContainedControl = _outputPreviewControl }; { var dc = new UserControlDockContent("Preview", _outputPreviewLoadControl, DockAreas.DockBottom) { CloseButtonVisible = false, Icon = Properties.Resources.TableImportIco }; dc.Show(_dockPanel, DockState.DockBottomAutoHide); } }
private void OpenHelp(string path) { string url; string homeUrl; lock (_manager.HelpServerLock) { url = $"http://127.0.0.1:{_manager.HelpServer.PortNumber}{path}"; homeUrl = $"http://127.0.0.1:{_manager.HelpServer.PortNumber}/index.html"; } if (Settings.Default.UseExternalHelpBrowser) { Process.Start(url); return; } BeginInvoke(new MethodInvoker(() => { HelpDocumentControl helpCtl; if (_helpDoc != null) { helpCtl = (HelpDocumentControl)_helpDoc.Content; helpCtl.Navigate(url); } else { helpCtl = new HelpDocumentControl(_manager, homeUrl, url) { Dock = DockStyle.Fill }; _helpDoc = new UserControlDockContent("SQL Notebook Help", helpCtl, DockAreas.Document | DockAreas.Float) { Icon = Resources.HelpIco }; helpCtl.SetTitleProc = x => _helpDoc.Text = x; _helpDoc.FormClosed += (sender, e) => _helpDoc = null; _helpDoc.Show(_dockPanel); } _helpDoc.Activate(); _helpDoc.Focus(); })); }
} // 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); }
public MainForm(string filePath, bool isNew) { InitializeComponent(); _menuStrip.SetMenuAppearance(); _menuStrip.Items.Insert(0, _searchTxt = new CueToolStripTextBox { Alignment = ToolStripItemAlignment.Right, CueText = "Search Help", ToolTipText = "Search the built-in documentation (Ctrl+H)", AutoSize = false, Margin = new Padding(0, 0, 5, 0) }); _searchTxt.InnerTextBox.KeyDown += (sender, e) => { if (e.KeyCode == Keys.Enter) { e.Handled = true; e.SuppressKeyPress = true; var text = _searchTxt.Text; OpenHelp("/search?q=" + System.Net.WebUtility.UrlEncode(text)); _searchTxt.Text = ""; } }; if (isNew) { _notebook = new Notebook(filePath, isNew); } else { var f = new WaitForm("SQL Notebook", $"Opening notebook \"{Path.GetFileNameWithoutExtension(filePath)}\"", () => { _notebook = new Notebook(filePath, isNew); }); using (f) { f.StartPosition = FormStartPosition.CenterScreen; f.ShowDialog(); if (f.ResultException != null) { throw f.ResultException; } } } _isNew = isNew; _manager = new NotebookManager(_notebook, _isTransactionOpen); _importer = new Importer(_manager, this); _dockPanel = new DockPanel { Dock = DockStyle.Fill, Theme = new VS2012LightTheme { ToolStripRenderer = new MenuRenderer() }, DocumentStyle = DocumentStyle.DockingWindow, DefaultFloatWindowSize = new Size(700, 700), ShowDocumentIcon = true, DockLeftPortion = 250 }; _toolStripContainer.ContentPanel.Controls.Add(_dockPanel); _contentsPane = new UserControlDockContent("Table of Contents", _explorer = new ExplorerControl(_manager, this, _operationInProgress), DockAreas.DockLeft | DockAreas.DockRight); _contentsPane.CloseButtonVisible = false; _contentsPane.Show(_dockPanel, DockState.DockLeft); _manager.NotebookItemOpenRequest += Manager_NotebookItemOpenRequest; _manager.NotebookItemCloseRequest += Manager_NotebookItemCloseRequest; _manager.NotebookItemsSaveRequest += Manager_NotebookItemsSaveRequest; _manager.NotebookDirty += (sender, e) => SetDirty(); _manager.NotebookItemRename += Manager_NotebookItemRename; _manager.StatusUpdate += Manager_StatusUpdate; _manager.HandleHotkeyRequest += Manager_HandleHotkeyRequest; // show a progressbar in the taskbar button and the statusbar when a operation is in progress _operationInProgress.Change += (oldValue, newValue) => { if (!oldValue && newValue) { this.BeginTaskbarProgress(); _statusLbl.Visible = true; // this restarts the statusbar progress marquee from the beginning _statusProgressbar.Style = ProgressBarStyle.Continuous; _statusProgressbar.Style = ProgressBarStyle.Marquee; _statusProgressbar.Visible = true; _cancelLnk.IsLink = true; _cancelLnk.Text = "Cancel"; _cancelLnk.Visible = true; } else if (oldValue && !newValue) { _notebook.EndUserCancel(); this.EndTaskbarProgress(); _statusProgressbar.Visible = false; _statusLbl.Visible = false; _cancelLnk.Visible = false; } }; Slot.Bind( () => BeginInvoke(new MethodInvoker(() => _importMnu.Enabled = _saveAsMnu.Enabled = !_operationInProgress && !_isTransactionOpen )), _operationInProgress, _isTransactionOpen); Slot.Bind( () => BeginInvoke(new MethodInvoker(() => _exportMnu.Enabled = !_operationInProgress )), _operationInProgress); Slot.Bind( () => BeginInvoke(new MethodInvoker(() => _saveBtn.Enabled = _saveMnu.Enabled = !_operationInProgress && _isDirty && !_isTransactionOpen )), _operationInProgress, _isDirty, _isTransactionOpen); _isDirty.Change += (a, b) => SetTitle(); Slot.Bind( () => BeginInvoke(new MethodInvoker(() => _openTransactionLbl.Visible = _isTransactionOpen )), _isTransactionOpen); if (isNew) { switch (Settings.Default.AutoCreateInNewNotebooks) { case 1: // New note Load += (sender, e) => { var name = _manager.NewNote(); OpenItem(new NotebookItem(NotebookItemType.Note, name)); _isDirty.Value = false; }; break; case 2: // New console Load += (sender, e) => { var name = _manager.NewConsole(); OpenItem(new NotebookItem(NotebookItemType.Console, name)); _isDirty.Value = false; }; break; case 3: // New script Load += (sender, e) => { var name = _manager.NewScript(); OpenItem(new NotebookItem(NotebookItemType.Script, name)); _isDirty.Value = false; }; break; } } Load += async(sender, e) => { _manager.Rescan(); var updateAvailable = await IsUpdateAvailable(); if (updateAvailable) { _appUpdateLbl.Visible = true; } }; SetTitle(); }
private void OpenItem(NotebookItem item) { UserControlDockContent wnd; if (_openItems.TryGetValue(item, out wnd)) { wnd.Activate(); wnd.Focus(); return; } UserControlDockContent f = null; Func <string> getName = null; var dockAreas = DockAreas.Document | DockAreas.Float; if (item.Type == NotebookItemType.Console) { var doc = new ConsoleDocumentControl(item.Name, _manager, this); f = new UserControlDockContent(item.Name, doc, dockAreas) { Icon = Resources.ApplicationXpTerminalIco }; ApplySaveOnClose(f, doc); getName = () => doc.ItemName; } else if (item.Type == NotebookItemType.Note) { var doc = new NoteDocumentControl(item.Name, _manager); f = new UserControlDockContent(item.Name, doc, dockAreas) { Icon = Resources.NoteIco }; ApplySaveOnClose(f, doc); getName = () => doc.ItemName; } else if (item.Type == NotebookItemType.Script) { var doc = new QueryDocumentControl(item.Name, _manager, this, _operationInProgress); f = new UserControlDockContent(item.Name, doc, dockAreas) { Icon = Resources.ScriptIco }; ApplySaveOnClose(f, doc); getName = () => doc.ItemName; } else if (item.Type == NotebookItemType.Table || item.Type == NotebookItemType.View) { var doc = new TableDocumentControl(_manager, item.Name, this); f = new UserControlDockContent(item.Name, doc, dockAreas) { Icon = Resources.TableIco }; } if (getName != null) { f.FormClosed += (sender2, e2) => { // the item may have been renamed since we opened it, so make sure to use getName() for the current // name instead of closing over item.Name. _openItems.Remove(new NotebookItem(item.Type, getName())); }; _openItems[item] = f; } f.Show(_dockPanel); }
private void ApplySaveOnClose(UserControlDockContent f, IDocumentControl doc) { f.FormClosing += (sender, e) => doc.Save(); }