OSDN Git Service

RAD-12: Added Refresh button on the attachment tab.
authorLatif Khalifa <latifer@streamgrid.net>
Thu, 3 Sep 2009 05:06:10 +0000 (05:06 +0000)
committerLatif Khalifa <latifer@streamgrid.net>
Thu, 3 Sep 2009 05:06:10 +0000 (05:06 +0000)
Optimize speed of the display by not fetching properties if we have them already.

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

Radegast/GUI/Consoles/AttachmentDetail.cs
Radegast/GUI/Consoles/AttachmentTab.Designer.cs
Radegast/GUI/Consoles/AttachmentTab.cs

index c95d1db..ff06509 100644 (file)
@@ -71,18 +71,24 @@ namespace Radegast
         private void AttachmentDetail_Load(object sender, EventArgs e)\r
         {\r
             boxID.Text = attachment.ID.ToString();\r
-            client.Objects.SelectObject(client.Network.CurrentSim, attachment.LocalID);\r
+\r
+            if (attachment.Properties == null)\r
+            {\r
+                client.Objects.SelectObject(client.Network.CurrentSim, attachment.LocalID);\r
+            }\r
+            else\r
+            {\r
+                UpdateControls();\r
+            }\r
         }\r
 \r
         private void UpdateControls()\r
         {\r
             if (InvokeRequired) {\r
-                Invoke(new MethodInvoker(delegate()\r
-                {\r
-                    UpdateControls();\r
-                }));\r
+                Invoke(new MethodInvoker(UpdateControls));\r
                 return;\r
             }\r
+\r
             lblAttachmentPoint.Text = attachment.PrimData.AttachmentPoint.ToString();\r
             boxName.Text = attachment.Properties.Name;\r
 \r
index d81cfc9..32807f9 100644 (file)
@@ -57,19 +57,47 @@ namespace Radegast
         /// </summary>\r
         private void InitializeComponent()\r
         {\r
+            this.pnlControls = new System.Windows.Forms.Panel();\r
+            this.btnRefresh = new System.Windows.Forms.Button();\r
+            this.pnlControls.SuspendLayout();\r
             this.SuspendLayout();\r
             // \r
+            // pnlControls\r
+            // \r
+            this.pnlControls.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)\r
+                        | System.Windows.Forms.AnchorStyles.Right)));\r
+            this.pnlControls.Controls.Add(this.btnRefresh);\r
+            this.pnlControls.Location = new System.Drawing.Point(0, 0);\r
+            this.pnlControls.Name = "pnlControls";\r
+            this.pnlControls.Size = new System.Drawing.Size(150, 30);\r
+            this.pnlControls.TabIndex = 0;\r
+            // \r
+            // btnRefresh\r
+            // \r
+            this.btnRefresh.Location = new System.Drawing.Point(3, 3);\r
+            this.btnRefresh.Name = "btnRefresh";\r
+            this.btnRefresh.Size = new System.Drawing.Size(75, 23);\r
+            this.btnRefresh.TabIndex = 0;\r
+            this.btnRefresh.Text = "&Refresh";\r
+            this.btnRefresh.UseVisualStyleBackColor = true;\r
+            this.btnRefresh.Click += new System.EventHandler(this.btnRefresh_Click);\r
+            // \r
             // AttachmentTab\r
             // \r
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\r
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r
             this.AutoScroll = true;\r
+            this.Controls.Add(this.pnlControls);\r
             this.Name = "AttachmentTab";\r
             this.Load += new System.EventHandler(this.AttachmentTab_Load);\r
+            this.pnlControls.ResumeLayout(false);\r
             this.ResumeLayout(false);\r
 \r
         }\r
 \r
         #endregion\r
+\r
+        private System.Windows.Forms.Panel pnlControls;\r
+        private System.Windows.Forms.Button btnRefresh;\r
     }\r
 }\r
index 4a7a3f8..0350e64 100644 (file)
@@ -54,6 +54,11 @@ namespace Radegast
 \r
         private void AttachmentTab_Load(object sender, EventArgs e)\r
         {\r
+            RefreshList();\r
+        }\r
+\r
+        private void RefreshList()\r
+        {\r
             List<Primitive> attachments = client.Network.CurrentSim.ObjectsPrimitives.FindAll(\r
                 delegate(Primitive prim)\r
                 {\r
@@ -61,21 +66,45 @@ namespace Radegast
                 }\r
             );\r
 \r
-            Controls.Clear();\r
+            List<Control> toRemove = new List<Control>();\r
+\r
+            foreach (Control c in Controls)\r
+            {\r
+                if (c is AttachmentDetail)\r
+                {\r
+                    toRemove.Add(c);\r
+                }\r
+            }\r
+\r
+            for (int i = 0; i < toRemove.Count; i++)\r
+            {\r
+                Controls.Remove(toRemove[i]);\r
+                toRemove[i].Dispose();\r
+            }\r
+\r
             List<UUID> added = new List<UUID>();\r
 \r
             int n = 0;\r
-            foreach (Primitive prim in attachments) {\r
-                if (!added.Contains(prim.ID)) {\r
+            foreach (Primitive prim in attachments)\r
+            {\r
+                if (!added.Contains(prim.ID))\r
+                {\r
                     AttachmentDetail ad = new AttachmentDetail(instance, av, prim);\r
-                    ad.Location = new Point(0, n++ * ad.Height);\r
-                    ad.Dock = DockStyle.Top;\r
+                    ad.Location = new Point(0, pnlControls.Height + n * ad.Height);\r
+                    ad.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;\r
+                    ad.Width = ClientSize.Width;\r
                     Controls.Add(ad);\r
                     added.Add(prim.ID);\r
+                    n++;\r
                 }\r
             }\r
 \r
             AutoScrollPosition = new Point(0, 0);\r
         }\r
+\r
+        private void btnRefresh_Click(object sender, EventArgs e)\r
+        {\r
+            RefreshList();\r
+        }\r
     }\r
 }\r