internal void Initialize(
            DiscussionSort discussionSort,
            DiscussionFilter displayFilter,
            DiscussionLayout discussionLayout,
            AsyncDiscussionLoader discussionLoader,
            AsyncDiscussionHelper discussionHelper,
            IEnumerable <ICommand> commands,
            Action <string> onFontSelected)
        {
            _discussionSort = discussionSort;
            setDiscussionSortStateInControls(_discussionSort.SortState);

            _displayFilter = displayFilter;
            setDiscussionFilterStateInControls(_displayFilter.FilterState);

            _discussionLayout = discussionLayout;
            setDiscussionLayoutStateInControls();
            updateColumnWidthSizeMenuItemState();

            _discussionLoader = discussionLoader;
            _discussionHelper = discussionHelper;

            addCustomActions(commands);

            addFontSizes();
            _onFontSelected = onFontSelected;
        }
Exemple #2
0
        public DiscussionsForm(
            IGitCommandService git, User currentUser, MergeRequestKey mrk, IEnumerable <Discussion> discussions,
            string mergeRequestTitle, User mergeRequestAuthor,
            ColorScheme colorScheme, AsyncDiscussionLoader discussionLoader, AsyncDiscussionHelper discussionHelper,
            string webUrl, Shortcuts shortcuts,
            Func <ICommandCallback, IEnumerable <ICommand> > getCommands)
        {
            _mergeRequestKey   = mrk;
            _mergeRequestTitle = mergeRequestTitle;

            _discussionLoader = discussionLoader;
            _discussionLoader.StatusChanged += onDiscussionLoaderStatusChanged;

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

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

            var discussionLayout = new DiscussionLayout(
                ConfigurationHelper.GetDiffContextPosition(Program.Settings),
                ConfigurationHelper.GetDiscussionColumnWidth(Program.Settings),
                Program.Settings.NeedShiftReplies);

            _discussionLayout = discussionLayout;
            _discussionLayout.DiffContextPositionChanged   += updateSaveDefaultLayoutState;
            _discussionLayout.DiscussionColumnWidthChanged += updateSaveDefaultLayoutState;
            _discussionLayout.NeedShiftRepliesChanged      += updateSaveDefaultLayoutState;
            updateSaveDefaultLayoutState();
            Program.Settings.PropertyChanged += onSettingsPropertyChanged;

            var displayFilter  = new DiscussionFilter(currentUser, mergeRequestAuthor, DiscussionFilterState.Default);
            var discussionSort = new DiscussionSort(DiscussionSortState.Default);

            // Includes making some boxes visible. This does not paint them because their parent (Form) is hidden so far.
            discussionPanel.Initialize(discussionSort, displayFilter, discussionLoader, discussions,
                                       shortcuts, git, colorScheme, mrk, mergeRequestAuthor, currentUser, discussionLayout);
            if (discussionPanel.DiscussionCount < 1)
            {
                throw new NoDiscussionsToShow();
            }

            searchPanel.Initialize(discussionPanel);

            discussionMenu.Initialize(discussionSort, displayFilter, discussionLayout,
                                      discussionLoader, discussionHelper, getCommands(this), applyFont);

            linkLabelGitLabURL.Text = webUrl;
            toolTip.SetToolTip(linkLabelGitLabURL, webUrl);
            linkLabelGitLabURL.SetLinkLabelClicked(UrlHelper.OpenBrowser);

            Text          = DefaultCaption;
            MainMenuStrip = discussionMenu.MenuStrip;
        }
        internal void Initialize(
            DiscussionSort discussionSort,
            DiscussionFilter displayFilter,
            AsyncDiscussionLoader discussionLoader,
            IEnumerable <Discussion> discussions,
            Shortcuts shortcuts,
            IGitCommandService git,
            ColorScheme colorScheme,
            MergeRequestKey mergeRequestKey,
            User mergeRequestAuthor,
            User currentUser,
            DiscussionLayout discussionLayout)
        {
            _shortcuts          = shortcuts;
            _git                = git;
            _colorScheme        = colorScheme;
            _mergeRequestKey    = mergeRequestKey;
            _mergeRequestAuthor = mergeRequestAuthor;
            _currentUser        = currentUser;

            _discussionSort = discussionSort;
            _discussionSort.SortStateChanged += onSortStateChanged;

            _displayFilter = displayFilter;
            _displayFilter.FilterStateChanged += onFilterChanged;

            _discussionLoader         = discussionLoader;
            _discussionLoader.Loaded += onDiscussionsLoaded;

            _discussionLayout = discussionLayout;
            _discussionLayout.DiffContextPositionChanged   += onDiffContextPositionChanged;
            _discussionLayout.DiscussionColumnWidthChanged += onDiscussionColumnWidthChanged;
            _discussionLayout.NeedShiftRepliesChanged      += onNeedShiftRepliesChanged;

            apply(discussions);
        }