Example #1
0
        /// <summary>Add page to settings tree</summary>
        /// <param name="page">The settings page to add</param>
        /// <param name="parentPageReference">An already added settings page to be a parent in the tree</param>
        /// <param name="icon">An icon to display in tree node</param>
        /// <param name="asRoot">only one page can be set as the root page (for the GitExt and Plugin root node)</param>
        public void AddSettingsPage(ISettingsPage page, SettingsPageReference parentPageReference, Image icon, bool asRoot = false)
        {
            TreeNode node;

            if (parentPageReference == null)
            {
                // add one of the root nodes (e. g. "Git Extensions" or "Plugins"
                node = AddPage(treeView1.Nodes, page, icon);
            }
            else
            {
                if (asRoot)
                {
                    // e. g. to set the Checklist on the "Git Extensions" node
                    node = _pages2NodeMap[parentPageReference];
                }
                else
                {
                    if (!_pages2NodeMap.TryGetValue(parentPageReference, out var parentNode))
                    {
                        throw new ArgumentException("You have to add parent page first: " + parentPageReference);
                    }

                    node = AddPage(parentNode.Nodes, page, icon);
                }
            }

            node.Tag = page;
            _pages2NodeMap.Add(page.PageReference, node);
            _settingsPages.Add(page);
        }
        /// <summary>
        /// </summary>
        /// <param name="page"></param>
        /// <param name="parentPageReference"></param>
        /// <param name="asRoot">only one page can be set as the root page (for the GitExt and Plugin root node)</param>
        public void AddSettingsPage(ISettingsPage page, SettingsPageReference parentPageReference, bool asRoot = false)
        {
            TreeNode node;
            if (parentPageReference == null)
            {
                // add one of the root nodes (e. g. "Git Extensions" or "Plugins"
                node = treeView1.Nodes.Add(page.GetTitle());
            }
            else
            {
                if (asRoot)
                {
                    // e. g. to set the Checklist on the "Git Extensions" node
                    node = _Pages2NodeMap[parentPageReference];
                }
                else
                {
                    TreeNode parentNode;
                    if (!_Pages2NodeMap.TryGetValue(parentPageReference, out parentNode))
                        throw new ArgumentException("You have to add parent page first: " + parentPageReference);

                    node = parentNode.Nodes.Add(page.GetTitle());
                }
            }

            node.Tag = page;
            _Pages2NodeMap.Add(page.PageReference, node);
            _SettingsPages.Add(page);
        }
Example #3
0
 public void UpdateSettingsFrame(ISettingsPage settingsPage)
 {
     if (settingsPage == null)
     {
         return;
     }
     settingsFrame.Content = settingsPage;
 }
Example #4
0
        private TreeNode AddPage(TreeNodeCollection treeNodeCollection, ISettingsPage page, Image icon)
        {
            var node = treeNodeCollection.Add(page.GetTitle());

            if (icon == null)
            {
                return(node);
            }

            treeView1.ImageList.Images.Add(icon);
            node.ImageIndex = node.SelectedImageIndex = treeView1.ImageList.Images.Count - 1;
            return(node);
        }
Example #5
0
        private void PageTree_AfterSelect(object sender, TreeViewEventArgs e)
        {
            ISettingsPage page = e.Node.Tag as ISettingsPage;

            if (!_applyList.Contains(page))
            {
                _applyList.Add(page);
            }
            page.Control.Dock = DockStyle.Fill;
            SplitBox.Panel2.Controls.Add(page.Control);
            if (_currentPage != null)
            {
                _currentPage.Hide();
            }
            page.Control.Show();
            _currentPage = page.Control;
        }
        public void AddSettingsPage(ISettingsPage page, SettingsPageReference parentPageReference)
        {
            TreeNode node;
            if (parentPageReference == null)
                node = treeView1.Nodes.Add(page.GetTitle());
            else
            {
                TreeNode parentNode;
                if (!_Pages2NodeMap.TryGetValue(parentPageReference, out parentNode))
                    throw new ArgumentException("You have to add parent page first: " + parentPageReference.ToString());

                node = parentNode.Nodes.Add(page.GetTitle());
            }

            node.Tag = page;
            _Pages2NodeMap.Add(page.PageReference, node);
            _SettingsPages.Add(page);
        }
