Example #1
0
        /// <summary>
        /// Creates the search popup with a tree.
        /// </summary>
        /// <param name="searchBox">The search box.</param>
        /// <param name="tree">The tree control.</param>
        /// <returns>The created menu to setup and show.</returns>
        public static ContextMenuBase CreateSearchPopup(out TextBox searchBox, out Tree tree)
        {
            var menu = new ContextMenuBase
            {
                Size = new Float2(320, 220),
            };

            searchBox = new TextBox(false, 1, 1)
            {
                Width         = menu.Width - 3,
                WatermarkText = "Search...",
                Parent        = menu,
            };
            var panel1 = new Panel(ScrollBars.Vertical)
            {
                Bounds = new Rectangle(0, searchBox.Bottom + 1, menu.Width, menu.Height - searchBox.Bottom - 2),
                Parent = menu
            };
            var panel2 = new VerticalPanel
            {
                Parent       = panel1,
                AnchorPreset = AnchorPresets.HorizontalStretchTop,
                IsScrollable = true,
            };

            tree = new Tree(false)
            {
                Parent = panel2,
            };
            return(menu);
        }
 private Toolbar CreateToolbar(
     IEnumerable <IToolbarCommand> commands,
     ContextMenuBase contextMenuBase)
 {
     return(new Toolbar(
                CreateFactoryFor(commands),
                CreateFactoryFor(contextMenuBase)));
 }
 private Shell CreateShell(
     ShellCommandBase shellCommand,
     IHotkeyHandler hotkeyCommander,
     ContextMenuBase contextMenuBase,
     ScreenHostBase screenHostBase,
     DialogHostBase dialogHostBase,
     ToolbarBase toolbarBase)
 {
     return(new Shell(
                CreateFactoryFor(shellCommand, "startCommand"),
                CreateFactoryFor(hotkeyCommander),
                CreateFactoryFor(contextMenuBase),
                CreateFactoryFor(screenHostBase),
                CreateFactoryFor(dialogHostBase),
                CreateFactoryFor(toolbarBase)));
 }
        public void ShowContextMenu <T>(Point location, NodeControl node = null) where T : ContextMenuBase
        {
            _parentNodeControl = node;

            var contextMenu = LayoutRoot.Children.OfType <T>().FirstOrDefault();

            if (contextMenu != null)
            {
                if (node != null)
                {
                    contextMenu.Show(node);
                }
                else
                {
                    contextMenu.Show();
                }

                contextMenu.UpdateLayout();
                _showingContextMenu = contextMenu;

                var width  = contextMenu.ActualWidth;
                var height = contextMenu.ActualHeight;

                ContextMenuOpenType openType;
                if (location.X > ContextMenuParent.ContainerWidth - width)
                {
                    if (location.Y > ContextMenuParent.ContainerHeight - height)
                    {
                        openType = ContextMenuOpenType.LeftTop;
                        contextMenu.SpaceForSubMenuY = ContextMenuParent.ContainerHeight - location.Y;
                    }
                    else
                    {
                        openType = ContextMenuOpenType.LeftBottom;
                        contextMenu.SpaceForSubMenuY = ContextMenuParent.ContainerHeight - location.Y - height;
                    }
                    contextMenu.SpaceForSubMenuX = ContextMenuParent.ContainerWidth - location.X;
                }
                else
                {
                    if (location.Y > ContextMenuParent.ContainerHeight - height)
                    {
                        openType = ContextMenuOpenType.RightTop;
                        contextMenu.SpaceForSubMenuY = ContextMenuParent.ContainerHeight - location.Y;
                    }
                    else
                    {
                        openType = ContextMenuOpenType.RightBottom;
                        contextMenu.SpaceForSubMenuY = ContextMenuParent.ContainerHeight - location.Y - height;
                    }
                    contextMenu.SpaceForSubMenuX = ContextMenuParent.ContainerWidth - location.X - width;
                }

                switch (openType)
                {
                case ContextMenuOpenType.RightBottom:
                    Canvas.SetLeft(contextMenu, location.X);
                    Canvas.SetTop(contextMenu, location.Y);
                    break;

                case ContextMenuOpenType.RightTop:
                    Canvas.SetLeft(contextMenu, location.X);
                    Canvas.SetTop(contextMenu, location.Y - height);
                    break;

                case ContextMenuOpenType.LeftBottom:
                    Canvas.SetLeft(contextMenu, location.X - width);
                    Canvas.SetTop(contextMenu, location.Y);
                    break;

                case ContextMenuOpenType.LeftTop:
                    Canvas.SetLeft(contextMenu, location.X - width);
                    Canvas.SetTop(contextMenu, location.Y - height);
                    break;
                }
            }
        }
 protected override void Because()
 {
     _contextMenu = sut.CreateFor(_viewItem, _presenter).DowncastTo <ContextMenuBase>();
 }
Example #6
0
 public void SetLastRightClickInfo(string type, string link)
 {
     form.InvokeAsyncSafe(() => ContextMenuBase.SetContextInfo(type, link));
 }
Example #7
0
 public void Unregister(ContextMenuBase menu)
 {
     _initializedMenus.Remove(menu.Id);
 }
Example #8
0
 public void Register(ContextMenuBase menu)
 {
     _initializedMenus[menu.Id] = menu;
 }