Example #1
0
 public MenuGroupViewModel(string name, TargetMenuType targetMenu, TargetMainMenuItemType targetMenuItem)
 {
     Name           = name;
     TargetMenu     = targetMenu;
     TargetMenuItem = targetMenuItem;
     MenuItems      = new MenuItemViewModelCollection();
 }
Example #2
0
        private static ToolStripItemDisplayStyle GetDisplayStyle(
            MenuItemDisplayStyle displayStyle,
            bool image,
            TargetMenuType menuType)
        {
            switch (displayStyle)
            {
            case MenuItemDisplayStyle.Default:
                return(menuType == TargetMenuType.Toolbar
                                                ? image
                                                        ? ToolStripItemDisplayStyle.Image
                                                        : ToolStripItemDisplayStyle.Text
                                                : ToolStripItemDisplayStyle.ImageAndText);

            case MenuItemDisplayStyle.Text:
                return(ToolStripItemDisplayStyle.Text);

            case MenuItemDisplayStyle.Image:
                return(ToolStripItemDisplayStyle.Image);

            case MenuItemDisplayStyle.TextAndImage:
                return(ToolStripItemDisplayStyle.ImageAndText);
            }
            throw new ApplicationException();
        }
Example #3
0
 private Image GetImage(string name, TargetMenuType menuType)
 {
     return(name != null
                         ? _styleImageManager.TryGetImage(
                name,
                (menuType == TargetMenuType.Menu ||
                 menuType == TargetMenuType.ContextMenu ||
                 _useSmallImages
                                         ? StyleImageType.Small
                                         : StyleImageType.Default))
                         : null);
 }
Example #4
0
 private void InitStripItem(
     ToolStripItem toolStripItem,
     IMenuItemWithTextAndImage menuItem,
     TargetMenuType menuType)
 {
     toolStripItem.Text         = menuItem.Text;
     toolStripItem.ImageScaling = ToolStripItemImageScaling.None;
     toolStripItem.Image        = GetImage(menuItem.Image, menuType);
     toolStripItem.DisplayStyle = GetDisplayStyle(
         menuItem.DisplayStyle, menuItem.Image != null, menuType);
     toolStripItem.Tag = menuItem;
     if (menuItem.Description != null)
     {
         toolStripItem.ToolTipText = menuItem.Description;
     }
 }
Example #5
0
        private ToolStripItem[] CreateStripItems(IEnumerable <IMenuGroup> groups, TargetMenuType menuType)
        {
            var context = new MenuGeneratorContext(menuType);

            foreach (var group in groups)
            {
                if (context.Result.Count > 0)
                {
                    context.Result.Add(new ToolStripSeparator());
                }

                foreach (var item in group.Items)
                {
                    item.AcceptVisitor(this, context);
                }
            }

            return(context.Result.ToArray());
        }
Example #6
0
        public StripMenuGenerator(
            [NotNull] IServiceProvider serviceProvider,
            [NotNull] ToolStrip toolStrip,
            [NotNull] string menuName,
            bool useSmallImages)
        {
            if (serviceProvider == null)
            {
                throw new ArgumentNullException("serviceProvider");
            }
            if (menuName == null)
            {
                throw new ArgumentNullException("menuName");
            }
            if (toolStrip == null)
            {
                throw new ArgumentNullException("toolStrip");
            }

            _serviceProvider = serviceProvider;
            _toolStrip       = toolStrip;
            _menuName        = menuName;
            _useSmallImages  = useSmallImages;

            if (toolStrip is ContextMenuStrip)
            {
                _menuType = TargetMenuType.ContextMenu;
            }
            else if (toolStrip is MenuStrip || toolStrip is ToolStripDropDownMenu)
            {
                _menuType = TargetMenuType.Menu;
            }
            else
            {
                _menuType = TargetMenuType.Toolbar;
            }

            _styleImageManager     = _serviceProvider.GetRequiredService <IStyleImageManager>();
            _menuService           = _serviceProvider.GetRequiredService <IMenuService>();
            _commandHandlerService = _serviceProvider.GetRequiredService <ICommandHandlerService>();
            _defaultCommandService = _serviceProvider.GetService <IDefaultCommandService>();
            _checkStateService     = _serviceProvider.GetService <ICheckStateService>();

            _uiAsyncOperation = _serviceProvider.GetRequiredService <IUIShell>().CreateUIAsyncOperation();

            Init();

            _disposables.Add(
                _menuService
                .MenuChanged
                .Where(changedMenuName => changedMenuName == _menuName)
                .Subscribe(arg => Init()));

            _disposables.Add(
                _commandHandlerService.SubscribeCommandStatusChanged(_serviceProvider, CommandStatusChanged));

            if (_checkStateService != null)
            {
                _disposables.Add(
                    _checkStateService.SubscribeCheckStateChanged(_serviceProvider, CheckStateChanged));
            }

            if (_defaultCommandService != null)
            {
                _disposables.Add(
                    _defaultCommandService.DefaultCommandChanged.Subscribe(
                        arg => _uiAsyncOperation.Post(Init)));
            }
        }
Example #7
0
 private static ToolStripItem CreateStripButton(TargetMenuType menuType)
 {
     return(menuType == TargetMenuType.Toolbar
                         ? new ToolStripButton()
                         : (ToolStripItem) new ToolStripMenuItem());
 }
Example #8
0
 public MenuGeneratorContext(TargetMenuType menuType)
 {
     _menuType = menuType;
     _result   = new List <ToolStripItem>();
 }