public void CloseRepository() { if (_repositoryGui != null) { SaveGuiView(_repositoryGui); _repositoryGui.DetachFromEnvironment(this); var disp = _repositoryGui as IDisposable; if (disp != null) { disp.Dispose(); } _repositoryGui = null; } if (_currentProvider != null) { DetachRepository(); _currentProvider = null; } _repositoryExplorerFactory.RootItem.RepositoryDisplayName = null; foreach (var gui in _additionalGui) { gui.DetachFromEnvironment(this); var disposable = gui as IDisposable; if (disposable != null) { disposable.Dispose(); } } _additionalGui.Clear(); _activeIssueTrackerProviders.Clear(); Text = Application.ProductName; }
private void SaveGuiView(IRepositoryGuiProvider gui) { gui.SaveTo(_configurationService.GetSectionForProviderGui(_currentProvider)); }
public bool OpenRepository(string path, IRepositoryProvider repositoryProvider) { if (_currentProvider != repositoryProvider) { CloseRepository(); _currentProvider = repositoryProvider; } else { DetachRepository(); foreach (var gui in _additionalGui) { gui.DetachFromEnvironment(this); } _additionalGui.Clear(); _activeIssueTrackerProviders.Clear(); } try { _repository = null; _repository = ProgressForm.MonitorTaskAsModalWindow( this, Resources.StrLoadingRepository, (p, c) => _currentProvider.OpenRepositoryAsync(path, p, c)); } catch (OperationCanceledException) { return(false); } catch (Exception exc) { if (exc.IsCritical()) { throw; } GitterApplication.MessageBoxService.Show( this, exc.Message, Resources.ErrFailedToOpenRepository, MessageBoxButton.Close, MessageBoxIcon.Error); } if (_repository == null) { return(false); } _repository.Deleted += OnRepositoryDeleted; if (_repositoryGui != null) { _repositoryGui.Repository = _repository; } else { _repositoryGui = _currentProvider.GuiProvider; _repositoryGui.Repository = _repository; LoadGuiView(_repositoryGui); _repositoryGui.AttachToEnvironment(this); } _repositoryGui.ActivateDefaultView(); Text = _repository.WorkingDirectory + " - " + Application.ProductName; repositoryProvider.OnRepositoryLoaded(_repository); OpenIssueTrackers(); return(true); }
private void LoadGuiView(IRepositoryGuiProvider gui) { gui.LoadFrom(_configurationService.GetSectionForProviderGui(_currentProvider)); }