/// <summary> /// Returns a list of consolidated actions from two different action lists. /// </summary> /// <param name="actions">The first set of actions.</param> /// <param name="actions2">The second set of actions.</param> /// <param name="defaultEmptyCategory">The default empty category.</param> /// <param name="actionsDisplayFilter">The actions display filter.</param> /// <param name="flagFirstSecondaryActionAsNewGroup">Defines whether the first secondary action is to be flagged as a new group.</param> /// <param name="actions2DisplayFilter">Display filter for the secondary set of actions</param> /// <param name="viewModel">Optional view model object</param> /// <returns>ObservableCollection<IViewAction>.</returns> public virtual ObservableCollection <IViewAction> GetConsolidatedActions(IHaveActions actions, IHaveActions actions2 = null, string defaultEmptyCategory = "", ViewActionDisplayMode actionsDisplayFilter = ViewActionDisplayMode.All, bool flagFirstSecondaryActionAsNewGroup = false, ViewActionDisplayMode actions2DisplayFilter = ViewActionDisplayMode.All, object viewModel = null) => ViewActionHelper.GetConsolidatedActions(actions, actions2, defaultEmptyCategory, actionsDisplayFilter, flagFirstSecondaryActionAsNewGroup, actions2DisplayFilter);
/// <summary> /// Inspects up to 2 IHaveActions interfaces and returns a consolidated list of actions for both interfaces /// </summary> /// <param name="actions">The first interface containing actions</param> /// <param name="actions2">The second interface containing actions</param> /// <param name="defaultEmptyCategory">The default empty category.</param> /// <param name="actionsDisplayFilter">Indicates which actions out of the first actions collection shall be included.</param> /// <param name="flagFirstSecondaryActionAsNewGroup">Indicates whether the first action from the second actions collection should be flagged as a new group</param> /// <param name="actions2DisplayFilter">Indicates which actions out of the second actions collection shall be included.</param> /// <returns>ObservableCollection{IViewAction}.</returns> public static ObservableCollection<IViewAction> GetConsolidatedActions(IHaveActions actions, IHaveActions actions2 = null, string defaultEmptyCategory = "", ViewActionDisplayMode actionsDisplayFilter = ViewActionDisplayMode.All, bool flagFirstSecondaryActionAsNewGroup = false, ViewActionDisplayMode actions2DisplayFilter = ViewActionDisplayMode.All) { var actionList = new ObservableCollection<IViewAction>(); if (actions == null || actions.Actions == null) return actionList; if (actionsDisplayFilter != ViewActionDisplayMode.None) { var list = actions.Actions.OrderBy(a => a.FirstCategoryId).ToList(); switch (actionsDisplayFilter) { case ViewActionDisplayMode.BelowNormalSignificanceAndHigher: list = list.Where(a => a.Significance == ViewActionSignificance.BelowNormal || a.Significance == ViewActionSignificance.Normal || a.Significance == ViewActionSignificance.AboveNormal || a.Significance == ViewActionSignificance.Highest).ToList(); break; case ViewActionDisplayMode.NormalSignificanceAndHigher: list = list.Where(a => a.Significance == ViewActionSignificance.Normal || a.Significance == ViewActionSignificance.AboveNormal || a.Significance == ViewActionSignificance.Highest).ToList(); break; case ViewActionDisplayMode.AboveNormalSignificanceAndHigher: list = list.Where(a => a.Significance == ViewActionSignificance.AboveNormal || a.Significance == ViewActionSignificance.Highest).ToList(); break; case ViewActionDisplayMode.HighestSignificance: list = list.Where(a => a.Significance == ViewActionSignificance.Highest).ToList(); break; } foreach (var action in list) actionList.Add(action); } if (actions2 != null && actions2.Actions.Count > 0 && actions2DisplayFilter != ViewActionDisplayMode.None) { var actionsCount = 0; var list = actions2.Actions.ToList(); switch (actions2DisplayFilter) { case ViewActionDisplayMode.BelowNormalSignificanceAndHigher: list = list.Where(a => a.Significance == ViewActionSignificance.BelowNormal || a.Significance == ViewActionSignificance.Normal || a.Significance == ViewActionSignificance.AboveNormal || a.Significance == ViewActionSignificance.Highest).ToList(); break; case ViewActionDisplayMode.NormalSignificanceAndHigher: list = list.Where(a => a.Significance == ViewActionSignificance.Normal || a.Significance == ViewActionSignificance.AboveNormal || a.Significance == ViewActionSignificance.Highest).ToList(); break; case ViewActionDisplayMode.AboveNormalSignificanceAndHigher: list = list.Where(a => a.Significance == ViewActionSignificance.AboveNormal || a.Significance == ViewActionSignificance.Highest).ToList(); break; case ViewActionDisplayMode.HighestSignificance: list = list.Where(a => a.Significance == ViewActionSignificance.Highest).ToList(); break; } foreach (var action in list) { if (actionsCount == 0 && flagFirstSecondaryActionAsNewGroup) action.BeginGroup = true; if (action.Categories.Count == 1 && string.IsNullOrEmpty(action.Categories[0].Caption)) action.Categories[0].Caption = defaultEmptyCategory; if (action.Categories.Count == 1 && string.IsNullOrEmpty(action.Categories[0].Id)) action.Categories[0].Id = defaultEmptyCategory.Replace(" ", ""); if (action.Categories.Count == 0) action.Categories.Add(new ViewActionCategory(defaultEmptyCategory.Replace(" ", ""), defaultEmptyCategory)); var viewAction = action as ViewAction; if (viewAction != null) viewAction.IsLocalAction = true; actionList.Add(action); actionsCount++; } } return actionList; }
/// <summary> /// Inspects up to 2 IHaveActions interfaces and returns a consolidated list of actions for both interfaces /// </summary> /// <param name="actions">The first interface containing actions</param> /// <param name="actions2">The second interface containing actions</param> /// <param name="defaultEmptyCategory">The default empty category.</param> /// <param name="actionsDisplayFilter">Indicates which actions out of the first actions collection shall be included.</param> /// <param name="flagFirstSecondaryActionAsNewGroup">Indicates whether the first action from the second actions collection should be flagged as a new group</param> /// <param name="actions2DisplayFilter">Indicates which actions out of the second actions collection shall be included.</param> /// <returns>ObservableCollection{IViewAction}.</returns> public static ObservableCollection <IViewAction> GetConsolidatedActions(IHaveActions actions, IHaveActions actions2 = null, string defaultEmptyCategory = "", ViewActionDisplayMode actionsDisplayFilter = ViewActionDisplayMode.All, bool flagFirstSecondaryActionAsNewGroup = false, ViewActionDisplayMode actions2DisplayFilter = ViewActionDisplayMode.All) { var actionList = new ObservableCollection <IViewAction>(); if (actions == null || actions.Actions == null) { return(actionList); } if (actionsDisplayFilter != ViewActionDisplayMode.None) { var list = actions.Actions.OrderBy(a => a.FirstCategoryId).ToList(); switch (actionsDisplayFilter) { case ViewActionDisplayMode.BelowNormalSignificanceAndHigher: list = list.Where(a => a.Significance == ViewActionSignificance.BelowNormal || a.Significance == ViewActionSignificance.Normal || a.Significance == ViewActionSignificance.AboveNormal || a.Significance == ViewActionSignificance.Highest).ToList(); break; case ViewActionDisplayMode.NormalSignificanceAndHigher: list = list.Where(a => a.Significance == ViewActionSignificance.Normal || a.Significance == ViewActionSignificance.AboveNormal || a.Significance == ViewActionSignificance.Highest).ToList(); break; case ViewActionDisplayMode.AboveNormalSignificanceAndHigher: list = list.Where(a => a.Significance == ViewActionSignificance.AboveNormal || a.Significance == ViewActionSignificance.Highest).ToList(); break; case ViewActionDisplayMode.HighestSignificance: list = list.Where(a => a.Significance == ViewActionSignificance.Highest).ToList(); break; } foreach (var action in list) { actionList.Add(action); } } if (actions2 != null && actions2.Actions.Count > 0 && actions2DisplayFilter != ViewActionDisplayMode.None) { var actionsCount = 0; var list = actions2.Actions.ToList(); switch (actions2DisplayFilter) { case ViewActionDisplayMode.BelowNormalSignificanceAndHigher: list = list.Where(a => a.Significance == ViewActionSignificance.BelowNormal || a.Significance == ViewActionSignificance.Normal || a.Significance == ViewActionSignificance.AboveNormal || a.Significance == ViewActionSignificance.Highest).ToList(); break; case ViewActionDisplayMode.NormalSignificanceAndHigher: list = list.Where(a => a.Significance == ViewActionSignificance.Normal || a.Significance == ViewActionSignificance.AboveNormal || a.Significance == ViewActionSignificance.Highest).ToList(); break; case ViewActionDisplayMode.AboveNormalSignificanceAndHigher: list = list.Where(a => a.Significance == ViewActionSignificance.AboveNormal || a.Significance == ViewActionSignificance.Highest).ToList(); break; case ViewActionDisplayMode.HighestSignificance: list = list.Where(a => a.Significance == ViewActionSignificance.Highest).ToList(); break; } foreach (var action in list) { if (actionsCount == 0 && flagFirstSecondaryActionAsNewGroup) { action.BeginGroup = true; } if (action.Categories.Count == 1 && string.IsNullOrEmpty(action.Categories[0].Caption)) { action.Categories[0].Caption = defaultEmptyCategory; } if (action.Categories.Count == 1 && string.IsNullOrEmpty(action.Categories[0].Id)) { action.Categories[0].Id = defaultEmptyCategory.Replace(" ", ""); } if (action.Categories.Count == 0) { action.Categories.Add(new ViewActionCategory(defaultEmptyCategory.Replace(" ", ""), defaultEmptyCategory)); } var viewAction = action as ViewAction; if (viewAction != null) { viewAction.IsLocalAction = true; } actionList.Add(action); actionsCount++; } } return(actionList); }