OSDN Git Service

RAD-14
authorLatif Khalifa <latifer@streamgrid.net>
Fri, 4 Sep 2009 03:37:42 +0000 (03:37 +0000)
committerLatif Khalifa <latifer@streamgrid.net>
Fri, 4 Sep 2009 03:37:42 +0000 (03:37 +0000)
Added 3 new events to TabConsole
OnTabSelected
OnTabAdded
OnTabRemoved

They will pass tab affected by the operation as e.Teb

git-svn-id: https://radegast.googlecode.com/svn/trunk@187 f7a694da-4d33-11de-9ad6-1127a62b9fcd

Radegast/GUI/Consoles/TabsConsole.cs

index a185211..fcfc3ff 100644 (file)
@@ -38,8 +38,52 @@ using OpenMetaverse;
 \r
 namespace Radegast\r
 {\r
+    /// <summary>\r
+    /// Arguments for tab events\r
+    /// </summary>\r
+    public class TabEventArgs : EventArgs\r
+    {\r
+        /// <summary>\r
+        /// Tab that was manipulated in the event\r
+        /// </summary>\r
+        public SleekTab Tab;\r
+\r
+        public TabEventArgs()\r
+            : base()\r
+        {\r
+        }\r
+        \r
+        public TabEventArgs(SleekTab tab)\r
+            :base()\r
+        {\r
+            Tab = tab;\r
+        }\r
+    }\r
+\r
     public partial class TabsConsole : UserControl\r
     {\r
+        /// <summary>\r
+        /// Delegate inviked on tab operations\r
+        /// </summary>\r
+        /// <param name="sender">Event sender</param>\r
+        /// <param name="e">Event arguments</param>\r
+        public delegate void TabCallback(object sender, TabEventArgs e);\r
+\r
+        /// <summary>\r
+        /// Fired when a tab is selected\r
+        /// </summary>\r
+        public event TabCallback OnTabSelected;\r
+\r
+        /// <summary>\r
+        /// Fired when a new tab is added\r
+        /// </summary>\r
+        public event TabCallback OnTabAdded;\r
+\r
+        /// <summary>\r
+        /// Fired when a tab is removed\r
+        /// </summary>\r
+        public event TabCallback OnTabRemoved;\r
+\r
         private RadegastInstance instance;\r
         private GridClient client { get { return instance.Client; } }\r
         private RadegastNetcom netcom { get { return instance.Netcom; } }\r
@@ -51,6 +95,10 @@ namespace Radegast
         private ChatConsole chatConsole;\r
 \r
         private SleekTab selectedTab;\r
+\r
+        /// <summary>\r
+        /// Currently selected tab\r
+        /// </summary>\r
         public SleekTab SelectedTab\r
         {\r
             get\r
@@ -437,6 +485,12 @@ namespace Radegast
             button.Click += new EventHandler(TabButtonClick);\r
             tab.Button = button;\r
             tabs.Add(tab.Name, tab);\r
+\r
+            if (OnTabAdded != null)\r
+            {\r
+                try { OnTabAdded(this, new TabEventArgs(selectedTab)); }\r
+                catch (Exception) { }\r
+            }\r
         }\r
 \r
         public SleekTab AddTab(string name, string label, Control control)\r
@@ -455,6 +509,12 @@ namespace Radegast
             tab.TabClosed += new EventHandler(tab_TabClosed);\r
             tabs.Add(name.ToLower(), tab);\r
 \r
+            if (OnTabAdded != null)\r
+            {\r
+                try { OnTabAdded(this, new TabEventArgs(selectedTab)); }\r
+                catch (Exception) { }\r
+            }\r
+\r
             return tab;\r
         }\r
 \r
@@ -485,6 +545,12 @@ namespace Radegast
 \r
             tbtnCloseTab.Enabled = tab.AllowClose;\r
             owner.AcceptButton = tab.DefaultControlButton;\r
+\r
+            if (OnTabSelected != null)\r
+            {\r
+                try { OnTabSelected(this, new TabEventArgs(selectedTab)); }\r
+                catch (Exception) { }\r
+            }\r
         }\r
 \r
         private void tab_TabClosed(object sender, EventArgs e)\r
@@ -492,6 +558,13 @@ namespace Radegast
             SleekTab tab = (SleekTab)sender;\r
             \r
             tabs.Remove(tab.Name);\r
+\r
+            if (OnTabRemoved != null)\r
+            {\r
+                try { OnTabRemoved(this, new TabEventArgs(tab)); }\r
+                catch (Exception) { }\r
+            }\r
+\r
             tab = null;\r
         }\r
 \r