private void showMoveUpDownRemoveControls()
        {
            int oldIndex = book.CurrentPageIndex;

            GUILayout.BeginHorizontal();

            var moveUpEnabled = oldIndex > 0;

            GUI.enabled = moveUpEnabled;
            if (GUILayout.Button("Move page up"))
            {
                var page = book.Pages[oldIndex];
                book.Pages.RemoveAt(oldIndex);
                int newIndex = oldIndex - 1;
                book.Pages.Insert(newIndex, page);
                book.CurrentPageIndex       = newIndex;
                page.Number                 = newIndex + 1;
                book.Pages[oldIndex].Number = oldIndex + 1;
            }

            var moveDownEnabled = oldIndex < book.Pages.Count - 1;

            GUI.enabled = moveDownEnabled;
            if (GUILayout.Button("Move page down"))
            {
                var page = book.Pages[oldIndex];
                book.Pages.RemoveAt(oldIndex);
                int newIndex = oldIndex + 1;
                book.Pages.Insert(newIndex, page);
                book.CurrentPageIndex       = newIndex;
                page.Number                 = newIndex + 1;
                book.Pages[oldIndex].Number = oldIndex + 1;
            }

            var removeEnabled = book.Pages.Count > 1;

            GUI.enabled = removeEnabled;
            if (GUILayout.Button("Remove page"))
            {
                book.Pages.RemoveAt(oldIndex);
                if (oldIndex == book.Pages.Count)
                {
                    book.CurrentPageIndex = oldIndex - 1;
                }
                for (int i = 0; i < book.Pages.Count; i++)
                {
                    book.Pages [book.CurrentPageIndex + i].Number = book.CurrentPageIndex + i + 1;
                }
                BookComponent.ReloadScene();
            }

            GUI.enabled = true;

            GUILayout.EndHorizontal();
        }
        private void showPageSelectionControls()
        {
            GUILayout.Label("Go to page", EditorStyles.boldLabel);
            pagesDescriptions = bookPagesDescriptionsArray(book);
            var index = book.CurrentPageIndex;

            book.CurrentPageIndex = EditorGUILayout.Popup(index, pagesDescriptions.ToArray());
            if (index != book.CurrentPageIndex)
            {
                BookComponent.ReloadScene();
            }
        }
        public void OpenExistingBookButtonPressed()
        {
            Debug.Log("OpenExistingBookButtonPressed");
            var path = EditorUtility.OpenFilePanel(
                "Select a book to open",
                "",
                "xml");

            if (path.Length != 0 && File.Exists(path))
            {
                book     = Book.BookWithUrl(path);
                bookPath = path;
                Debug.Log(book);

                BookComponent.ReloadScene();
                PicturesWindow.UpdatePicturesList();
            }
        }
        void OnGUI()
        {
            GUILayout.Label("Pages", EditorStyles.boldLabel);

            if (GUILayout.Button("Add new page"))
            {
                var page = BookPage.EmptyPage(book.CurrentPageIndex + 2);
                book.Pages.Insert(book.CurrentPageIndex + 1, page);
                book.CurrentPageIndex++;
                BookComponent.ReloadScene();
            }

            if (book.Pages.Count > 0)
            {
                showPageSelectionControls();
                showMoveUpDownRemoveControls();
            }

            showColorControls();
        }