Example #7
0
        public void Setup()
        {
            this._logger            = A.Fake <ICustomLoggerFactory>();
            this._menuVisualizer    = A.Fake <IMenuVisualizer>();
            this._outputEnvironment = A.Fake <IOutputEnvironment>();
            this._authService       = A.Fake <IAuthService>();
            this._bookPage          = A.Fake <IBookPage>();
            this._clientPage        = A.Fake <IClientPage>();
            this._settingsPage      = A.Fake <ISettingsPage>();

            _page = new MainPage(
                _logger,
                _menuVisualizer,
                _outputEnvironment,
                _authService,
                _bookPage,
                _clientPage,
                _settingsPage);
        }
Example #8
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MainPage"/> class.
        /// </summary>
        /// <param name="loggerFactory">Logger factory</param>
        /// <param name="menuVisualizer">Menu visualizer</param>
        /// <param name="outputEnvironment">Output environment implementation</param>
        /// <param name="authService">Authorization service implementation</param>
        /// <param name="bookPage">Book page implementation</param>
        /// <param name="clientPage">Client page implementation</param>
        /// <param name="settingsPage">Settings page implementation</param>
        public MainPage(
            ICustomLoggerFactory loggerFactory,
            IMenuVisualizer menuVisualizer,
            IOutputEnvironment outputEnvironment,
            IAuthService authService,
            IBookPage bookPage,
            IClientPage clientPage,
            ISettingsPage settingsPage)
        {
            this._logger = loggerFactory.CreateLogger <MainPage>();

            this._clientPage   = clientPage;
            this._bookPage     = bookPage;
            this._settingsPage = settingsPage;

            this._menuVisualizer    = menuVisualizer;
            this._outputEnvironment = outputEnvironment;
            this._authService       = authService;
        }
Example #9
0
 private void FireSettingsPageSelectedEvent(TreeNode node)
 {
     if (SettingsPageSelected != null)
     {
         ISettingsPage page = node.Tag as ISettingsPage;
         if (page.GuiControl == null)
         {
             var firstSubNode = node.FirstNode;
             if (firstSubNode != null)
             {
                 treeView1.SelectedNode = firstSubNode;
                 return;
             }
         }
         SettingsPageSelected(this, new SettingsPageSelectedEventArgs {
             SettingsPage = page, IsTriggeredByGoto = _isSelectionChangeTriggeredByGoto
         });
     }
 }
Example #10
0
        private void SortSettingsPages()
        {
            List <ISettingsPage> sorted = SettingsPages.OrderBy(x => x.SettingsFile.NameID).ThenByDescending(x => x.SettingsFile.FileInfo.Name).ToList();

            int ptr = 0;

            while (ptr < sorted.Count)
            {
                if (!SettingsPages[ptr].Equals(sorted[ptr]))
                {
                    ISettingsPage t    = SettingsPages[ptr];
                    int           ptr1 = ptr;
                    Application.Current.Dispatcher?.Invoke(() => SettingsPages.Move(ptr1, sorted.IndexOf(t)));
                }
                else
                {
                    ptr++;
                }
            }
        }
Example #11
0
        public void AddSettingsPage(ISettingsPage page, SettingsPageReference parentPageReference)
        {
            TreeNode node;

            if (parentPageReference == null)
            {
                node = treeView1.Nodes.Add(page.GetTitle());
            }
            else
            {
                TreeNode parentNode;
                if (!_Pages2NodeMap.TryGetValue(parentPageReference, out parentNode))
                {
                    throw new ArgumentException("You have to add parent page first: " + parentPageReference);
                }

                node = parentNode.Nodes.Add(page.GetTitle());
            }

            node.Tag = page;
            _Pages2NodeMap.Add(page.PageReference, node);
            _SettingsPages.Add(page);
        }
Example #12
0
        private void SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
        {
            ISettingsPage    page    = e.NewValue as ISettingsPage;
            ISettingsSection section = e.NewValue as ISettingsSection;

            if (page == null && section != null)
            {
                foreach (var settingsPage in Model.SettingPages)
                {
                    if (settingsPage.Sections.Contains(section))
                    {
                        page = settingsPage;
                        break;
                    }
                }
            }

            Model.CurrentPage = page;

            if (section != null)
            {
                Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action <ISettingsSection>(ScrollSectionIntoView), section);
            }
        }
        private int GetOrder(ISettingsPage page)
        {
            var orderedPage = page as IOrderedSettingsPage;

            return orderedPage == null ? 10 : orderedPage.Order;
        }
