示例#1
0
        /// <summary>Adds the action.</summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="System.Windows.Input.MouseButtonEventArgs"/> instance containing the event data.</param>
        private void AddAction([NotNull] object sender, [NotNull] MouseButtonEventArgs e)
        {
            Debug.ArgumentNotNull(sender, "sender");
            Debug.ArgumentNotNull(e, "e");

            var selectedItem = this.Actions.SelectedItem as ListBoxItem;

            if (selectedItem == null)
            {
                return;
            }

            var action = selectedItem.Tag as RuleManager.RuleActionInfo;

            if (action == null)
            {
                return;
            }

            var descriptor = new RuleActionDescriptor
            {
                Action = action.GetInstance()
            };

            /*
             * this.Rule.ActionDescriptors.Add(descriptor);
             *
             * this.RenderRule(this.Rule);
             */
        }
示例#2
0
        private static TextBlock FormatAction([NotNull] RuleActionDescriptor descriptor, bool isLast)
        {
            Debug.ArgumentNotNull(descriptor, nameof(descriptor));

            var textBlock = new TextBlock();

            FormatText(textBlock, descriptor.DisplayText, descriptor.Parameters);

            if (isLast)
            {
                textBlock.Inlines.Add(new Run(@" and"));
            }

            return(textBlock);
        }
示例#3
0
        public override void Execute(object parameter)
        {
            var context = parameter as QueryAnalyzerContext;

            if (context == null)
            {
                return;
            }

            var name = AppHost.Prompt("Enter the name of the script macro:", "Save as Script Macro");

            if (name == null)
            {
                return;
            }

            var conditionDescriptors = new List <RuleConditionDescriptor>
            {
                new RuleConditionDescriptor
                {
                    Condition = new TrueCondition()
                }
            };

            var ruleActionDescriptor = new RuleActionDescriptor
            {
                Action = new ScriptMacroAction()
            };

            ruleActionDescriptor.Parameters[@"Script"] = context.Script;

            var actionDescriptors = new List <RuleActionDescriptor>
            {
                ruleActionDescriptor
            };

            var rule = new Rule(conditionDescriptors, actionDescriptors);

            var macro = new Macro(rule, name);

            MacroManager.Add(macro);
        }
示例#4
0
        private bool MoveAction([NotNull] Rule rule, [NotNull] RuleActionDescriptor action, bool dryRun)
        {
            Debug.ArgumentNotNull(rule, nameof(rule));
            Debug.ArgumentNotNull(action, nameof(action));

            var index = rule.ActionDescriptors.IndexOf(action) + GetOffset();

            if (index < 0 || index >= rule.ActionDescriptors.Count)
            {
                return(false);
            }

            if (!dryRun)
            {
                rule.ActionDescriptors.Remove(action);
                rule.ActionDescriptors.Insert(index, action);
            }

            return(true);
        }
示例#5
0
        private static void LoadActions([NotNull] XElement actions, [NotNull] Rule rule)
        {
            Debug.ArgumentNotNull(actions, nameof(actions));
            Debug.ArgumentNotNull(rule, nameof(rule));

            foreach (var element in actions.Elements())
            {
                var action = new RuleActionDescriptor
                {
                    Action = GetInstance <IRuleAction>(element.GetAttributeValue("type"))
                };

                var parameters = element.Element(@"parameters");
                if (parameters != null)
                {
                    LoadParameters(parameters, action.Parameters);
                }

                rule.ActionDescriptors.Add(action);
            }
        }