public static IBaseAction CopyActionItems(IdeBaseItem action, IdeCollection <IdeBaseItem> source) { IBaseAction ret = null; if (action is ActionItemModel) { ret = new ActionItemModel((ActionItemModel)action, source); } else if (action is ActionSubmenuItemModel) { ret = new ActionSubmenuItemModel((ActionSubmenuItemModel)action, source); } else if (action is ActionSeparatorItemModel) { ret = new ActionSeparatorItemModel((ActionSeparatorItemModel)action, source); } return(ret); }
public static IBaseAction CreateActionItem(IGroupAction action, IdeCollection <IdeBaseItem> source) { IBaseAction ret = null; if (action is GroupAction) { ret = new ActionItemModel((GroupAction)action, source); } else if (action is GroupActionSubmenu) { ret = new ActionSubmenuItemModel((GroupActionSubmenu)action, source); } else if (action is GroupActionSeparator) { ret = new ActionSeparatorItemModel((GroupActionSeparator)action, source); } return(ret); }
public ActionSubmenuItemModel(ActionSubmenuItemModel a) { Action = new GroupActionGroup { HeaderExecute = ((GroupActionGroup)a.Action).HeaderExecute, IsGroup = ((GroupActionGroup)a.Action).IsGroup, Name = ((GroupActionGroup)a.Action).Name, ShowExecute = ((GroupActionGroup)a.Action).ShowExecute }; Items = new ObservableCollection <IBaseAction>(a.Items.Select(x => ViewModelLocator.ActionViewModel.CopyActionItems(x))); ((GroupActionGroup)Action).Children = Items.Select(x => x.Action).ToList(); Items.CollectionChanged += (b, c) => { ((GroupActionGroup)Action).Children = Items.Select(x => x.Action).ToList(); }; Parent = a.Parent; ItemSource = a.ItemSource; }
public ActionSubmenuItemModel(ActionSubmenuItemModel a, IdeCollection <IdeBaseItem> source) : base(source) //copy item { _action = new GroupActionSubmenu { HeaderExecute = a._action.HeaderExecute, IsGroup = a.IsGroup, Name = a.Name, ShowExecute = a._action.ShowExecute }; Items = new IdeCollection <IdeBaseItem>(this); Items.CollectionChanged += (b, c) => { ((GroupActionSubmenu)_action).Children = Items.Select(x => ((ActionSubmenuItemModel)x)._action); }; foreach (ActionSubmenuItemModel action in a.Items) { Items.Add(CopyActionItems(action, Items)); } ; }