예제 #1
0
        //----------------------------------------------------------------------
        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);
        }
예제 #2
0
        //----------------------------------------------------------------------
        public void SetActiveTab(NotebookTab _tab)
        {
            Debug.Assert(Tabs.Contains(_tab));

            ActiveTabIndex = Tabs.IndexOf(_tab);
            _tab.IsUnread  = false;
        }
예제 #3
0
        //----------------------------------------------------------------------
        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;
                }
            };
        }
예제 #4
0
        //----------------------------------------------------------------------
        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;
        }
예제 #5
0
        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);
            }
        }
예제 #6
0
        //----------------------------------------------------------------------
        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;
                }
            };
        }
예제 #7
0
        //----------------------------------------------------------------------
        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;
        }
예제 #8
0
        //----------------------------------------------------------------------
        public void SetActiveTab( NotebookTab _tab )
        {
            Debug.Assert( Tabs.Contains( _tab ) );

            ActiveTabIndex = Tabs.IndexOf( _tab );
            _tab.IsUnread = false;
            if( _tab.OnReadHandler != null ) _tab.OnReadHandler();
        }