Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
 }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        //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);
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        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;
        }
Beispiel #9
0
        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;
        }
Beispiel #10
0
        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);
        }
Beispiel #11
0
        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;
        }
Beispiel #12
0
 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;
 }
Beispiel #13
0
 //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;
 }