예제 #1
0
파일: PushDialog.cs 프로젝트: oqewok/gitter
        public PushDialog(Repository repository)
        {
            Verify.Argument.IsNotNull(repository, "repository");

            _repository = repository;

            InitializeComponent();
            Localize();

            var inputs = new IUserInputSource[]
            {
                _pushToInput = new RadioButtonGroupInputSource <PushTo>(
                    new[]
                {
                    Tuple.Create(_radRemote, gitter.Git.Gui.Interfaces.PushTo.Remote),
                    Tuple.Create(_radUrl, gitter.Git.Gui.Interfaces.PushTo.Url),
                }),
                _remoteInput         = PickerInputSource.Create(_remotePicker),
                _urlInput            = new TextBoxInputSource(_txtUrl),
                _referencesInput     = new BranchesInputSource(_lstReferences),
                _forceOverwriteInput = new CheckBoxInputSource(_chkForceOverwriteBranches),
                _thinPackInput       = new CheckBoxInputSource(_chkUseThinPack),
                _sendTagsInput       = new CheckBoxInputSource(_chkSendTags),
            };

            _errorNotifier = new UserInputErrorNotifier(NotificationService, inputs);


            _picWarning.Image = CachedResources.Bitmaps["ImgWarning"];

            _lstReferences.LoadData(_repository, ReferenceType.LocalBranch, false, false, null);
            _lstReferences.EnableCheckboxes();

            if (!_repository.Head.IsDetached)
            {
                foreach (BranchListItem item in _lstReferences.Items)
                {
                    if (item.DataContext == _repository.Head.Pointer)
                    {
                        item.CheckedState = CheckedState.Checked;
                        break;
                    }
                }
            }

            _remotePicker.LoadData(repository);
            Remote remote = null;

            lock (repository.Remotes.SyncRoot)
            {
                foreach (var r in repository.Remotes)
                {
                    remote = r;
                    break;
                }
            }
            _remotePicker.SelectedValue = remote;

            _controller = new PushController(repository)
            {
                View = this
            };
        }