Exemplo n.º 1
0
        /// <summary>
        /// Add items to a context menu for the selected item
        /// </summary>
        /// <param name="menu"></param>
        /// <param name="surface"></param>
        public virtual void AddContextMenuItems(ContextMenuStrip menu, ISurface surface)
        {
            bool push = surface.Elements.CanPushDown(this);
            bool pull = surface.Elements.CanPullUp(this);

            ToolStripMenuItem item;

            // Pull "up"
            if (pull)
            {
                item        = new ToolStripMenuItem(Language.GetString(LangKey.editor_uptotop));
                item.Click += delegate {
                    surface.Elements.PullElementsToTop(this);
                    surface.Elements.Invalidate();
                };
                menu.Items.Add(item);
                item        = new ToolStripMenuItem(Language.GetString(LangKey.editor_uponelevel));
                item.Click += delegate {
                    surface.Elements.PullElementsUp(this);
                    surface.Elements.Invalidate();
                };
                menu.Items.Add(item);
            }
            // Push "down"
            if (push)
            {
                item        = new ToolStripMenuItem(Language.GetString(LangKey.editor_downtobottom));
                item.Click += delegate {
                    surface.Elements.PushElementsToBottom(this);
                    surface.Elements.Invalidate();
                };
                menu.Items.Add(item);
                item        = new ToolStripMenuItem(Language.GetString(LangKey.editor_downonelevel));
                item.Click += delegate {
                    surface.Elements.PushElementsDown(this);
                    surface.Elements.Invalidate();
                };
                menu.Items.Add(item);
            }

            // Duplicate
            item        = new ToolStripMenuItem(Language.GetString(LangKey.editor_duplicate));
            item.Click += delegate {
                IDrawableContainerList dcs = this.Clone();
                dcs.Parent = surface;
                dcs.MoveBy(10, 10);
                surface.AddElements(dcs);
                surface.DeselectAllElements();
                surface.SelectElements(dcs);
            };
            menu.Items.Add(item);

            // Copy
            item = new ToolStripMenuItem(Language.GetString(LangKey.editor_copytoclipboard))
            {
                Image = (Image)EditorFormResources.GetObject("copyToolStripMenuItem.Image")
            };
            item.Click += delegate {
                ClipboardHelper.SetClipboardData(typeof(IDrawableContainerList), this);
            };
            menu.Items.Add(item);

            // Cut
            item = new ToolStripMenuItem(Language.GetString(LangKey.editor_cuttoclipboard))
            {
                Image = (Image)EditorFormResources.GetObject("btnCut.Image")
            };
            item.Click += delegate {
                ClipboardHelper.SetClipboardData(typeof(IDrawableContainerList), this);
                surface.RemoveElements(this);
            };
            menu.Items.Add(item);

            // Delete
            item        = new ToolStripMenuItem(Language.GetString(LangKey.editor_deleteelement));
            item.Image  = (Image)EditorFormResources.GetObject("removeObjectToolStripMenuItem.Image");
            item.Click += delegate {
                surface.RemoveElements(this);
            };
            menu.Items.Add(item);

            // Reset
            bool canReset = false;

            foreach (var drawableContainer in this)
            {
                var container = (DrawableContainer)drawableContainer;
                if (container.HasDefaultSize)
                {
                    canReset = true;
                }
            }
            if (canReset)
            {
                item = new ToolStripMenuItem(Language.GetString(LangKey.editor_resetsize));
                //item.Image = ((System.Drawing.Image)(editorFormResources.GetObject("removeObjectToolStripMenuItem.Image")));
                item.Click += delegate {
                    MakeBoundsChangeUndoable(false);
                    foreach (var drawableContainer in this)
                    {
                        var container = (DrawableContainer)drawableContainer;
                        if (!container.HasDefaultSize)
                        {
                            continue;
                        }
                        Size defaultSize = container.DefaultSize;
                        container.MakeBoundsChangeUndoable(false);
                        container.Width  = defaultSize.Width;
                        container.Height = defaultSize.Height;
                    }
                    surface.Invalidate();
                };
                menu.Items.Add(item);
            }
        }