private MenuItem CreateCardMenuItem(IGroupAction baseAction) { var item = new MenuItem { Header = baseAction.Name }; var actionGroupDef = baseAction as GroupActionGroup; if (actionGroupDef != null) { foreach (MenuItem subItem in actionGroupDef.Children.Select(CreateCardMenuItem)) { item.Items.Add(subItem); } return(item); } var action = baseAction as GroupAction; item.Tag = action; if (action != null) { item.InputGestureText = action.Shortcut; if (action.DefaultAction) { item.FontWeight = FontWeights.Bold; _defaultCardAction = action; } } item.Click += CardActionClicked; return(item); }
public IBaseAction CreateActionItem(IGroupAction a, ObservableCollection <IBaseAction> p) { IBaseAction action = null; if (a is GroupAction) { action = new ActionItemModel((GroupAction)a) { Parent = p } } ; else if (a is GroupActionGroup) { action = new ActionSubmenuItemModel((GroupActionGroup)a) { Parent = p } } ; else if (a is GroupActionSeparator) { action = new ActionSeparatorItemModel((GroupActionSeparator)a) { Parent = p } } ; return(action); }
public static GroupAction AsAction(this IGroupAction action) { if (action is GroupAction) { return(action as GroupAction); } return(null); }
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); }
private string CallActionNameExecute(IGroupAction baseAction, IEnumerable <Card> selection) { var taskCompletionSource = new TaskCompletionSource <string>(); if (baseAction.IsGroup) { ScriptEngine.ExecuteOnGroup(baseAction.HeaderExecute, @group, position, (ExecutionResult result) => { string ret = result.ReturnValue as string; taskCompletionSource.SetResult(ret); }); } else { ScriptEngine.ExecuteOnBatch(baseAction.HeaderExecute, selection, position, (ExecutionResult result) => { string ret = result.ReturnValue as string; taskCompletionSource.SetResult(ret); }); } return(taskCompletionSource.Task.Result); }
//private Task<bool> CallActionShowIf(string function, IEnumerable<Card> selection) private bool CallActionConditionalExecute(IGroupAction baseAction, IEnumerable <Card> selection) { var taskCompletionSource = new TaskCompletionSource <bool>(); if (baseAction.IsGroup) { ScriptEngine.ExecuteOnGroup(baseAction.ShowExecute, @group, position, (ExecutionResult result) => { bool ret = !System.String.IsNullOrWhiteSpace(result.Error) || result.ReturnValue as bool? == true; taskCompletionSource.SetResult(ret); }); } else { ScriptEngine.ExecuteOnBatch(baseAction.ShowExecute, selection, position, (ExecutionResult result) => { bool ret = !System.String.IsNullOrWhiteSpace(result.Error) || result.ReturnValue as bool? == true; taskCompletionSource.SetResult(ret); }); } return(taskCompletionSource.Task.Result); }
private Control CreateActionMenuItem(IGroupAction baseAction, RoutedEventHandler onClick) { var separatorAction = baseAction as GroupActionSeparator; if (separatorAction != null) { return(new Separator()); } var item = new MenuItem { Header = baseAction.Name }; var actionGroupDef = baseAction as GroupActionGroup; if (actionGroupDef != null) { foreach (var i in actionGroupDef.Children.Select(subAction => CreateActionMenuItem(subAction, onClick))) { item.Items.Add(i); } return(item); } var action = baseAction as GroupAction; item.Tag = action; if (action != null) { item.InputGestureText = action.Shortcut; if (action.DefaultAction) { item.FontWeight = FontWeights.Bold; } } item.Click += onClick; return(item); }
private Control CreateActionMenuItem(IGroupAction baseAction, RoutedEventHandler onClick) { var separatorAction = baseAction as GroupActionSeparator; if (separatorAction != null) { return new Separator(); } var item = new MenuItem {Header = baseAction.Name}; var actionGroupDef = baseAction as GroupActionGroup; if (actionGroupDef != null) { foreach (var i in actionGroupDef.Children.Select(subAction => CreateActionMenuItem(subAction, onClick))) item.Items.Add(i); return item; } var action = baseAction as GroupAction; item.Tag = action; if (action != null) { item.InputGestureText = action.Shortcut; if (action.DefaultAction) { item.FontWeight = FontWeights.Bold; } } item.Click += onClick; return item; }
private MenuItem CreateCardMenuItem(IGroupAction baseAction) { var item = new MenuItem {Header = baseAction.Name}; var actionGroupDef = baseAction as GroupActionGroup; if (actionGroupDef != null) { foreach (MenuItem subItem in actionGroupDef.Children.Select(CreateCardMenuItem)) item.Items.Add(subItem); return item; } var action = baseAction as GroupAction; item.Tag = action; if (action != null) { item.InputGestureText = action.Shortcut; if (action.DefaultAction) { item.FontWeight = FontWeights.Bold; _defaultCardAction = action; } } item.Click += CardActionClicked; return item; }
private Control CreateActionMenuItem(IGroupAction baseAction, RoutedEventHandler onClick, Card card) { var selection = card == null?Enumerable.Empty <Card>() : Selection.ExtendToSelection(card); bool showAction = true; if (baseAction.ShowExecute != null) { showAction = CallActionConditionalExecute(baseAction, selection); } if (!showAction) { return new MenuItem() { Visibility = Visibility.Collapsed } } ; //action is a separator var separatorAction = baseAction as GroupActionSeparator; if (separatorAction != null) { return(new Separator()); } string newName = baseAction.Name; if (baseAction.HeaderExecute != null) { var name = CallActionNameExecute(baseAction, selection); if (name != null) { newName = name; } } var item = new MenuItem { Header = newName }; //action is a submenu var actionGroupDef = baseAction as GroupActionGroup; if (actionGroupDef != null) { foreach (var i in actionGroupDef.Children.Select(subAction => CreateActionMenuItem(subAction, onClick, card)).Where(x => x.Visibility == Visibility.Visible)) { item.Items.Add(i); } if (item.Items.Count == 0) { return new MenuItem() { Visibility = Visibility.Collapsed } } ; return(item); } //action is a proper action var action = baseAction as GroupAction; item.Tag = action; if (action != null) { item.InputGestureText = action.Shortcut; if (action.DefaultAction) { item.FontWeight = FontWeights.Bold; } } item.Click += onClick; return(item); }
private Control CreateActionMenuItem(IGroupAction baseAction, RoutedEventHandler onClick, Card card) { var selection = card == null ? Enumerable.Empty<Card>() : Selection.ExtendToSelection(card); bool showAction = true; if (baseAction.ShowExecute != null) showAction = CallActionConditionalExecute(baseAction, selection); if (!showAction) return new MenuItem() { Visibility = Visibility.Collapsed }; //action is a separator var separatorAction = baseAction as GroupActionSeparator; if (separatorAction != null) return new Separator(); string newName = baseAction.Name; if (baseAction.HeaderExecute != null) { var name = CallActionNameExecute(baseAction, selection); if (name != null) newName = name; } var item = new MenuItem { Header = newName }; //action is a submenu var actionGroupDef = baseAction as GroupActionGroup; if (actionGroupDef != null) { foreach (var i in actionGroupDef.Children.Select(subAction => CreateActionMenuItem(subAction, onClick, card)).Where(x => x.Visibility == Visibility.Visible)) item.Items.Add(i); if (item.Items.Count == 0) return new MenuItem() { Visibility = Visibility.Collapsed }; return item; } //action is a proper action var action = baseAction as GroupAction; item.Tag = action; if (action != null) { item.InputGestureText = action.Shortcut; if (action.DefaultAction) { item.FontWeight = FontWeights.Bold; } } item.Click += onClick; return item; }
private string CallActionNameExecute(IGroupAction baseAction, IEnumerable<Card> selection) { var taskCompletionSource = new TaskCompletionSource<string>(); if (baseAction.IsGroup) { ScriptEngine.ExecuteOnGroup(baseAction.HeaderExecute, @group, position, (ExecutionResult result) => { string ret = result.ReturnValue as string; taskCompletionSource.SetResult(ret); }); } else { ScriptEngine.ExecuteOnBatch(baseAction.HeaderExecute, selection, position, (ExecutionResult result) => { string ret = result.ReturnValue as string; taskCompletionSource.SetResult(ret); }); } return taskCompletionSource.Task.Result; }
//private Task<bool> CallActionShowIf(string function, IEnumerable<Card> selection) private bool CallActionConditionalExecute(IGroupAction baseAction, IEnumerable<Card> selection) { var taskCompletionSource = new TaskCompletionSource<bool>(); if (baseAction.IsGroup) { ScriptEngine.ExecuteOnGroup(baseAction.ShowExecute, @group, position, (ExecutionResult result) => { bool ret = !System.String.IsNullOrWhiteSpace(result.Error) || result.ReturnValue as bool? == true; taskCompletionSource.SetResult(ret); }); } else { ScriptEngine.ExecuteOnBatch(baseAction.ShowExecute, selection, position, (ExecutionResult result) => { bool ret = !System.String.IsNullOrWhiteSpace(result.Error) || result.ReturnValue as bool? == true; taskCompletionSource.SetResult(ret); }); } return taskCompletionSource.Task.Result; }