Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xamarin/Xamarin.PropertyEditing.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Maupin <ermaup@microsoft.com>2018-09-14 19:40:19 +0300
committerEric Maupin <ermaup@microsoft.com>2018-11-12 22:17:15 +0300
commitafd2f005a37ae33ba861e0e9f23b14f3cfe3a5de (patch)
tree2b6a1640d65da96ef9b003669ba086351604b93d /Xamarin.PropertyEditing.Mac
parentc905b9534dbe248dde3aa430cd536d20be8ff5e7 (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')
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/BrushTabViewController.cs10
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/IEditorView.cs17
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/PropertyEditorControl.cs11
-rw-r--r--Xamarin.PropertyEditing.Mac/PropertyEditorSelector.cs4
-rw-r--r--Xamarin.PropertyEditing.Mac/PropertyTableDelegate.cs7
-rw-r--r--Xamarin.PropertyEditing.Mac/Xamarin.PropertyEditing.Mac.csproj1
6 files changed, 43 insertions, 7 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)
{
diff --git a/Xamarin.PropertyEditing.Mac/PropertyEditorSelector.cs b/Xamarin.PropertyEditing.Mac/PropertyEditorSelector.cs
index 3b6a057..e1ca8fb 100644
--- a/Xamarin.PropertyEditing.Mac/PropertyEditorSelector.cs
+++ b/Xamarin.PropertyEditing.Mac/PropertyEditorSelector.cs
@@ -9,7 +9,7 @@ namespace Xamarin.PropertyEditing.Mac
{
internal class PropertyEditorSelector
{
- public virtual PropertyEditorControl GetEditor (EditorViewModel vm)
+ public virtual IEditorView GetEditor (EditorViewModel vm)
{
Type[] genericArgs = null;
Type controlType;
@@ -32,7 +32,7 @@ namespace Xamarin.PropertyEditing.Mac
controlType = controlType.MakeGenericType (genericArgs);
}
- return (PropertyEditorControl)Activator.CreateInstance (controlType);
+ return (IEditorView)Activator.CreateInstance (controlType);
}
private static readonly Dictionary<Type, Type> ViewModelTypes = new Dictionary<Type, Type> {
diff --git a/Xamarin.PropertyEditing.Mac/PropertyTableDelegate.cs b/Xamarin.PropertyEditing.Mac/PropertyTableDelegate.cs
index 6b64057..9b4c750 100644
--- a/Xamarin.PropertyEditing.Mac/PropertyTableDelegate.cs
+++ b/Xamarin.PropertyEditing.Mac/PropertyTableDelegate.cs
@@ -213,10 +213,11 @@ namespace Xamarin.PropertyEditing.Mac
var view = (PropertyEditorControl)outlineView.MakeView (identifier, this);
if (view != null)
return view;
-
+
if (vm != null) {
- view = this.editorSelector.GetEditor (vm);
- if (view != null) {
+ IEditorView editor = this.editorSelector.GetEditor (vm);
+ if (editor != null) {
+ view = (PropertyEditorControl)editor.NativeView;
view.Identifier = identifier;
view.TableView = outlineView;
}
diff --git a/Xamarin.PropertyEditing.Mac/Xamarin.PropertyEditing.Mac.csproj b/Xamarin.PropertyEditing.Mac/Xamarin.PropertyEditing.Mac.csproj
index b4a8a29..0023e31 100644
--- a/Xamarin.PropertyEditing.Mac/Xamarin.PropertyEditing.Mac.csproj
+++ b/Xamarin.PropertyEditing.Mac/Xamarin.PropertyEditing.Mac.csproj
@@ -137,6 +137,7 @@
<Compile Include="Controls\PanelHeaderEditorControl.cs" />
<Compile Include="Controls\ThicknessEditorControl.cs" />
<Compile Include="PropertyEditorSelector.cs" />
+ <Compile Include="Controls\IEditorView.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="Controls\" />