private void OnViewSelectionChanged(object sender, EventArgs e) { LoadWorkItems(); ViewSelectionViewModel.ShowViewOptions = false; var defaultProfile = Repository.Instance.ProfileProvider.GetDefaultProfile(); try { DetachFromProfileProvider(); if (ViewSelectionViewModel.IsMergeCandidatesSelected()) { var result = ViewSelectionViewModel.GetMergeSourceTargetBranches(); defaultProfile.WIQueryName = null; defaultProfile.WISourceBranch = result.SourceBranch.Name; defaultProfile.WITargetBranch = result.TargetBranch.Name; defaultProfile.WISourcePathFilter = result.PathFilter; } else if (ViewSelectionViewModel.IsQuerySelected()) { var query = ViewSelectionViewModel.GetSelectedQuery(); defaultProfile.WISourceBranch = null; defaultProfile.WITargetBranch = null; defaultProfile.WISourcePathFilter = null; defaultProfile.WIQueryName = query.QualifiedTitle; } } finally { AttachToProfileProvider(); } }
void Merge(object o) { try { var candidates = FilteredChangesets.Where(cs => cs.IsSelected).Select(cs => cs.TfsChangeset); if (!candidates.Any()) { var mbvm = new MessageBoxViewModel("Perform merge", "No changesets are currently selected.", MessageBoxViewModel.MessageBoxButtons.OK); Repository.Instance.ViewManager.ShowModal(mbvm); } else { var mergeViewModel = new PrepareMergeViewModel(TfsItemCache, candidates); var result = ViewSelectionViewModel.GetMergeSourceTargetBranches(); mergeViewModel.MergeSource = result != null ? result.SourceBranch : null; mergeViewModel.MergeTarget = result != null ? result.TargetBranch : null; mergeViewModel.PathFilter = result != null ? result.PathFilter : null; mergeViewModel.SetDefaults(); if (Repository.Instance.Settings.FetchSettings <bool>(Constants.Settings.PerformNonModalMergeKey)) { vMergePackage.OpenMergeView(mergeViewModel); } else { Repository.Instance.ViewManager.ShowModal(mergeViewModel, "Modal"); } } } catch (Exception ex) { SimpleLogger.Log(ex, true); } }
public ViewSelectionWindow(IEnumerable <LogLine> logLines) { InitializeComponent(); DataContext = new ViewSelectionViewModel(); ViewModel.LogLines = logLines; Settings.SettingsChanged += ViewModel.SettingsChanged; }
void Merge(object o) { try { var candidates = WorkItems.Where(wi => wi.IsSelected).Select(wi => wi.TfsWorkItem); if (!candidates.Any()) { var mbvm = new MessageBoxViewModel("Perform merge", "No work items are currently selected.", MessageBoxViewModel.MessageBoxButtons.OK); Repository.Instance.ViewManager.ShowModal(mbvm); } else if (!candidates.Any(candidate => candidate.RelatedChangesetCount > 0)) { var mbvm = new MessageBoxViewModel("Perform merge", "The selected work items don't have any linked changesets.", MessageBoxViewModel.MessageBoxButtons.OK); Repository.Instance.ViewManager.ShowModal(mbvm); } else { PrepareMergeViewModel mergeViewModel; try { mergeViewModel = new PrepareMergeViewModel(TfsItemCache, WorkItems.Where(wi => wi.IsSelected).Select(wi => wi.TfsWorkItem)); } catch (ArgumentException) { var mbvm = new MessageBoxViewModel( "Perform merge", String.Format("The selected work items don't have any linked changesets in the current team project\r\n({0}).", Repository.Instance.TfsBridgeProvider.ActiveTeamProject.Name), MessageBoxViewModel.MessageBoxButtons.OK); Repository.Instance.ViewManager.ShowModal(mbvm); mergeViewModel = null; } if (mergeViewModel != null) { var result = ViewSelectionViewModel.GetMergeSourceTargetBranches(); mergeViewModel.MergeSource = result != null ? result.SourceBranch : null; mergeViewModel.MergeTarget = result != null ? result.TargetBranch : null; mergeViewModel.PathFilter = result != null ? result.PathFilter : null; mergeViewModel.SetDefaults(); if (Repository.Instance.Settings.FetchSettings <bool>(Constants.Settings.PerformNonModalMergeKey)) { vMergePackage.OpenMergeView(mergeViewModel); } else { Repository.Instance.ViewManager.ShowModal(mergeViewModel, "Modal"); } } } } catch (Exception) { } }
public ChangesetViewModel(TfsItemCache tfsItemCache) : base("Changeset", typeof(ChangesetViewModel)) { Repository.Instance.VMergeUIProvider.MergeWindowVisibilityChanged += (o, a) => Enabled = !Repository.Instance.VMergeUIProvider.IsMergeWindowVisible(); Enabled = !Repository.Instance.VMergeUIProvider.IsMergeWindowVisible(); _applyFilterTimer = new DispatcherTimer(); _applyFilterTimer.Interval = new TimeSpan(0, 0, 0, 0, 350); _applyFilterTimer.Tick += (o, a) => PerformApplyFilter(); TfsItemCache = tfsItemCache; ViewSelectionViewModel = new ViewSelectionViewModel(); Changesets = new ObservableCollection <TfsChangesetWrapper>(); FilteredChangesets = new ObservableCollection <TfsChangesetWrapper>(); _changesetsToResetOnCancel = new List <Tuple <TfsChangesetWrapper, bool> >(); ChangesetList = new FieldMapperGridViewModel <TfsChangesetWrapper>( new ChangesetPropertyAccessor(), FilteredChangesets, Columns); ChangesetList.ColumnSettingsChanged += (o, a) => DataWasModified(); ViewSelectionViewModel.ViewSelectionChanged += OnViewSelectionChanged; ItemSelectedCommand = new RelayCommand((o) => ItemSelected(o), (o) => Repository.Instance.TfsBridgeProvider.TfsTeamProjectCollection != null); ShowWorkItemViewCommand = new RelayCommand((o) => ShowWorkItemView(), (o) => Repository.Instance.TfsBridgeProvider.TfsTeamProjectCollection != null); SelectMarkedItemsCommand = new RelayCommand((o) => SelectMarkedItems(), (o) => Repository.Instance.TfsBridgeProvider.TfsTeamProjectCollection != null); ViewChangesetCommand = new RelayCommand((o) => ViewChangeset(o), (o) => Repository.Instance.TfsBridgeProvider.TfsTeamProjectCollection != null); TrackChangesetCommand = new RelayCommand((o) => TrackChangeset(o), (o) => Repository.Instance.TfsBridgeProvider.TfsTeamProjectCollection != null); MergeCommand = new RelayCommand((o) => Merge(o), (o) => Repository.Instance.TfsBridgeProvider.TfsTeamProjectCollection != null); ShowMergeViewCommand = new RelayCommand((o) => ShowMergeView(), (o) => Repository.Instance.TfsBridgeProvider.TfsTeamProjectCollection != null); SelectAllCommand = new RelayCommand((o) => SelectAll(), (o) => Repository.Instance.TfsBridgeProvider.TfsTeamProjectCollection != null); SaveMergeProfileCommand = new RelayCommand((o) => SaveMergeProfile(), (o) => Repository.Instance.TfsBridgeProvider.TfsTeamProjectCollection != null); RefreshCommand = new RelayCommand((o) => Refresh(), (o) => Repository.Instance.TfsBridgeProvider.TfsTeamProjectCollection != null); ShowLogFileWindowCommand = new RelayCommand((o) => ShowLogFileWindow(o), (o) => Repository.Instance.TfsBridgeProvider.TfsTeamProjectCollection != null); AttachToChangesetCache(); AttachToProfileProvider(); Repository.Instance.TfsBridgeProvider.ActiveProjectSelected += (o, a) => { Changesets.Clear(); FilteredChangesets.Clear(); if (Repository.Instance.TfsBridgeProvider.ActiveTeamProject != null) { Repository.Instance.BackgroundTaskManager.DelayedPost(() => { ProfileProvider_DefaultProfileChanged(null, null); return(true); }); } }; }
private void TfsItemCache_WorkItemHasBeenMerged(object sender, WorkItemHasBeenMergedEventArgs e) { if (ViewSelectionViewModel.IsMergeCandidatesSelected()) { var original = WorkItemList.OriginalElements.Where(changeset => changeset == e.WorkItem).FirstOrDefault(); if (original != null) { WorkItemList.OriginalElements.Remove(original); } var source = WorkItemList.Elements.Where(changeset => changeset.InnerItem == e.WorkItem).FirstOrDefault(); if (source != null) { WorkItemList.Elements.Remove(source); } } }
public WorkItemViewModel(TfsItemCache tfsItemCache) : base("Work Item", typeof(WorkItemViewModel)) { try { Repository.Instance.VMergeUIProvider.MergeWindowVisibilityChanged += (o, a) => Enabled = !Repository.Instance.VMergeUIProvider.IsMergeWindowVisible(); Enabled = !Repository.Instance.VMergeUIProvider.IsMergeWindowVisible(); TfsItemCache = tfsItemCache; ViewSelectionViewModel = new ViewSelectionViewModel(); WorkItems = new ObservableCollection <TfsWorkItemWrapper>(); WorkItemList = new FieldMapperGridViewModel <TfsWorkItemWrapper>( new WorkItemPropertyAccessor(), WorkItems, Columns); WorkItemList.ColumnSettingsChanged += (o, a) => DataWasModified(); ItemSelectedCommand = new RelayCommand((o) => ItemSelected(o)); ShowChangesetViewCommand = new RelayCommand((o) => ShowChangesetView()); SelectMarkedItemsCommand = new RelayCommand((o) => SelectMarkedItems()); ViewWorkItemCommand = new RelayCommand((o) => ViewWorkItem(o)); TrackWorkItemCommand = new RelayCommand((o) => TrackWorkItem(o)); MergeCommand = new RelayCommand((o) => Merge(o)); ShowMergeViewCommand = new RelayCommand((o) => ShowMergeView()); RefreshCommand = new RelayCommand((o) => Refresh(), (o) => Repository.Instance.TfsBridgeProvider.TfsTeamProjectCollection != null); ViewSelectionViewModel.ViewSelectionChanged += OnViewSelectionChanged; AttachToWorkItemCache(); AttachToProfileProvider(); Repository.Instance.TfsBridgeProvider.ActiveProjectSelected += (o, a) => { WorkItems.Clear(); if (Repository.Instance.TfsBridgeProvider.ActiveTeamProject != null) { Repository.Instance.BackgroundTaskManager.DelayedPost(() => { ProfileProvider_DefaultProfileChanged(null, null); return(true); }); } }; } catch (Exception ex) { SimpleLogger.Log(ex, false, false); throw; } }
private void LoadWorkItems() { if (Repository.Instance.TfsConnectionInfo.Uri == null) { ResetWorkItems(); return; } if (ViewSelectionViewModel.IsMergeCandidatesSelected()) { var result = ViewSelectionViewModel.GetMergeSourceTargetBranches(); ResetWorkItems(); Repository.Instance.BackgroundTaskManager.Start( Constants.Tasks.LoadWorkItemsTaskKey, ItemsLoading, (task) => { LoadWorkItems(result.SourceBranch, result.TargetBranch, result.PathFilter, task); }); } else if (ViewSelectionViewModel.IsQuerySelected()) { var query = ViewSelectionViewModel.GetSelectedQuery(); ResetWorkItems(); Repository.Instance.BackgroundTaskManager.Start( Constants.Tasks.LoadWorkItemsTaskKey, ItemsLoading, (task) => { LoadWorkItems(query, task); }); } else { ItemsLoading.IsLoading = false; } }