Radegast.Rendering.SceneWindow.ctxObjects_Opening C# (CSharp) Method

ctxObjects_Opening() private method

Dynamically construct the context menu when we right click on the screen
private ctxObjects_Opening ( object csender, System ce ) : void
csender object
ce System
return void
        private void ctxObjects_Opening(object csender, System.ComponentModel.CancelEventArgs ce)
        {
            // Clear all context menu items
            ctxMenu.Items.Clear();
            ce.Cancel = false;
            ToolStripMenuItem item;

            // Always add standup button if we are sitting
            if (Instance.State.IsSitting)
            {
                item = new ToolStripMenuItem("Stand Up", null, (sender, e) =>
                {
                    instance.State.SetSitting(false, UUID.Zero);
                });
                ctxMenu.Items.Add(item);
            }

            // Was it prim that was right clicked
            if (RightclickedObject != null && RightclickedObject is RenderPrimitive)
            {
                RenderPrimitive prim = (RenderPrimitive)RightclickedObject;

                // Sit button handling
                if (!instance.State.IsSitting)
                {
                    item = new ToolStripMenuItem("Sit", null, (sender, e) =>
                    {
                        instance.State.SetSitting(true, prim.Prim.ID);
                    });

                    if (prim.Prim.Properties != null
                        && !string.IsNullOrEmpty(prim.Prim.Properties.SitName))
                    {
                        item.Text = prim.Prim.Properties.SitName;
                    }
                    ctxMenu.Items.Add(item);
                }

                // Is the prim touchable
                if ((prim.Prim.Flags & PrimFlags.Touch) != 0)
                {
                    item = new ToolStripMenuItem("Touch", null, (sender, e) =>
                    {
                        Client.Self.Grab(prim.Prim.LocalID, Vector3.Zero, Vector3.Zero, Vector3.Zero, RightclickedFaceID, Vector3.Zero, Vector3.Zero, Vector3.Zero);
                        Thread.Sleep(100);
                        Client.Self.DeGrab(prim.Prim.LocalID, Vector3.Zero, Vector3.Zero, RightclickedFaceID, Vector3.Zero, Vector3.Zero, Vector3.Zero);
                    });

                    if (prim.Prim.Properties != null
                        && !string.IsNullOrEmpty(prim.Prim.Properties.TouchName))
                    {
                        item.Text = prim.Prim.Properties.TouchName;
                    }
                    ctxMenu.Items.Add(item);
                }

                // Can I delete and take this object?
                if ((prim.Prim.Flags & (PrimFlags.ObjectYouOwner | PrimFlags.ObjectYouOfficer)) != 0)
                {
                    // Take button
                    item = new ToolStripMenuItem("Take", null, (sender, e) =>
                    {
                        instance.MediaManager.PlayUISound(UISounds.ObjectDelete);
                        Client.Inventory.RequestDeRezToInventory(prim.Prim.LocalID);
                    });
                    ctxMenu.Items.Add(item);

                    // Delete button
                    item = new ToolStripMenuItem("Delete", null, (sender, e) =>
                    {
                        instance.MediaManager.PlayUISound(UISounds.ObjectDelete);
                        Client.Inventory.RequestDeRezToInventory(prim.Prim.LocalID, DeRezDestination.AgentInventoryTake, Client.Inventory.FindFolderForType(FolderType.Trash), UUID.Random());
                    });
                    ctxMenu.Items.Add(item);

                }

                // add prim context menu items
                instance.ContextActionManager.AddContributions(ctxMenu, typeof(Primitive), prim.Prim);

            } // We right clicked on an avatar, add some context menu items
            else if (RightclickedObject != null && RightclickedObject is RenderAvatar)
            {
                RenderAvatar av = (RenderAvatar)RightclickedObject;

                // Profile button
                item = new ToolStripMenuItem("Profile", null, (sender, e) =>
                {
                    Instance.MainForm.ShowAgentProfile("", av.avatar.ID);
                });
                ctxMenu.Items.Add(item);

                if (av.avatar.ID != Client.Self.AgentID)
                {
                    // IM button
                    item = new ToolStripMenuItem("Instant Message", null, (sender, e) =>
                    {
                        Instance.TabConsole.ShowIMTab(av.avatar.ID, Instance.Names.Get(av.avatar.ID), true);
                    });
                    ctxMenu.Items.Add(item);

                    // Pay button
                    item = new ToolStripMenuItem("Pay", null, (sender, e) =>
                    {
                        (new frmPay(Instance, av.avatar.ID, Instance.Names.Get(av.avatar.ID), false)).ShowDialog();
                    });
                    ctxMenu.Items.Add(item);
                }

                // add avatar context menu items
                instance.ContextActionManager.AddContributions(ctxMenu, typeof(Avatar), av.avatar.ID);
            }

            // If we are not the sole menu item, add separator
            if (ctxMenu.Items.Count > 0)
            {
                ctxMenu.Items.Add(new ToolStripSeparator());
            }

            // Dock/undock menu item
            bool docked = !instance.TabConsole.Tabs["scene_window"].Detached;
            if (docked)
            {
                item = new ToolStripMenuItem("Undock", null, (sender, e) =>
                {
                    instance.TabConsole.SelectDefaultTab();
                    instance.TabConsole.Tabs["scene_window"].Detach(instance);
                });
            }
            else
            {
                item = new ToolStripMenuItem("Dock", null, (sender, e) =>
                {
                    Control p = Parent;
                    instance.TabConsole.Tabs["scene_window"].AttachTo(instance.TabConsole.tstTabs, instance.TabConsole.toolStripContainer1.ContentPanel);
                    if (p is Form)
                    {
                        ((Form)p).Close();
                    }
                });
            }
            ctxMenu.Items.Add(item);

            item = new ToolStripMenuItem("Options", null, (sender, e) =>
            {
                new Floater(Instance, new GraphicsPreferences(Instance), this).Show(FindForm());
            });
            ctxMenu.Items.Add(item);

            // Show hide debug panel
            if (pnlDebug.Visible)
            {
                item = new ToolStripMenuItem("Hide debug panel", null, (sender, e) =>
                {
                    pnlDebug.Visible = false;
                    Instance.GlobalSettings["scene_viewer_debug_panel"] = false;
                });
            }
            else
            {
                item = new ToolStripMenuItem("Show debug panel", null, (sender, e) =>
                {
                    pnlDebug.Visible = true;
                    Instance.GlobalSettings["scene_viewer_debug_panel"] = true;
                });
            }
            ctxMenu.Items.Add(item);
            instance.ContextActionManager.AddContributions(ctxMenu, typeof(Vector3), RightclickedPosition);
        }
SceneWindow