/* --------------------------------------------------------------------- */ /// /// Add /// /// <summary> /// PresetMenu を解析し、必要な ContextMenu オブジェクトを追加します。 /// </summary> /// /// <param name="src">変換元オブジェクト</param> /// <param name="category">メニューのカテゴリ</param> /// <param name="cmp">変換対象となるメニュー一覧</param> /// <param name="dest">結果を格納するコレクション</param> /// /* --------------------------------------------------------------------- */ private static void Add(PresetMenu src, PresetMenu category, IDictionary <PresetMenu, ContextMenu> cmp, ICollection <ContextMenu> dest) { if (!src.HasFlag(category)) { return; } var root = ToContextMenu(category); foreach (var kv in cmp) { if (src.HasFlag(kv.Key)) { root.Children.Add(kv.Value); } } if (root.Children.Count > 0) { dest.Add(root); } }
/* --------------------------------------------------------------------- */ /// /// Find /// /// <summary> /// メニューに対応する値を取得します。 /// </summary> /// /* --------------------------------------------------------------------- */ private static T Find <T>(PresetMenu src, IDictionary <PresetMenu, T> cmp) => cmp.FirstOrDefault(e => src.HasFlag(e.Key)).Value;