예제 #1
0
        public DiscussionSortPanel(DiscussionSortState initialSort, Action onSortChanged)
        {
            _onSortChanged = onSortChanged;

            InitializeComponent();

            _radioButtonGroup.AddRadioButton(radioButtonSortDefault, (int)(DiscussionSortState.Default));
            _radioButtonGroup.AddRadioButton(radioButtonSortByReviewer, (int)(DiscussionSortState.ByReviewer));
            _radioButtonGroup.UpdateCheckedState((int)initialSort);

            radioButtonSortDefault.CheckedChanged    += new System.EventHandler(this.SortElement_CheckedChanged);
            radioButtonSortByReviewer.CheckedChanged += new System.EventHandler(this.SortElement_CheckedChanged);
        }
 void setDiscussionSortStateInControls(DiscussionSortState state)
 {
     if (state == DiscussionSortState.Default)
     {
         checkGroupItem(_sortMenuItemGroup, defaultToolStripMenuItem);
     }
     else if (state == DiscussionSortState.Reverse)
     {
         checkGroupItem(_sortMenuItemGroup, reverseToolStripMenuItem);
     }
     else if (state == DiscussionSortState.ByReviewer)
     {
         checkGroupItem(_sortMenuItemGroup, byReviewerToolStripMenuItem);
     }
 }
예제 #3
0
        /// <summary>
        /// Throws:
        /// ArgumentException
        /// </summary>
        internal DiscussionsForm(
            DataCache dataCache, GitLabInstance gitLabInstance, IModificationListener modificationListener,
            IGitCommandService git, User currentUser, MergeRequestKey mrk, IEnumerable <Discussion> discussions,
            string mergeRequestTitle, User mergeRequestAuthor,
            int diffContextDepth, ColorScheme colorScheme,
            Func <MergeRequestKey, IEnumerable <Discussion>, Task> updateGit, Action onDiscussionModified)
        {
            _mergeRequestKey    = mrk;
            _mergeRequestTitle  = mergeRequestTitle;
            _mergeRequestAuthor = mergeRequestAuthor;

            _git = git;
            _diffContextDepth = diffContextDepth;

            _colorScheme = colorScheme;

            _dataCache            = dataCache;
            _gitLabInstance       = gitLabInstance;
            _modificationListener = modificationListener;
            _updateGit            = updateGit;
            _onDiscussionModified = onDiscussionModified;

            _currentUser = currentUser;
            if (_currentUser.Id == 0)
            {
                throw new ArgumentException("Bad user Id");
            }

            CommonControls.Tools.WinFormsHelpers.FixNonStandardDPIIssue(this,
                                                                        (float)Common.Constants.Constants.FontSizeChoices["Design"], 96);
            InitializeComponent();
            CommonControls.Tools.WinFormsHelpers.LogScaleDimensions(this);

            DisplayFilter = new DiscussionFilter(_currentUser, _mergeRequestAuthor,
                                                 DiscussionFilterState.Default);
            SystemFilter = new DiscussionFilter(_currentUser, _mergeRequestAuthor,
                                                DiscussionFilterState.AllExceptSystem);

            FilterPanel = new DiscussionFilterPanel(DisplayFilter.Filter,
                                                    () =>
            {
                DisplayFilter.Filter = FilterPanel.Filter;
                updateLayout(null, true, true);
                updateSearch();
            });

            ActionsPanel = new DiscussionActionsPanel(() => BeginInvoke(new Action(async() => await onRefresh())));

            SearchPanel = new DiscussionSearchPanel(
                (query, forward) =>
            {
                if (query.Text == String.Empty)
                {
                    resetSearch();
                }
                else if (TextSearch == null || !query.Equals(TextSearch.Query))
                {
                    startSearch(query, true);
                }
                else
                {
                    MostRecentFocusedDiscussionControl?.Focus();
                    continueSearch(forward);
                }
            });

            DiscussionSortState sortState = DiscussionSortState.Default;

            DisplaySort = new DiscussionSort(sortState);
            SortPanel   = new DiscussionSortPanel(DisplaySort.SortState,
                                                  () =>
            {
                DisplaySort.SortState = SortPanel.SortState;
                updateLayout(null, true, true);
                updateSearch();
            });

            FontSelectionPanel = new DiscussionFontSelectionPanel(font => applyFont(font));

            Controls.Add(FilterPanel);
            Controls.Add(ActionsPanel);
            Controls.Add(SearchPanel);
            Controls.Add(SortPanel);
            Controls.Add(FontSelectionPanel);

            applyFont(Program.Settings.MainWindowFontSizeName);
            applyTheme(Program.Settings.VisualThemeName);

            if (!renderDiscussions(discussions, false))
            {
                throw new NoDiscussionsToShow();
            }
        }
예제 #4
0
 public DiscussionSort(DiscussionSortState initialState)
 {
     SortState = initialState;
 }