示例#1
0
        public static Query CreateFromXML(XmlElement queryElement, Menu parentMenu)
        {
            if (queryElement.Name != "query")
            {
                throw new ArgumentException("argument must be a query element", "queryElement");
            }

            MenuItemBaseProperties baseProperties = new MenuItemBaseProperties();

            baseProperties.FillFromXml(queryElement, parentMenu);

            List <IProcessor> processorList     = new List <IProcessor>();
            XmlElement        processorsElement = queryElement["processors"];

            if (processorsElement != null)
            {
                string processorElementName;
                foreach (XmlNode node in processorsElement)
                {
                    if (node is XmlElement element)
                    {
                        processorElementName = element.Name;
                        if (mProcessorParsers.ContainsKey(processorElementName))
                        {
                            processorList.Add(mProcessorParsers[processorElementName].CreateFromXML(element));
                        }
                    }
                }
            }

            return(new Query(baseProperties, queryElement.Attributes["command"].Value, processorList.ToArray(), TextParser.ParseNullableXmlBoolean(queryElement.Attributes["offerClipboardCopy"])));
        }
示例#2
0
 private Menu(MenuItemBaseProperties baseProperties, bool?returnToMainMenu)
     : base(baseProperties)
 {
     if (returnToMainMenu.HasValue)
     {
         mReturnToMainMenu = returnToMainMenu.Value;
     }
 }
示例#3
0
 private Query(MenuItemBaseProperties baseProperties, string command, IProcessor[] processors, bool?offerClipboardCopy)
     : base(baseProperties)
 {
     mCommand    = command;
     mProcessors = processors;
     if (offerClipboardCopy.HasValue)
     {
         mOfferClipboardCopy = offerClipboardCopy.Value;
     }
 }
示例#4
0
        private Task(MenuItemBaseProperties baseProperties, string progressCaption, string[] activities, bool?continueOnError, DecoratedMessage postMessage)
            : base(baseProperties)
        {
            ProgressCaption = progressCaption ?? throw new ArgumentNullException("progressCaption");
            mActivities     = activities ?? throw new ArgumentNullException("activities");

            if (continueOnError != null)
            {
                mContinueOnError = continueOnError.Value;
            }

            mPostMessage = postMessage;
        }
示例#5
0
        public static Task CreateFromXML(XmlElement taskElement, Menu parentMenu)
        {
            if (taskElement.Name != "task")
            {
                throw new ArgumentException("argument must be a task element", "taskElement");
            }

            MenuItemBaseProperties baseProperties = new MenuItemBaseProperties();

            baseProperties.FillFromXml(taskElement, parentMenu);

            DecoratedMessage postMessage = null;

            XmlElement postMessageElement = taskElement["postMessage"];

            if (postMessageElement != null)
            {
                MessageBoxIcon?messageTypeIcon = null;

                XmlAttribute messageTypeAttribute = postMessageElement.Attributes["messageType"];
                if (messageTypeAttribute != null)
                {
                    switch (messageTypeAttribute.Value)
                    {
                    case "neutral":
                        messageTypeIcon = MessageBoxIcon.None;
                        break;

                    case "information":
                        messageTypeIcon = MessageBoxIcon.Information;
                        break;

                    case "warning":
                        messageTypeIcon = MessageBoxIcon.Warning;
                        break;
                    }
                }

                postMessage = new DecoratedMessage(TextParser.ParseMultilineElementText(postMessageElement.InnerText.Trim()), postMessageElement.Attributes["caption"].Value,
                                                   false, TextParser.ParseNullableXmlBoolean(postMessageElement.Attributes["showIfFailed"]), null, messageTypeIcon);
            }


            return(new Task(baseProperties, taskElement.Attributes["progressCaption"].Value,
                            TextParser.ParseActivities(taskElement["activities"].InnerText), TextParser.ParseNullableXmlBoolean(taskElement.Attributes["continueOnError"]), postMessage));
        }
示例#6
0
        public static Menu CreateFromXML(XmlElement menuElement, Menu parentMenu)
        {
            if (menuElement.Name != "menu")
            {
                throw new ArgumentException("argument must be a menu element", "menuElement");
            }

            MenuItemBaseProperties baseProperties = new MenuItemBaseProperties();

            baseProperties.FillFromXml(menuElement, parentMenu);

            Menu menu = new Menu(baseProperties, TextParser.ParseNullableXmlBoolean(menuElement.Attributes["returnToMainMenu"]));

            List <MenuItem> menuItems = new List <MenuItem>();

            foreach (XmlNode node in menuElement)
            {
                if (node is XmlElement element)
                {
                    switch (element.Name)
                    {
                    case "menu":
                        menuItems.Add(CreateFromXML(element, menu));
                        break;

                    case "query":
                        menuItems.Add(Query.CreateFromXML(element, menu));
                        break;

                    case "task":
                        menuItems.Add(Task.CreateFromXML(element, menu));
                        break;
                    }
                }
            }

            menu.MenuItems = menuItems.ToArray();

            return(menu);
        }
示例#7
0
 protected MenuItem(MenuItemBaseProperties baseProperties)
 {
     mBaseProperties = baseProperties ?? throw new ArgumentNullException("baseProperties");
 }