public ActionMenuItem(IssueItemView item, IIssueAction action) : base(action.Name) { _issue = item; _action = action; ToolTipText = String.Format("{0} and assign to {1}.", _action.Name, _issue.ReportedBy.Name); base.Click += new EventHandler(DoClick); }
bool MatchesCurrentFilter(IssueItemView item) { IIssueUser byAssignee; if (_assignedFilter.TryGetSelection(out byAssignee) && byAssignee.Id != AllUsersFilter.Instance.Id) { if (item.AssignedTo.Id != byAssignee.Id) return false; } IIssueState byStatus; if (_statusFilter.TryGetSelection(out byStatus) && byStatus.Id != AllStatusFilter.Instance.Id) { if (item.CurrentState.Id != byStatus.Id) return false; } if (!String.IsNullOrEmpty(_textFilter)) { foreach (string part in _textFilter.Split(' ', '\t')) { string phrase = part.Trim(); if (String.IsNullOrEmpty(phrase)) continue; if (item.Name.IndexOf(phrase, StringComparison.InvariantCultureIgnoreCase) < 0 && item.DisplayId.IndexOf(phrase, StringComparison.InvariantCultureIgnoreCase) < 0 && item.FullDescription.IndexOf(phrase, StringComparison.InvariantCultureIgnoreCase) < 0 && item.CurrentState.Name.IndexOf(phrase, StringComparison.InvariantCultureIgnoreCase) < 0 && item.AssignedTo.Name.IndexOf(phrase, StringComparison.InvariantCultureIgnoreCase) < 0 && item.ReportedBy.Name.IndexOf(phrase, StringComparison.InvariantCultureIgnoreCase) < 0) return false; } } return true; }
public void Refresh(bool applyLocal) { IIssueFilter filter; List<IssueItemView> found = new List<IssueItemView>(); Dictionary<string, IIssueUser> distinct = new Dictionary<string, IIssueUser>(); Dictionary<string, IIssueUser> assigned = new Dictionary<string, IIssueUser>(); assigned[AllUsersFilter.Instance.Id] = AllUsersFilter.Instance; Dictionary<string, IIssueState> statuses = new Dictionary<string, IIssueState>(); statuses[AllStatusFilter.Instance.Id] = AllStatusFilter.Instance; if (_filters.TryGetSelection(out filter)) { IIssue[] items; if (filter is IIssueFilterWithSearch) items = ((IIssueFilterWithSearch)filter).GetIssues(_textFilter, 0, 50); else items = filter.GetIssues(0, 50); foreach (IIssue issue in items) { IssueItemView item = new IssueItemView(this, issue); found.Add(item); distinct[item.AssignedTo.Id] = item.AssignedTo; distinct[item.ReportedBy.Id] = item.ReportedBy; assigned[item.AssignedTo.Id] = item.AssignedTo; statuses[item.CurrentState.Id] = item.CurrentState; } } _found = found.ToArray(); _assignees.AddRange(distinct.Values); _assignedFilter.ReplaceContents(assigned.Values); if (_assignedFilter.SelectedItem == null) { _assignedFilter.SelectedItem = AllUsersFilter.Instance; if (_assignedFilter.IsSelectionDirty) OnPropertyChanged("SelectedAssignmentFilter"); } _statusFilter.ReplaceContents(statuses.Values); if (_statusFilter.SelectedItem == null) { _statusFilter.SelectedItem = AllStatusFilter.Instance; if (_statusFilter.IsSelectionDirty) OnPropertyChanged("SelectedStatusFilter"); } if(applyLocal) LocalFilterChanged(); }