Example #14
0
        public void UpdateSettings(List <SettingsFile> settingsFiles)
        {
            foreach (SettingsFile settingsFile in settingsFiles)
            {
                bool          add          = true;
                ISettingsPage existingPage = null;
                foreach (ISettingsPage setting in SettingsPages)
                {
                    //Edge case for Settings without file
                    if (settingsFile == null || setting.SettingsFile == null)
                    {
                        continue;
                    }
                    if (settingsFile.FileInfo.FullName.Equals(setting.SettingsFile.FileInfo.FullName))
                    {
                        add          = false;
                        existingPage = setting;
                        break;
                    }
                }

                if (add)
                {
                    switch (settingsFile.Type)
                    {
                    case SettingsFile.SettingsType.Vanilla:
                        Application.Current.Dispatcher?.Invoke(() =>
                                                               SettingsPages.Add(new VanillaSettingsPage(this, settingsFile)));
                        break;

                    case SettingsFile.SettingsType.Bungee:
                        if (EntityViewModel is NetworkViewModel)
                        {
                            Application.Current.Dispatcher?.Invoke(() =>
                                                                   SettingsPages.Add(new ProxySettingsPage(this, settingsFile)));
                            break;
                        }
                        goto default;

                    default:
                        Application.Current.Dispatcher?.Invoke(() =>
                                                               SettingsPages.Add(new DefaultSettingsPage(settingsFile)));
                        break;
                    }
                }

                bool remove      = true;
                int  removeIndex = 0;
                foreach (ISettingsPage setting in SettingsPages)
                {
                    //Edge case for Settings without file
                    if (setting.SettingsFile == null)
                    {
                        continue;
                    }
                    if (settingsFile.FileInfo.FullName.Equals(setting.SettingsFile.FileInfo.FullName))
                    {
                        remove      = false;
                        removeIndex = SettingsPages.IndexOf(setting);
                    }
                }

                if (remove)
                {
                    Application.Current.Dispatcher?.Invoke(() => SettingsPages.RemoveAt(removeIndex));
                }

                if (!add && !remove)
                {
                    existingPage.SettingsFile.ReadText();
                }
            }
            SortSettingsPages();
        }
Example #15
0
        private int GetOrder(ISettingsPage page)
        {
            var orderedPage = page as IOrderedSettingsPage;

            return(orderedPage == null ? 10 : orderedPage.Order);
        }
 public SettingsPageSelectedEventArgs(ISettingsPage settingsPage, bool isTriggeredByGoto)
 {
     SettingsPage      = settingsPage;
     IsTriggeredByGoto = isTriggeredByGoto;
 }
Example #17
0
        public void FlyoutTo(Type type, object parameter = null)
        {
            if (type == null)
            {
                throw new ArgumentNullException(nameof(type));
            }

            if (!this.IsFlyoutAllowed())
            {
                this.Navigate(type, parameter);
            }
            else
            {
                var currentFlyoutControl = this.PeekFlyout();
                if (currentFlyoutControl != null && currentFlyoutControl.Content.GetType() == type)
                {
                    // if this flyout is currently opened, signal new parameter
                    if (currentFlyoutControl.Content is ISettingsPage)
                    {
                        ((ISettingsPage)currentFlyoutControl.Content).OnNavigatedTo(parameter);
                    }
                    return;
                }

                SettingsSizeMode size = SettingsSizeMode.Small;

                object content = null;
                if (type == typeof(TaskPage))
                {
                    // only cache TaskPage because of side effects with other pages +
                    // for memory usage (TaskPage is the only one used many times during the lifetime
                    // of the app)
                    if (!this.flyoutsCache.ContainsKey(type))
                    {
                        this.flyoutsCache.Add(type, Activator.CreateInstance(type));
                    }
                    content = this.flyoutsCache[type];
                }
                else
                {
                    content = Activator.CreateInstance(type);
                }
                if (content is Page)
                {
                    Page page = (Page)content;

                    if (page is ISettingsPage)
                    {
                        ISettingsPage settingsPage = (ISettingsPage)content;

                        size = settingsPage.Size;
                        settingsPage.OnNavigatedTo(parameter);
                    }
                    else
                    {
                        size = SettingsSizeMode.Small;
                    }
                }

                var flyoutControl = new FlyoutControl {
                    Content = content, Size = size, StaysOpen = true
                };

                flyoutControl.Show(this.OnFlyoutClosed);

                this.flyouts.Push(flyoutControl);
            }
        }
 void INavigationAware.OnNavigatedTo(NavigationContext navigationContext)
 {
     SettingPages.ForEach(page => page.Sections.ForEach(section => section.Load()));
     CurrentPage = SettingPages.FirstOrDefault();
 }