示例#1
0
 public TerminalBookmark(TerminalBookmark bm)
 {
     Id = bm.Id;
     Title = bm.Title;
     ImageIndex = bm.ImageIndex;
     BookmarkDisplayMode = bm.BookmarkDisplayMode;
 }
示例#2
0
        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;
        }
示例#3
0
 public TerminalBookmark(TerminalBookmark bm)
 {
     Id                  = bm.Id;
     Title               = bm.Title;
     ImageIndex          = bm.ImageIndex;
     BookmarkDisplayMode = bm.BookmarkDisplayMode;
 }
示例#4
0
 private void BookmarkSelected(TerminalBookmark leaving, TerminalBookmark entering)
 {
     BookmarkStorage.Instance.CurrentBookmarkId = entering.Id;
     // сохранить положиение и размеры окошек той вкладки, с которой уходим
     SaveNonChartWindowsPlacement(leaving);
     // показать окошки для вкладки
     ShowBookmarkChildren(entering);
 }
示例#5
0
        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);
        }
示例#8
0
        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);
        }
示例#9
0
        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);
        }
示例#10
0
        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);
 }
示例#12
0
        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;
        }
示例#13
0
 public void AddBookmark(TerminalBookmark bookmark)
 {
     bookmarks.Add(bookmark);
     WasModified = true;
 }
 public void DeleteBookmark(TerminalBookmark bm)
 {
     BookmarkStorage.Instance.RemoveBookmark(bm.Id);
     LoadBookmarks();
     GoOnBookmark(BookmarkStorage.Instance.bookmarks[0].Id);
 }
示例#15
0
 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;
 }
示例#18
0
        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);
        }
示例#19
0
 public void AddBookmark(TerminalBookmark bookmark)
 {
     bookmarks.Add(bookmark);
     WasModified = true;
 }
示例#20
0
 /// <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;
         }
     }
 }
示例#21
0
 /// <summary>
 /// удалить графики, оставшиеся без вкладки
 /// </summary>
 private void InstanceOnBookmarkDeleted(TerminalBookmark terminalBookmark)
 {
     // закрыть графики - остальные окна не надо уничтожать, и так закроются
     foreach (var chart in Charts)
     {
         if (chart.bookmarkId != terminalBookmark.Id) continue;
         chart.Close();
     }
 }
示例#22
0
 private void CtrlOnClicked(object sender, EventArgs eventArgs)
 {
     SelectedBookmark = ((BookmarkControl)sender).Bookmark;
     DialogResult = DialogResult.OK;
 }
示例#23
0
        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;
        }
示例#24
0
 private void CtrlOnClicked(object sender, EventArgs eventArgs)
 {
     SelectedBookmark = ((BookmarkControl)sender).Bookmark;
     DialogResult     = DialogResult.OK;
 }