//---------------------------------------------------------------------- public NotebookPane(MainMenuManager _manager) : base(_manager) { //------------------------------------------------------------------ var notebook = new NuclearUI.Notebook(Manager.MenuScreen); AddChild(notebook); notebook.HasClosableTabs = true; var homeTab = new NuclearUI.NotebookTab(notebook, "Home", null); homeTab.IsPinned = true; notebook.Tabs.Add(homeTab); var createTab = new NuclearUI.Button(Manager.MenuScreen, "Create tab"); createTab.AnchoredRect = NuclearUI.AnchoredRect.CreateFull(10); int iTabCounter = 0; createTab.ClickHandler = delegate { var tab = new NuclearUI.NotebookTab(notebook, string.Format("Tab {0}", ++iTabCounter), null); notebook.Tabs.Add(tab); }; homeTab.PageGroup.AddChild(createTab); }
//---------------------------------------------------------------------- public void SetActiveTab(NotebookTab _tab) { Debug.Assert(Tabs.Contains(_tab)); ActiveTabIndex = Tabs.IndexOf(_tab); _tab.IsUnread = false; }
//---------------------------------------------------------------------- public Notebook(Screen _screen) : base(_screen) { Style = Screen.Style.NotebookStyle; mPanel = new Panel(Screen, Screen.Style.Panel, Screen.Style.PanelCornerSize); Tabs = new ObservableList <NotebookTab>(); Tabs.ListChanged += delegate(object _source, ObservableList <NotebookTab> .ListChangedEventArgs _args) { if (!_args.Added) { if (DraggedTab == _args.Item) { DraggedTab = null; } if (HoveredTab == _args.Item) { HoveredTab = null; } } if (Tabs.Count > 0) { ActiveTabIndex = Math.Min(Tabs.Count - 1, ActiveTabIndex); Tabs[ActiveTabIndex].IsUnread = false; } }; }
//---------------------------------------------------------------------- internal void DropTab() { NotebookTab droppedTab = DraggedTab; int iOldIndex = Tabs.IndexOf(droppedTab); if (miDraggedTabTargetIndex != iOldIndex) { Tabs.RemoveAt(iOldIndex); Tabs.Insert(miDraggedTabTargetIndex, droppedTab); ActiveTabIndex = miDraggedTabTargetIndex; } DraggedTab = null; miDraggedTabTargetIndex = -1; }
protected internal override void OnPadMove(Direction _direction) { int iTabIndex = mNotebook.Tabs.IndexOf(this); if (_direction == Direction.Left && iTabIndex > 0) { NotebookTab tab = mNotebook.Tabs[iTabIndex - 1]; Screen.Focus(tab); } else if (_direction == Direction.Right && iTabIndex < mNotebook.Tabs.Count - 1) { NotebookTab tab = mNotebook.Tabs[iTabIndex + 1]; Screen.Focus(tab); } else { base.OnPadMove(_direction); } }
//---------------------------------------------------------------------- public Notebook( Screen _screen ) : base(_screen) { Style = new NotebookStyle( Screen.Style.NotebookTabCornerSize, Screen.Style.NotebookTab, Screen.Style.NotebookTabFocus, Screen.Style.NotebookActiveTab, Screen.Style.NotebookActiveTabFocus, Screen.Style.NotebookUnreadTabMarker ); mPanel = new Panel( Screen, Screen.Style.Panel, Screen.Style.PanelCornerSize ); Tabs = new ObservableList<NotebookTab>(); Tabs.ListChanged += delegate( object _source, ObservableList<NotebookTab>.ListChangedEventArgs _args ) { if( ! _args.Added ) { if( DraggedTab == _args.Item ) { DraggedTab = null; } if( HoveredTab == _args.Item ) { HoveredTab = null; } } if( Tabs.Count > 0 ) { ActiveTabIndex = Math.Min( Tabs.Count - 1, ActiveTabIndex ); Tabs[ActiveTabIndex].IsUnread = false; } }; }
//---------------------------------------------------------------------- internal void DropTab() { NotebookTab droppedTab = DraggedTab; int iOldIndex = Tabs.IndexOf( droppedTab ); if( miDraggedTabTargetIndex != iOldIndex ) { Tabs.RemoveAt( iOldIndex ); Tabs.Insert( miDraggedTabTargetIndex, droppedTab ); ActiveTabIndex = miDraggedTabTargetIndex; } DraggedTab = null; miDraggedTabTargetIndex = -1; }
//---------------------------------------------------------------------- public void SetActiveTab( NotebookTab _tab ) { Debug.Assert( Tabs.Contains( _tab ) ); ActiveTabIndex = Tabs.IndexOf( _tab ); _tab.IsUnread = false; if( _tab.OnReadHandler != null ) _tab.OnReadHandler(); }