diff options
author | Eric Maupin <ermaup@microsoft.com> | 2018-09-14 19:40:19 +0300 |
---|---|---|
committer | Eric Maupin <ermaup@microsoft.com> | 2018-11-12 22:17:15 +0300 |
commit | afd2f005a37ae33ba861e0e9f23b14f3cfe3a5de (patch) | |
tree | 2b6a1640d65da96ef9b003669ba086351604b93d /Xamarin.PropertyEditing.Mac/Controls | |
parent | c905b9534dbe248dde3aa430cd536d20be8ff5e7 (diff) |
[mac] Breakout common editor access
Since Cocoa is so readily dependent on sub-classing we need to switch to interfaces to
commonize our access to things we need on the various controls. Not everything can
sub-class from PropertyEditorControl.
Diffstat (limited to 'Xamarin.PropertyEditing.Mac/Controls')
3 files changed, 36 insertions, 2 deletions
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/BrushTabViewController.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/BrushTabViewController.cs index a8d021f..fd6a4c2 100644 --- a/Xamarin.PropertyEditing.Mac/Controls/Custom/BrushTabViewController.cs +++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/BrushTabViewController.cs @@ -10,7 +10,8 @@ using Xamarin.PropertyEditing.ViewModels; namespace Xamarin.PropertyEditing.Mac { - internal class BrushTabViewController : UnderlinedTabViewController<BrushPropertyViewModel> + internal class BrushTabViewController + : UnderlinedTabViewController<BrushPropertyViewModel>, IEditorView { public BrushTabViewController () { @@ -34,6 +35,13 @@ namespace Xamarin.PropertyEditing.Mac TabStack.AddView (this.filterResource, NSStackViewGravity.Leading); } + EditorViewModel IEditorView.ViewModel { + get { return this.ViewModel; } + set { ViewModel = (BrushPropertyViewModel)value; } + } + + NSView IEditorView.NativeView => View; + public override void OnViewModelChanged (BrushPropertyViewModel oldModel) { this.inhibitSelection = true; diff --git a/Xamarin.PropertyEditing.Mac/Controls/IEditorView.cs b/Xamarin.PropertyEditing.Mac/Controls/IEditorView.cs new file mode 100644 index 0000000..6793622 --- /dev/null +++ b/Xamarin.PropertyEditing.Mac/Controls/IEditorView.cs @@ -0,0 +1,17 @@ +using AppKit; + +using Xamarin.PropertyEditing.ViewModels; + +namespace Xamarin.PropertyEditing.Mac +{ + internal interface IEditorView + { + /// <summary> + /// Gets the native view. + /// </summary> + /// <value>Generally just `this`.</value> + NSView NativeView { get; } + + EditorViewModel ViewModel { get; set; } + } +} diff --git a/Xamarin.PropertyEditing.Mac/Controls/PropertyEditorControl.cs b/Xamarin.PropertyEditing.Mac/Controls/PropertyEditorControl.cs index 20b8736..440f974 100644 --- a/Xamarin.PropertyEditing.Mac/Controls/PropertyEditorControl.cs +++ b/Xamarin.PropertyEditing.Mac/Controls/PropertyEditorControl.cs @@ -7,7 +7,8 @@ using Xamarin.PropertyEditing.ViewModels; namespace Xamarin.PropertyEditing.Mac { - internal abstract class PropertyEditorControl : BaseEditorControl + internal abstract class PropertyEditorControl + : BaseEditorControl, IEditorView { public string Label { get; set; } @@ -46,6 +47,14 @@ namespace Xamarin.PropertyEditing.Mac } } + EditorViewModel IEditorView.ViewModel + { + get { return this.ViewModel; } + set { ViewModel = (PropertyViewModel)value; } + } + + NSView IEditorView.NativeView => this; + [Export ("_primitiveSetDefaultNextKeyView:")] public void SetDefaultNextKeyView (NSView child) { |