private void OnTypeRequested(object sender, TypeRequestedEventArgs e) { var vsender = (ObjectPropertyViewModel)sender; var panel = this.FindPropertiesHost(); ITypeInfo type = TypeSelectorWindow.RequestType(panel, vsender.AssignableTypes); e.SelectedType = Task.FromResult(type); }
private void OnTypeRequested(object sender, TypeRequestedEventArgs e) { var vm = (ObjectPropertyViewModel)sender; var panel = this.FindParent <PropertyEditorPanel> (); ITypeInfo type = TypeSelectorWindow.RequestType(panel, vm.AssignableTypes); e.SelectedType = type; }
public static Task <ITypeInfo> RequestAt(this TypeRequestedEventArgs self, IHostResourceProvider hostResources, NSView source, AsyncValue <IReadOnlyDictionary <IAssemblyInfo, ILookup <string, ITypeInfo> > > assignableTypes) { var tcs = new TaskCompletionSource <ITypeInfo> (); var vm = new TypeSelectorViewModel(assignableTypes); var selector = new TypeSelectorControl { ViewModel = vm, Appearance = source.EffectiveAppearance }; vm.PropertyChanged += (vms, ve) => { if (ve.PropertyName == nameof(TypeSelectorViewModel.SelectedType)) { tcs.TrySetResult(vm.SelectedType); } }; var popover = new AutoClosePopOver(hostResources, hostResources.GetVibrantAppearance(source.EffectiveAppearance)) { Delegate = new PopoverDelegate <ITypeInfo> (tcs), ContentViewController = new NSViewController { View = selector, PreferredContentSize = new CoreGraphics.CGSize(360, 335) }, }; tcs.Task.ContinueWith(t => { // Focus back to the button that popped us up source.Superview?.Window?.MakeFirstResponder(source); popover.PerformClose(popover); popover.Dispose(); }, TaskScheduler.FromCurrentSynchronizationContext()); popover.Show(source.Frame, source.Superview, NSRectEdge.MinYEdge); return(tcs.Task); }
private void OnTypeRequested(object sender, TypeRequestedEventArgs e) { e.SelectedType = e.RequestAt(HostResources, this.selectType, ViewModel.AssignableTypes); }
private void OnTypeRequested(object sender, TypeRequestedEventArgs args) { args.SelectedType = Task.FromResult(TypeSelectorWindow.RequestType(this, ((CollectionPropertyViewModel)DataContext).AssignableTypes)); }