void CreateManagers(ActionPanelModel localAM, ActionPanelModel remoteLeftAM, ActionPanelModel remoteRightAM) { ActionsManager = new ActionsManager(); ActionsManager.LocalRepoPanel = localAM; ActionsManager.RemoteRepoLeftGroupPanel = remoteLeftAM; ActionsManager.RemoteRepoRightGroupPanel = remoteRightAM; TabManager = new TabManager(Data.MainWindowModel, localAM); TabManager.CommitRequested += Commit; TabManager.AbortRequested += AbortMerge; TabManager.CanvasMouseDown += OnMouseDown; TabManager.CanvasMouseUp += OnMouseUp; SubscribeActionsManager(); CommitManager = CommitManager.GetInstance(); RepositoryManager = new RepositoryManager(_dataFolder); UserManager = new UserManager(_dataFolder); StashingManager = new StashingManager(_dataFolder); RemoteManager = new RemoteManager(_dataFolder); }
Program() { ActionPanelModel localAM = new ActionPanelModel(); MainWindowViewModel mwvm = InitializeMainWindow(); ActionPanelModel remoteLeftAM = MainWindowModel.RemoteLeftPanelModel; ActionPanelModel remoteRightAM = MainWindowModel.RemoteRightPanelModel; CreateManagers(localAM, remoteLeftAM, remoteRightAM); InitializeEventHandlers(); InitializeState(); LibGitService.GetInstance().RepositoryChanged += CheckConflicts; LibGitService.GetInstance().RepositoryChanged += () => Show(null); LibGitService.GetInstance().RepositoryChanged += () => ActionsManager.OnWorkTreeChanged(LibGitService.GetInstance().HasChanges); StashMenuViewModel wm = new StashMenuViewModel(StashingManager.StashMenu); mwvm.StashMenu = wm; RepositoryManager.Opened += m => MainWindowModel.RepoPath = m.RepositoryPath; MainWindowModel.RecentRepos = RepositoryManager.RecentRepos; RepositoryManager.Closed += m => { MainWindowModel.RepoPath = ""; MainWindowModel.RecentRepos = RepositoryManager.RecentRepos; RemoteManager.Reset(); }; RepositoryManager.RecentRepositoryChanged += () => MainWindowModel.RecentRepos = RepositoryManager.RecentRepos; UserManager.UsersChanged += () => MainWindowModel.OnUsersChanged(); }