private void MovePopup() { if (!IsResident && !popup.IsOpen) { return; } if (!IsResident) { Candidates = CandidatesGenerator?.GenerateCandidates(textBox.Text); } if (popupListBox.Items.Count != 0) { if (popupListBox.SelectedIndex == -1) { popupListBox.SelectedIndex = 0; } popup.IsOpen = true; popup.PlacementTarget = textBox; popup.PlacementRectangle = textBox.GetRectFromCharacterIndex(textBox.CaretIndex); popupListBox.UpdateLayout(); AdjustPopupLocation(); } else { popup.IsOpen = false; } }
private void textBox_GotFocus(object sender, RoutedEventArgs e) { if (IsResident) { popup.IsOpen = true; Candidates = CandidatesGenerator?.GenerateCandidates(textBox.Text); } MovePopup(); }
public void AddOptionLazy() { var input = "hah -searchTarget:"; var generator = new CandidatesGenerator(Syntax); var result = generator.GenerateCandidates(input); Assert.AreEqual(2, result.Count()); var optionArgTextBox = new ArgumentRule("TextBox", MockMethods.TextBox); var targetArgs = Syntax[0].OptionalArgs.ElementAt(1).OptionalArgs; targetArgs.Add(optionArgTextBox); result = generator.GenerateCandidates(input); Assert.AreEqual(3, result.Count()); CollectionAssert.AreEqual(targetArgs.Select(x => x.Name).ToArray(), result.Select(x => x.Name).ToArray()); }
private void textBox_Loaded(object sender, RoutedEventArgs e) { if (!string.IsNullOrEmpty(textBox.Text)) { IsTextValid(textBox.Text); } // GetCandidates Observable.FromEvent <TextChangedEventHandler, TextChangedEventArgs>( action => (s, ev) => action(ev), h => textBox.TextChanged += h, h => textBox.TextChanged -= h) .Where(_ => IsResident) .Select(text => textBox.Text) .Select(text => Task.Run(() => CandidatesGenerator?.GenerateCandidates(text))) .Switch() .ObserveOnDispatcher() .Select(candidates => Candidates = candidates) .Subscribe(_ => MovePopup()); }
public void Setup() { Syntax = new CommandSyntax(); Parser = new CommandParser(Syntax); Validator = new CommandValidator(Parser, new MockLocalizer()); MockMethods = new MockCommand(); Generator = new CandidatesGenerator(Syntax); Switch = new ArgumentRule("switch", MockMethods.Switch); Click = new ArgumentRule("click", MockMethods.Click); RightClick = new ArgumentRule("rightclick", MockMethods.RightClick); DoubleClick = new ArgumentRule("doubleclick", MockMethods.DoubleClick); ArgApplication = new ArgumentRule("application", MockMethods.Application, ArgsFactory(Switch)); ArgWindow = new ArgumentRule("window", MockMethods.Window, ArgsFactory(Click, RightClick, DoubleClick)); ArgTaskbar = new ArgumentRule("taskbar", MockMethods.Taskbar, ArgsFactory(Click, RightClick)); ArgDividedscreen = new ArgumentRule("windowdividedscreen", MockMethods.WindowDividedScreen, ArgsFactory(Click, DoubleClick)); ArgText = new ArgumentRule("Text", MockMethods.Text); ArgCommand = new ArgumentRule("Command", MockMethods.Command); ArgInItemsControl = new ArgumentRule("TextInItemsControl", MockMethods.TextInItemsControl); OptButton = new ArgumentRule("Button", MockMethods.Button); OptCheckBox = new ArgumentRule("CheckBox", MockMethods.CheckBox); OptGenerator = new ArgumentRule("-hintGenerator", MockMethods.HintGenerator); OptTarget = new ArgumentRule("-searchTarget", MockMethods.SearchTarget, null, ArgsFactory(OptButton, OptCheckBox)); Hah = new CommandRule("hah", MockMethods.HitaHint, ArgsFactory(ArgWindow, ArgApplication, ArgTaskbar, ArgDividedscreen), ArgsFactory(OptGenerator, OptTarget)); SearchByText = new CommandRule("/", MockMethods.SearchByText, ArgsFactory(ArgText, ArgCommand, ArgInItemsControl), ArgsFactory(OptTarget)); Hah2 = new CommandRule("hah2", MockMethods.HitaHint2, ArgsFactory(ArgWindow, ArgDividedscreen)); MouseEmulation = new CommandRule("me", MockMethods.MouseEmulation); Syntax.Add(Hah); Syntax.Add(SearchByText); Syntax.Add(Hah2); Syntax.Add(MouseEmulation); }