* refactor the code to make it more OOP and extensible
[reactos.git] / irc / TechBot / TechBot.Library / WmCommand.cs
index 0809c3e..31d6701 100644 (file)
@@ -3,35 +3,31 @@ using System.Xml;
 \r
 namespace TechBot.Library\r
 {\r
-       public class WmCommand : BaseCommand, ICommand\r
+       public class WMCommand : XmlCommand\r
        {\r
-               private IServiceOutput serviceOutput;\r
-               private string wmXml;\r
-               private XmlDocument wmXmlDocument;\r
-\r
-               public WmCommand(IServiceOutput serviceOutput,\r
-                                string wmXml)\r
+        public WMCommand(TechBotService techBot)\r
+            : base(techBot)\r
                {\r
-                       this.serviceOutput = serviceOutput;\r
-                       this.wmXml = wmXml;\r
-                       wmXmlDocument = new XmlDocument();\r
-                       wmXmlDocument.Load(wmXml);\r
                }\r
+\r
+        public override string XmlFile\r
+        {\r
+            get { return Settings.Default.WMXml; }\r
+        }\r
                \r
-               public bool CanHandle(string commandName)\r
-               {\r
-                       return CanHandle(commandName,\r
-                                        new string[] { "wm" });\r
-               }\r
+        public override string[] AvailableCommands\r
+        {\r
+            get { return new string[] { "wm" }; }\r
+        }\r
 \r
-               public void Handle(MessageContext context,\r
+               public override void Handle(MessageContext context,\r
                                   string commandName,\r
                                   string parameters)\r
                {\r
                        string wmText = parameters;\r
                        if (wmText.Equals(String.Empty))\r
                        {\r
-                               serviceOutput.WriteLine(context,\r
+                               TechBot.ServiceOutput.WriteLine(context,\r
                                                        "Please provide a valid window message value or name.");\r
                                return;\r
                        }\r
@@ -51,27 +47,27 @@ namespace TechBot.Library
 \r
                        if (output != null)\r
                        {\r
-                               serviceOutput.WriteLine(context,\r
+                TechBot.ServiceOutput.WriteLine(context,\r
                                                        String.Format("{0} is {1}.",\r
                                                                      wmText,\r
                                                                      output));\r
                        }\r
                        else\r
                        {\r
-                               serviceOutput.WriteLine(context,\r
+                TechBot.ServiceOutput.WriteLine(context,\r
                                                        String.Format("I don't know about window message {0}.",\r
                                                                      wmText));\r
                        }\r
                }\r
-               \r
-               public string Help()\r
+\r
+        public override string Help()\r
                {\r
                        return "!wm <value> or !wm <name>";\r
                }\r
                \r
                private string GetWmDescription(long wm)\r
                {\r
-                       XmlElement root = wmXmlDocument.DocumentElement;\r
+                       XmlElement root = base.m_XmlDocument.DocumentElement;\r
                        XmlNode node = root.SelectSingleNode(String.Format("WindowMessage[@value='{0}']",\r
                                                                           wm));\r
                        if (node != null)\r
@@ -87,7 +83,7 @@ namespace TechBot.Library
                \r
                private string GetWmNumber(string wmName)\r
                {\r
-                       XmlElement root = wmXmlDocument.DocumentElement;\r
+                       XmlElement root = base.m_XmlDocument.DocumentElement;\r
                        XmlNode node = root.SelectSingleNode(String.Format("WindowMessage[@text='{0}']",\r
                                                                           wmName));\r
                        if (node != null)\r