示例#1
0
        public MyMenuItem Add(MyMenuItem item)
        {
            base.Add(item);

            item.Click += (e) => ItemClicked?.Invoke(item);

            MenuItemAdded?.Invoke(item);
            return(item);
        }
示例#2
0
        public void Setup()
        {
            _menu = new Menu();

            _command = new AddMenuItem
            {
                SiteId                = _menu.SiteId,
                MenuId                = Guid.NewGuid(),
                MenuItemId            = Guid.NewGuid(),
                MenuItemType          = MenuItemType.Link,
                PageId                = Guid.NewGuid(),
                Link                  = "link",
                Text                  = "Text",
                Title                 = "Title",
                MenuItemLocalisations = new List <MenuItemDetails.MenuItemLocalisation>
                {
                    new MenuItemDetails.MenuItemLocalisation
                    {
                        LanguageId = Guid.NewGuid(),
                        Text       = "Text 1",
                        Title      = "Title 1"
                    },
                    new MenuItemDetails.MenuItemLocalisation
                    {
                        LanguageId = Guid.NewGuid(),
                        Text       = "Text 2",
                        Title      = "Title 2"
                    }
                }
            };

            _validatorMock = new Mock <IValidator <AddMenuItem> >();
            _validatorMock.Setup(x => x.Validate(_command)).Returns(new ValidationResult());

            _menu.AddMenuItem(_command, _validatorMock.Object);

            _menuItem = _menu.MenuItems.FirstOrDefault(c => c.Id == _command.MenuItemId);

            _firstMenuItemLocalisation = _menuItem.MenuItemLocalisations.FirstOrDefault();

            _event = _menu.Events.OfType <MenuItemAdded>().SingleOrDefault();
        }
示例#3
0
 public async Task Handle(MenuItemAdded @event)
 {
     await ClearCache(@event.SiteId, @event.Name);
 }
示例#4
0
 private void Apply(MenuItemAdded @event)
 {
     MenuItems.Add(@event.MenuItem);
 }
示例#5
0
 public void Handle(MenuItemAdded @event)
 {
     ClearCache(@event.SiteId, @event.Name);
 }
        /// <summary>
        /// Updates the suggestions for the current word or all text whenever
        /// the text changes. Opens the suggestions if they don't exist.
        /// </summary>
        private void RefreshSuggestions()
        {
            //Clears all old suggestions.
            gui.suggestions.Items.Clear();

            //Builds a list of all suggested items.
            var filteredSuggestions = new List <Tuple <string, string> >();
            var otherSuggestions    = new List <Tuple <string, string> >();

            int suggestionsAllowed = 10;

            //Adds each suggestion up to the max allowed.
            string userText = String.Empty;

            if ((!searchByWord || gui.textbox.Text == string.Empty))
            {
                userText = RemoveDiacritics(gui.textbox.Text.ToLower());
            }
            else
            {
                var words = gui.textbox.Text.Split(' ');
                userText = RemoveDiacritics(words[words.Length - 1].ToLower());
            }

            //Records suggestions for StartsWith and Contains separately.
            for (int i = 0; i < suggestions.Count; i++)
            {
                string searchText =
                    RemoveDiacritics(suggestions[i].Item1.ToLower());

                if (searchText.StartsWith(userText))
                {
                    filteredSuggestions.Add(suggestions[i]);
                }
                else if (searchText.Contains(userText) &&
                         filteredSuggestions.Count + otherSuggestions.Count
                         < suggestionsAllowed)
                {
                    otherSuggestions.Add(suggestions[i]);
                }

                if (filteredSuggestions.Count == suggestionsAllowed)
                {
                    break;
                }
            }

            //Adds to the filtered suggestions up to the max count.
            if (filteredSuggestions.Count < suggestionsAllowed)
            {
                for (int i = 0; i < otherSuggestions.Count; i++)
                {
                    filteredSuggestions.Add(otherSuggestions[i]);
                    if (filteredSuggestions.Count == suggestionsAllowed)
                    {
                        break;
                    }
                }
            }

            //Creates a gui item for each match. Matches will
            //appear in sorted order since original file is sorted.
            for (int i = 0; i < filteredSuggestions.Count; i++)
            {
                ListBoxItem item = new ListBoxItem();
                item.Content = filteredSuggestions[i].Item1;

                //Clicking selects the item.
                item.PreviewMouseLeftButtonDown += (sender, e) =>
                {
                    SelectSuggestion((string)item.Content);
                };

                //Pressing enter selects the item.
                item.KeyDown += (sender, e) =>
                {
                    if (e.Key == System.Windows.Input.Key.Enter)
                    {
                        SelectSuggestion((string)item.Content);
                    }
                };

                gui.suggestions.Items.Add(item);

                MenuItemAdded?.Invoke(item);
            }

            //Hides or un-hides the suggestions as appropriate.
            if (filteredSuggestions.Count != 0 &&
                !string.IsNullOrWhiteSpace(gui.textbox.Text))
            {
                gui.suggestions.Visibility = System.Windows.Visibility.Visible;
            }
            else
            {
                gui.suggestions.Visibility = System.Windows.Visibility.Collapsed;
            }
        }
示例#7
0
文件: Menu.cs 项目: pdeparcq/mylunch
        public void Apply(MenuItemAdded e)
        {
            var group = Groups.First(g => g.Id == e.GroupId);

            Items.Add(new MenuItem(e.Id, e.GroupId, e.ProductName, e.ProductDescription, e.Price));
        }