public TerminalBookmark(TerminalBookmark bm) { Id = bm.Id; Title = bm.Title; ImageIndex = bm.ImageIndex; BookmarkDisplayMode = bm.BookmarkDisplayMode; }
private void LoadBookmarks() { panelContent.Controls.Clear(); SelectedBookmark = null; foreach (var bm in BookmarkStorage.Instance.bookmarks) { var ctrl = new BookmarkControl { Bookmark = bm, ImageList = imgList, Parent = panelContent, AllowDrop = true, ContextMenuStrip = contextMenu }; ctrl.DragEnter += CellDragEnter; ctrl.DragDrop += CellDragDrop; ctrl.DragOver += CellDragOver; ctrl.MouseDown += CellMouseDown; ctrl.Clicked += CtrlOnClicked; ctrl.DragLeave += CellDragLeave; ctrl.CloseClicked += CtrlOnCloseClicked; ctrl.CalculateSize(); panelContent.Controls.Add(ctrl); } ArrangeBookmarks(false); // выделить первую закладку SelectedBookmark = ((BookmarkControl)panelContent.Controls[0]).Bookmark; }
private void BookmarkSelected(TerminalBookmark leaving, TerminalBookmark entering) { BookmarkStorage.Instance.CurrentBookmarkId = entering.Id; // сохранить положиение и размеры окошек той вкладки, с которой уходим SaveNonChartWindowsPlacement(leaving); // показать окошки для вкладки ShowBookmarkChildren(entering); }
private void BtnOkClick(object sender, EventArgs e) { var displayStyle = ((EnumItem <TerminalBookmark.DisplayMode>)cbDisplayStyle.SelectedItem).Value; // валидация var errors = new List <string>(); if (string.IsNullOrEmpty(tbTitle.Text)) { errors.Add(Localizer.GetString("MessageBookmarkTitleNotProvided")); } if (displayStyle == TerminalBookmark.DisplayMode.Картинка && btnImage.ImageIndex < 0) { errors.Add(Localizer.GetString("MessageBookmarkImageNotProvided")); } if (errors.Count > 0) { MessageBox.Show(string.Join(", ", errors), Localizer.GetString("TitleError"), MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // создать новую или отредактировать существующую if (Bookmark == null) { // проверить текст на совпадение if (BookmarkStorage.Instance.bookmarks.Any(b => b.Title == tbTitle.Text)) { if (MessageBox.Show( string.Format(Localizer.GetString("MessageBookmarkAlreadyExistsFmt"), tbTitle.Text), Localizer.GetString("TitleConfirmation"), MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No) { return; } } Bookmark = new TerminalBookmark(tbTitle.Text) { ImageIndex = btnImage.ImageIndex, BookmarkDisplayMode = displayStyle }; DialogResult = DialogResult.OK; return; } // редактировать существующую Bookmark.Title = tbTitle.Text; Bookmark.ImageIndex = btnImage.ImageIndex; Bookmark.BookmarkDisplayMode = displayStyle; DialogResult = DialogResult.OK; }
public TerminalBookmark EnsureBookmark(string bookmarkTitle) { var bookmark = BookmarkStorage.Instance.bookmarks.FirstOrDefault(b => b.Title == bookmarkTitle); if (bookmark != null) { return(bookmark); } bookmark = new TerminalBookmark(bookmarkTitle); AddBookmarkControl(bookmark, Controls.Cast <Control>().Max(c => c.Right + CellPadding)); return(bookmark); }
private BookmarkControl AddBookmarkControl(TerminalBookmark bm, int left) { var btn = new BookmarkControl { Bookmark = bm, ImageList = ImgList, Parent = this, Left = left, ModeEdit = false }; btn.Click += BtnOnClick; btn.CalculateSize(); Controls.Add(btn); return(btn); }
public NewBookmarkDlg(ImageList lstIcons, TerminalBookmark bookmark) : this() { this.lstIcons = lstIcons; Bookmark = bookmark; if (bookmark != null) btnOk.Text = Localizer.GetString("TitleEdit"); btnImage.ImageList = lstIcons; cbDisplayStyle.DataSource = EnumItem<TerminalBookmark.DisplayMode>.items; cbDisplayStyle.SelectedIndex = 0; // прописать свойства переданной вкладки if (bookmark == null) return; tbTitle.Text = bookmark.Title; btnImage.ImageIndex = bookmark.ImageIndex; cbDisplayStyle.SelectedIndex = cbDisplayStyle.Items.Cast<EnumItem<TerminalBookmark.DisplayMode>>().ToList().FindIndex( m => m.Value == bookmark.BookmarkDisplayMode); }
public NewBookmarkDlg(ImageList lstIcons, TerminalBookmark bookmark) : this() { this.lstIcons = lstIcons; Bookmark = bookmark; if (bookmark != null) { btnOk.Text = Localizer.GetString("TitleEdit"); } btnImage.ImageList = lstIcons; cbDisplayStyle.DataSource = EnumItem <TerminalBookmark.DisplayMode> .items; cbDisplayStyle.SelectedIndex = 0; // прописать свойства переданной вкладки if (bookmark == null) { return; } tbTitle.Text = bookmark.Title; btnImage.ImageIndex = bookmark.ImageIndex; cbDisplayStyle.SelectedIndex = cbDisplayStyle.Items.Cast <EnumItem <TerminalBookmark.DisplayMode> >().ToList().FindIndex( m => m.Value == bookmark.BookmarkDisplayMode); }
public bool SwapBookmarks(TerminalBookmark a, TerminalBookmark b) { var indexA = bookmarks.IndexOf(a); if (indexA < 0) { return(false); } var indexB = bookmarks.IndexOf(b); if (indexB < 0) { return(false); } if (indexA == indexB) { return(false); } bookmarks[indexA] = b; bookmarks[indexB] = a; WasModified = true; return(true); }
public void DeleteBookmark(TerminalBookmark bm) { BookmarkStorage.Instance.RemoveBookmark(bm.Id); LoadBookmarks(); GoOnBookmark(BookmarkStorage.Instance.bookmarks[0].Id); }
private void BtnOkClick(object sender, EventArgs e) { var displayStyle = ((EnumItem<TerminalBookmark.DisplayMode>)cbDisplayStyle.SelectedItem).Value; // валидация var errors = new List<string>(); if (string.IsNullOrEmpty(tbTitle.Text)) errors.Add(Localizer.GetString("MessageBookmarkTitleNotProvided")); if (displayStyle == TerminalBookmark.DisplayMode.Картинка && btnImage.ImageIndex < 0) errors.Add(Localizer.GetString("MessageBookmarkImageNotProvided")); if (errors.Count > 0) { MessageBox.Show(string.Join(", ", errors), Localizer.GetString("TitleError"), MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // создать новую или отредактировать существующую if (Bookmark == null) { // проверить текст на совпадение if (BookmarkStorage.Instance.bookmarks.Any(b => b.Title == tbTitle.Text)) { if (MessageBox.Show( string.Format(Localizer.GetString("MessageBookmarkAlreadyExistsFmt"), tbTitle.Text), Localizer.GetString("TitleConfirmation"), MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No) return; } Bookmark = new TerminalBookmark(tbTitle.Text) { ImageIndex = btnImage.ImageIndex, BookmarkDisplayMode = displayStyle }; DialogResult = DialogResult.OK; return; } // редактировать существующую Bookmark.Title = tbTitle.Text; Bookmark.ImageIndex = btnImage.ImageIndex; Bookmark.BookmarkDisplayMode = displayStyle; DialogResult = DialogResult.OK; }
public void AddBookmark(TerminalBookmark bookmark) { bookmarks.Add(bookmark); WasModified = true; }
public bool SwapBookmarks(TerminalBookmark a, TerminalBookmark b) { var indexA = bookmarks.IndexOf(a); if (indexA < 0) return false; var indexB = bookmarks.IndexOf(b); if (indexB < 0) return false; if (indexA == indexB) return false; bookmarks[indexA] = b; bookmarks[indexB] = a; WasModified = true; return true; }
public TerminalBookmark EnsureBookmark(string bookmarkTitle) { var bookmark = BookmarkStorage.Instance.bookmarks.FirstOrDefault(b => b.Title == bookmarkTitle); if (bookmark != null) return bookmark; bookmark = new TerminalBookmark(bookmarkTitle); AddBookmarkControl(bookmark, Controls.Cast<Control>().Max(c => c.Right + CellPadding)); return bookmark; }
private BookmarkControl AddBookmarkControl(TerminalBookmark bm, int left) { var btn = new BookmarkControl { Bookmark = bm, ImageList = ImgList, Parent = this, Left = left, ModeEdit = false }; btn.Click += BtnOnClick; btn.CalculateSize(); Controls.Add(btn); return btn; }
private void ShowBookmarkChildren(TerminalBookmark bookmark) { bookmarkStrip.SelectedBookmark = bookmark; var tabTag = bookmark.Id; // сохранить все окна графиков foreach (var child in Charts.Where(child => child.bookmarkId != tabTag)) { child.SavePlacement(); child.Hide(); } // показать графики вкладки Charts.ForEach(c => { try { if (c.bookmarkId == tabTag) c.Show(); } catch (Exception ex) { Logger.ErrorFormat("Переключение на вкладку {0}: {1}", tabTag, ex); Logger.ErrorFormat("Window title is {0}", c.Text); Logger.ErrorFormat("Ticker is {0}", c.chart.Symbol); throw; } }); Charts.ForEach(c => { if (c.bookmarkId == tabTag) c.RestorePlacement(); }); // убрать окна Счет, Доходность, Чат и прочие, если их нет на свежеоткрытой вкладке foreach (var child in MdiChildren.Where(c => c is IMdiNonChartWindow)) { var windowCode = ((IMdiNonChartWindow)child).WindowCode; if (!nonChartWindows.Any(w => w.Window == windowCode && w.ChartTab == tabTag)) child.Close(); } // показать окна (Счет, Доходность, Чат ...) текущей вкладки и установить им размеры foreach (var wind in nonChartWindows.Where(w => w.ChartTab == tabTag)) { EnsureShowAndPlaceNonChartWindow(wind); } MenuItemVerticalClick(this, EventArgs.Empty); }
/// <summary> /// сохранить размеры окошка, координаты и его текущую вкладку /// </summary> private void SaveNonChartWindowsPlacement(TerminalBookmark leaving) { foreach (var child in MdiChildren.Where(c => c is IMdiNonChartWindow)) { var windowCode = ((IMdiNonChartWindow)child).WindowCode; var wnd = nonChartWindows.FirstOrDefault(w => w.Window == windowCode && ((leaving == null) || (w.ChartTab == leaving.Id))); if (wnd == null) continue; // размеры и координаты try { wnd.WindowPos = child.Location; wnd.WindowSize = child.Size; wnd.WindowState = child.WindowState.ToString(); wnd.CurrentTabIndex = ((IMdiNonChartWindow)child).WindowInnerTabPageIndex; } catch (ObjectDisposedException) { continue; } } }
/// <summary> /// удалить графики, оставшиеся без вкладки /// </summary> private void InstanceOnBookmarkDeleted(TerminalBookmark terminalBookmark) { // закрыть графики - остальные окна не надо уничтожать, и так закроются foreach (var chart in Charts) { if (chart.bookmarkId != terminalBookmark.Id) continue; chart.Close(); } }
private void CtrlOnClicked(object sender, EventArgs eventArgs) { SelectedBookmark = ((BookmarkControl)sender).Bookmark; DialogResult = DialogResult.OK; }