Exemplo n.º 1
0
        public static void AttachListener(this IRepositoryManagerListener listener,
                                          IRepositoryManager repositoryManager, RepositoryManagerEvents managerEvents = null, bool trace = true)
        {
            var logger = trace ? Logging.GetLogger <IRepositoryManagerListener>() : null;

            repositoryManager.OnIsBusyChanged += isBusy => {
                logger?.Trace("OnIsBusyChanged: {0}", isBusy);
                listener.OnIsBusyChanged(isBusy);
                if (isBusy)
                {
                    managerEvents?.OnIsBusy.Set();
                }
                else
                {
                    managerEvents?.OnIsNotBusy.Set();
                }
            };

            repositoryManager.OnCurrentBranchAndRemoteUpdated += (configBranch, configRemote) => {
                logger?.Trace("OnCurrentBranchAndRemoteUpdated");
                listener.OnCurrentBranchAndRemoteUpdated(configBranch, configRemote);
                managerEvents?.OnCurrentBranchAndRemoteUpdated.Set();
            };

            repositoryManager.OnLocalBranchListUpdated += branchList => {
                logger?.Trace("OnLocalBranchListUpdated");
                listener.OnLocalBranchListUpdated(branchList);
                managerEvents?.OnLocalBranchListUpdated.Set();
            };

            repositoryManager.OnRemoteBranchListUpdated += (remotesList, branchList) => {
                logger?.Trace("OnRemoteBranchListUpdated");
                listener.OnRemoteBranchListUpdated(remotesList, branchList);
                managerEvents?.OnRemoteBranchListUpdated.Set();
            };

            repositoryManager.OnLocalBranchUpdated += name => {
                logger?.Trace("OnLocalBranchUpdated Name:{0}", name);
                listener.OnLocalBranchUpdated(name);
                managerEvents?.OnLocalBranchUpdated.Set();
            };

            repositoryManager.OnLocalBranchAdded += name => {
                logger?.Trace("OnLocalBranchAdded Name:{0}", name);
                listener.OnLocalBranchAdded(name);
                managerEvents?.OnLocalBranchAdded.Set();
            };

            repositoryManager.OnLocalBranchRemoved += name => {
                logger?.Trace("OnLocalBranchRemoved Name:{0}", name);
                listener.OnLocalBranchRemoved(name);
                managerEvents?.OnLocalBranchRemoved.Set();
            };

            repositoryManager.OnRemoteBranchAdded += (origin, name) => {
                logger?.Trace("OnRemoteBranchAdded Origin:{0} Name:{1}", origin, name);
                listener.OnRemoteBranchAdded(origin, name);
                managerEvents?.OnRemoteBranchAdded.Set();
            };

            repositoryManager.OnRemoteBranchRemoved += (origin, name) => {
                logger?.Trace("OnRemoteBranchRemoved Origin:{0} Name:{1}", origin, name);
                listener.OnRemoteBranchRemoved(origin, name);
                managerEvents?.OnRemoteBranchRemoved.Set();
            };
        }