diff options
author | Eric Maupin <ermaup@microsoft.com> | 2018-04-18 22:23:14 +0300 |
---|---|---|
committer | Eric Maupin <ermaup@microsoft.com> | 2018-05-01 00:53:55 +0300 |
commit | fa28e9cca17eb158ea9a59202f448b041c43a9f4 (patch) | |
tree | 21a1277a7fc23ed351c1b8a50120c6f54f0f2296 | |
parent | d6321d4d839b8515d76e8ea5b5e7a5e2a3c84557 (diff) |
[Core] Move IEditorProvider into TargetPlatform
16 files changed, 108 insertions, 117 deletions
diff --git a/Xamarin.PropertyEditing.Tests/BrushPropertyViewModelTests.cs b/Xamarin.PropertyEditing.Tests/BrushPropertyViewModelTests.cs index 952266b..d0f0f95 100644 --- a/Xamarin.PropertyEditing.Tests/BrushPropertyViewModelTests.cs +++ b/Xamarin.PropertyEditing.Tests/BrushPropertyViewModelTests.cs @@ -20,7 +20,7 @@ namespace Xamarin.PropertyEditing.Tests mockProperty.SetupGet (pi => pi.Type).Returns (typeof (CommonBrush)); var mockEditor = new MockObjectEditor (mockProperty.Object); - var vm = new BrushPropertyViewModel (TargetPlatform.Default, mockProperty.Object, new[] { mockEditor }); + var vm = new BrushPropertyViewModel (MockEditorProvider.MockPlatform, mockProperty.Object, new[] { mockEditor }); var changed = false; vm.PropertyChanged += (s, e) => { if (e.PropertyName == nameof(BrushPropertyViewModel.Opacity)) { @@ -37,7 +37,7 @@ namespace Xamarin.PropertyEditing.Tests var mockProperty = new Mock<IPropertyInfo> (); mockProperty.SetupGet (pi => pi.Type).Returns (typeof (CommonBrush)); var mockEditor = new MockObjectEditor (mockProperty.Object); - var vm = new BrushPropertyViewModel (TargetPlatform.Default, mockProperty.Object, new [] { mockEditor }); + var vm = new BrushPropertyViewModel (MockEditorProvider.MockPlatform, mockProperty.Object, new [] { mockEditor }); vm.ResourceProvider = new MockResourceProvider (); var changed = false; vm.PropertyChanged += (s, e) => { @@ -58,7 +58,7 @@ namespace Xamarin.PropertyEditing.Tests var mockProperty = new Mock<IPropertyInfo> (); mockProperty.SetupGet (pi => pi.Type).Returns (typeof (CommonBrush)); var mockEditor = new MockObjectEditor (mockProperty.Object); - var vm = new BrushPropertyViewModel (TargetPlatform.Default, mockProperty.Object, new [] { mockEditor }); + var vm = new BrushPropertyViewModel (MockEditorProvider.MockPlatform, mockProperty.Object, new [] { mockEditor }); var changed = false; vm.PropertyChanged += (s, e) => { diff --git a/Xamarin.PropertyEditing.Tests/EventViewModelTests.cs b/Xamarin.PropertyEditing.Tests/EventViewModelTests.cs index fa65f76..994e417 100644 --- a/Xamarin.PropertyEditing.Tests/EventViewModelTests.cs +++ b/Xamarin.PropertyEditing.Tests/EventViewModelTests.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -25,7 +25,7 @@ namespace Xamarin.PropertyEditing.Tests const string handler = "handler"; editor.AttachHandlerAsync (info.Object, handler); - var ev = new EventViewModel (TargetPlatform.Default, info.Object, new[] { editor }); + var ev = new EventViewModel (MockEditorProvider.MockPlatform, info.Object, new[] { editor }); Assert.That (ev.MethodName, Is.EqualTo (handler)); } @@ -41,7 +41,7 @@ namespace Xamarin.PropertyEditing.Tests var eeditor = editor.As<IObjectEventEditor> (); eeditor.SetupGet (e => e.Events).Returns (new[] { info.Object }); - var vm = new EventViewModel (TargetPlatform.Default, info.Object, new[] { editor.Object }); + var vm = new EventViewModel (MockEditorProvider.MockPlatform, info.Object, new[] { editor.Object }); Assume.That (vm.MethodName, Is.Null); bool changed = false; @@ -69,7 +69,7 @@ namespace Xamarin.PropertyEditing.Tests var eeditor = editor.As<IObjectEventEditor> (); eeditor.SetupGet (e => e.Events).Returns (new[] { info.Object }); eeditor.Setup (e => e.GetHandlersAsync (info.Object)).ReturnsAsync (new[] { oldHandler }); - var vm = new EventViewModel (TargetPlatform.Default, info.Object, new[] { editor.Object }); + var vm = new EventViewModel (MockEditorProvider.MockPlatform, info.Object, new[] { editor.Object }); Assume.That (vm.MethodName, Is.EqualTo (oldHandler)); bool changed = false; @@ -104,7 +104,7 @@ namespace Xamarin.PropertyEditing.Tests }; editor.AttachHandlerAsync (info.Object, "handler2"); - var ev = new EventViewModel (TargetPlatform.Default, info.Object, new[] { editor, editor2 }); + var ev = new EventViewModel (MockEditorProvider.MockPlatform, info.Object, new[] { editor, editor2 }); Assert.That (ev.MethodName, Is.Null); Assert.That (ev.MultipleValues, Is.True); diff --git a/Xamarin.PropertyEditing.Tests/MaterialDesignColorViewModelTests.cs b/Xamarin.PropertyEditing.Tests/MaterialDesignColorViewModelTests.cs index 8ee38a6..b816965 100644 --- a/Xamarin.PropertyEditing.Tests/MaterialDesignColorViewModelTests.cs +++ b/Xamarin.PropertyEditing.Tests/MaterialDesignColorViewModelTests.cs @@ -284,7 +284,7 @@ namespace Xamarin.PropertyEditing.Tests private static BrushPropertyViewModel PrepareMockViewModel () { - var platform = new TargetPlatform { + var platform = new TargetPlatform (new MockEditorProvider()) { SupportsMaterialDesign = true }; var mockProperty = new Mock<IPropertyInfo> (); diff --git a/Xamarin.PropertyEditing.Tests/MockEditorProvider.cs b/Xamarin.PropertyEditing.Tests/MockEditorProvider.cs index 0f6a6de..047f8e9 100644 --- a/Xamarin.PropertyEditing.Tests/MockEditorProvider.cs +++ b/Xamarin.PropertyEditing.Tests/MockEditorProvider.cs @@ -9,6 +9,8 @@ namespace Xamarin.PropertyEditing.Tests public class MockEditorProvider : IEditorProvider { + public static readonly TargetPlatform MockPlatform = new TargetPlatform (new MockEditorProvider ()); + public Task<IObjectEditor> GetObjectEditorAsync (object item) { if (this.editorCache.TryGetValue (item, out IObjectEditor cachedEditor)) { diff --git a/Xamarin.PropertyEditing.Tests/ObjectPropertyViewModelTests.cs b/Xamarin.PropertyEditing.Tests/ObjectPropertyViewModelTests.cs index 4536da7..426cdd7 100644 --- a/Xamarin.PropertyEditing.Tests/ObjectPropertyViewModelTests.cs +++ b/Xamarin.PropertyEditing.Tests/ObjectPropertyViewModelTests.cs @@ -42,7 +42,7 @@ namespace Xamarin.PropertyEditing.Tests var providerMock = CreateProviderMock (value, new MockObjectEditor { Target = value }); - var vm = new ObjectPropertyViewModel (providerMock.Object, TargetPlatform.Default, p.Object, new[] { editor }); + var vm = new ObjectPropertyViewModel (new TargetPlatform (providerMock.Object), p.Object, new[] { editor }); bool requested = false; vm.TypeRequested += (sender, args) => { @@ -76,7 +76,7 @@ namespace Xamarin.PropertyEditing.Tests var providerMock = CreateProviderMock (value, new MockObjectEditor { Target = value }); - var vm = new ObjectPropertyViewModel (providerMock.Object, TargetPlatform.Default, p.Object, new[] { editor }); + var vm = new ObjectPropertyViewModel (new TargetPlatform (providerMock.Object), p.Object, new[] { editor }); bool requested = false; vm.TypeRequested += (sender, args) => { @@ -117,7 +117,7 @@ namespace Xamarin.PropertyEditing.Tests var providerMock = CreateProviderMock (value, new MockObjectEditor { Target = value }); - var vm = new ObjectPropertyViewModel (providerMock.Object, TargetPlatform.Default, p.Object, new[] { editor, editor2 }); + var vm = new ObjectPropertyViewModel (new TargetPlatform (providerMock.Object), p.Object, new[] { editor, editor2 }); Assert.That (vm.ValueSource, Is.EqualTo (ValueSource.Unknown)); } @@ -140,7 +140,7 @@ namespace Xamarin.PropertyEditing.Tests var providerMock = CreateProviderMock (value, new MockObjectEditor { Target = value }); - var vm = new ObjectPropertyViewModel (providerMock.Object, TargetPlatform.Default, p.Object, new[] { editor }); + var vm = new ObjectPropertyViewModel (new TargetPlatform (providerMock.Object), p.Object, new[] { editor }); Assume.That (vm.ValueSource, Is.EqualTo (ValueSource.Local)); bool changed = false; @@ -162,7 +162,7 @@ namespace Xamarin.PropertyEditing.Tests var p = CreatePropertyMock ("prop"); var providerMock = CreateProviderMock (value, new MockObjectEditor { Target = value }); - var vm = new ObjectPropertyViewModel (providerMock.Object, TargetPlatform.Default, p.Object, new IObjectEditor[0]); + var vm = new ObjectPropertyViewModel (new TargetPlatform (providerMock.Object), p.Object, new IObjectEditor[0]); Assume.That (vm.ValueType, Is.Null); Assume.That (vm.ValueSource, Is.EqualTo (ValueSource.Default)); @@ -192,7 +192,7 @@ namespace Xamarin.PropertyEditing.Tests var providerMock = CreateProviderMock (value, new MockObjectEditor { Target = value }); - var vm = new ObjectPropertyViewModel (providerMock.Object, TargetPlatform.Default, p.Object, new IObjectEditor[0]); + var vm = new ObjectPropertyViewModel (new TargetPlatform (providerMock.Object), p.Object, new IObjectEditor[0]); Assert.That (vm.CanDelve, Is.False); bool changed = false; @@ -250,7 +250,7 @@ namespace Xamarin.PropertyEditing.Tests var providerMock = CreateProviderMock (value, new MockObjectEditor { Target = value }); providerMock.Setup (a => a.GetObjectEditorAsync (value2)).ReturnsAsync (new MockObjectEditor { Target = value2 }); - var vm = new ObjectPropertyViewModel (providerMock.Object, TargetPlatform.Default, p.Object, new[] { editor, editor2 }); + var vm = new ObjectPropertyViewModel (new TargetPlatform (providerMock.Object), p.Object, new[] { editor, editor2 }); Assume.That (vm.ValueSource, Is.EqualTo (ValueSource.Local)); Assert.That (vm.ValueType, Is.Null); } diff --git a/Xamarin.PropertyEditing.Tests/PanelViewModelTests.cs b/Xamarin.PropertyEditing.Tests/PanelViewModelTests.cs index 3128b02..f7a1e74 100644 --- a/Xamarin.PropertyEditing.Tests/PanelViewModelTests.cs +++ b/Xamarin.PropertyEditing.Tests/PanelViewModelTests.cs @@ -31,7 +31,7 @@ namespace Xamarin.PropertyEditing.Tests var editor = await provider.GetObjectEditorAsync (obj); Assume.That (editor.Properties.Count, Is.EqualTo (1)); - var vm = new PanelViewModel (provider, TargetPlatform.Default); + var vm = new PanelViewModel (new TargetPlatform (provider)); vm.SelectedObjects.Add (obj); Assert.That (vm.Properties, Is.Not.Empty); @@ -59,7 +59,7 @@ namespace Xamarin.PropertyEditing.Tests providerMock.Setup (ep => ep.GetObjectEditorAsync (obj1)).ReturnsAsync (editor1Mock.Object); providerMock.Setup (ep => ep.GetObjectEditorAsync (obj2)).ReturnsAsync (editor2Mock.Object); - var vm = new PanelViewModel (providerMock.Object, TargetPlatform.Default); + var vm = new PanelViewModel (new TargetPlatform (providerMock.Object)); vm.SelectedObjects.Add (obj1); Assume.That (vm.Properties.Count, Is.EqualTo (1)); @@ -92,7 +92,7 @@ namespace Xamarin.PropertyEditing.Tests providerMock.Setup (ep => ep.GetObjectEditorAsync (obj1)).ReturnsAsync (editor1Mock.Object); providerMock.Setup (ep => ep.GetObjectEditorAsync (obj2)).ReturnsAsync (editor2Mock.Object); - var vm = new PanelViewModel (providerMock.Object, TargetPlatform.Default); + var vm = new PanelViewModel (new TargetPlatform (providerMock.Object)); vm.SelectedObjects.Add (obj2); Assume.That (vm.Properties.Count, Is.EqualTo (2)); @@ -114,7 +114,7 @@ namespace Xamarin.PropertyEditing.Tests var obj1 = new TestClass (); var obj2 = new TestClass (); - var vm = new PanelViewModel (provider, TargetPlatform.Default); + var vm = new PanelViewModel (new TargetPlatform (provider)); vm.SelectedObjects.Add (obj1); var property = vm.Properties[0]; @@ -137,7 +137,7 @@ namespace Xamarin.PropertyEditing.Tests var obj1 = new TestClass (); var obj2 = new TestClass (); - var vm = new PanelViewModel (provider, TargetPlatform.Default); + var vm = new PanelViewModel (new TargetPlatform (provider)); vm.SelectedObjects.Add (obj1); vm.SelectedObjects.Add (obj2); @@ -169,7 +169,7 @@ namespace Xamarin.PropertyEditing.Tests var provider = new Mock<IEditorProvider> (); provider.Setup (ep => ep.GetObjectEditorAsync (obj)).ReturnsAsync (editorMock.Object); - var vm = new PanelViewModel (provider.Object, TargetPlatform.Default); + var vm = new PanelViewModel (new TargetPlatform (provider.Object)); vm.SelectedObjects.Add (obj); Assume.That (vm.Properties.Count, Is.EqualTo (2)); @@ -199,7 +199,7 @@ namespace Xamarin.PropertyEditing.Tests var provider = new Mock<IEditorProvider> (); provider.Setup (ep => ep.GetObjectEditorAsync (obj)).ReturnsAsync (editorMock.Object); - var vm = new PanelViewModel (provider.Object, TargetPlatform.Default); + var vm = new PanelViewModel (new TargetPlatform (provider.Object)); vm.SelectedObjects.Add (obj); Assume.That (vm.Properties.Count, Is.EqualTo (1)); @@ -230,7 +230,7 @@ namespace Xamarin.PropertyEditing.Tests var provider = new Mock<IEditorProvider> (); provider.Setup (ep => ep.GetObjectEditorAsync (obj)).ReturnsAsync (editorMock.Object); - var vm = new PanelViewModel (provider.Object, TargetPlatform.Default); + var vm = new PanelViewModel (new TargetPlatform (provider.Object)); // We need access to the custom reset method here to ensure compliance // It's a bit hacky but this is unlikely to change. If it does, this test @@ -272,7 +272,7 @@ namespace Xamarin.PropertyEditing.Tests providerMock.Setup (ep => ep.GetObjectEditorAsync (baseObj)).ReturnsAsync (baseEditorMock.Object); providerMock.Setup (ep => ep.GetObjectEditorAsync (derivedObj)).ReturnsAsync (derivedEditorMock.Object); - var vm = new PanelViewModel (providerMock.Object, TargetPlatform.Default); + var vm = new PanelViewModel (new TargetPlatform (providerMock.Object)); vm.SelectedObjects.AddItems (new[] { baseObj, derivedObj }); Assume.That (vm.Properties.Count, Is.EqualTo (1)); @@ -306,7 +306,7 @@ namespace Xamarin.PropertyEditing.Tests providerMock.Setup (ep => ep.GetObjectEditorAsync (baseObj)).ReturnsAsync (baseEditorMock.Object); providerMock.Setup (ep => ep.GetObjectEditorAsync (derivedObj)).ReturnsAsync (derivedEditorMock.Object); - var vm = new PanelViewModel (providerMock.Object, TargetPlatform.Default); + var vm = new PanelViewModel (new TargetPlatform (providerMock.Object)); vm.SelectedObjects.AddItems (new[] { baseObj, derivedObj }); Assume.That (vm.Properties.Count, Is.EqualTo (1)); @@ -344,7 +344,7 @@ namespace Xamarin.PropertyEditing.Tests providerMock.Setup (ep => ep.GetObjectEditorAsync (baseObj)).ReturnsAsync (baseEditorMock.Object); providerMock.Setup (ep => ep.GetObjectEditorAsync (derivedObj)).ReturnsAsync (derivedEditorMock.Object); - var vm = new PanelViewModel (providerMock.Object, TargetPlatform.Default); + var vm = new PanelViewModel (new TargetPlatform (providerMock.Object)); vm.SelectedObjects.AddItems (new[] { baseObj, derivedObj }); Assume.That (vm.Properties.Count, Is.EqualTo (1)); @@ -386,7 +386,7 @@ namespace Xamarin.PropertyEditing.Tests }); provider.Setup (ep => ep.GetObjectEditorAsync (obj2)).ReturnsAsync (editor2.Object); - var vm = new PanelViewModel (provider.Object, TargetPlatform.Default); + var vm = new PanelViewModel (new TargetPlatform (provider.Object)); vm.SelectedObjects.Add (obj1); Assume.That (returnObject, Is.Not.Null); @@ -410,7 +410,7 @@ namespace Xamarin.PropertyEditing.Tests var editor = await provider.GetObjectEditorAsync (obj); Assume.That (editor.Properties.Count, Is.EqualTo (2)); - var vm = new PanelViewModel (provider, TargetPlatform.Default); + var vm = new PanelViewModel (new TargetPlatform (provider)); Assume.That (vm.ArrangeMode, Is.EqualTo (PropertyArrangeMode.Name)); vm.SelectedObjects.Add (obj); @@ -429,7 +429,7 @@ namespace Xamarin.PropertyEditing.Tests var editor = await provider.GetObjectEditorAsync (obj); Assume.That (editor.Properties.Count, Is.EqualTo (2)); - var vm = new PanelViewModel (provider, TargetPlatform.Default); + var vm = new PanelViewModel (new TargetPlatform (provider)); Assume.That (vm.ArrangeMode, Is.EqualTo (PropertyArrangeMode.Name)); vm.SelectedObjects.Add (obj); @@ -464,7 +464,7 @@ namespace Xamarin.PropertyEditing.Tests var editor = await provider.GetObjectEditorAsync (obj); Assume.That (editor.Properties.Count, Is.EqualTo (2)); - var vm = new PanelViewModel (provider, TargetPlatform.Default); + var vm = new PanelViewModel (new TargetPlatform (provider)); Assume.That (vm.ArrangeMode, Is.EqualTo (PropertyArrangeMode.Name)); vm.SelectedObjects.Add (obj); @@ -486,7 +486,7 @@ namespace Xamarin.PropertyEditing.Tests var editor = await provider.GetObjectEditorAsync (obj); Assume.That (editor.Properties.Count, Is.EqualTo (2)); - var vm = new PanelViewModel (provider, TargetPlatform.Default) { ArrangeMode = PropertyArrangeMode.Category }; + var vm = new PanelViewModel (new TargetPlatform (provider)) { ArrangeMode = PropertyArrangeMode.Category }; vm.SelectedObjects.Add (obj); Assume.That (vm.ArrangedEditors, Is.Not.Empty); @@ -510,13 +510,13 @@ namespace Xamarin.PropertyEditing.Tests var provider = new Mock<IEditorProvider> (); provider.Setup (p => p.GetObjectEditorAsync (editor.Target)).ReturnsAsync (editor); - var platform = new TargetPlatform { + var platform = new TargetPlatform (provider.Object) { GroupedTypes = new Dictionary<Type, string> { { typeof(string), "B" } } }; - var vm = new PanelViewModel (provider.Object, platform); + var vm = new PanelViewModel (platform); Assume.That (vm.ArrangeMode, Is.EqualTo (PropertyArrangeMode.Name)); vm.ArrangeMode = PropertyArrangeMode.Category; @@ -534,7 +534,7 @@ namespace Xamarin.PropertyEditing.Tests var editor = await provider.GetObjectEditorAsync (obj); Assume.That (editor.Properties.Count, Is.EqualTo (2)); - var vm = new PanelViewModel (provider, TargetPlatform.Default) { ArrangeMode = PropertyArrangeMode.Category }; + var vm = new PanelViewModel (new TargetPlatform (provider)) { ArrangeMode = PropertyArrangeMode.Category }; vm.SelectedObjects.Add (obj); Assume.That (vm.ArrangedEditors, Is.Not.Empty); @@ -558,22 +558,22 @@ namespace Xamarin.PropertyEditing.Tests var groupProp = new Mock<IPropertyInfo> (); groupProp.SetupGet (p => p.Type).Returns (typeof(int)); - var mockPlatform = new TargetPlatform { - GroupedTypes = new Dictionary<Type, string> { - { typeof(int), "ints" } - } - }; - var target = new object (); var provider = new Mock<IEditorProvider> (); provider.Setup (p => p.GetObjectEditorAsync (target)) .ReturnsAsync (new MockObjectEditor (normalProp.Object, groupProp.Object)); + var mockPlatform = new TargetPlatform (provider.Object) { + GroupedTypes = new Dictionary<Type, string> { + { typeof(int), "ints" } + } + }; + var editor = await provider.Object.GetObjectEditorAsync (target); Assume.That (editor.Properties.Count, Is.EqualTo (2)); - var vm = new PanelViewModel (provider.Object, mockPlatform) { ArrangeMode = PropertyArrangeMode.Category }; + var vm = new PanelViewModel (mockPlatform) { ArrangeMode = PropertyArrangeMode.Category }; vm.SelectedObjects.Add (target); Assert.That (vm.ArrangedEditors.Count, Is.EqualTo (2)); @@ -591,22 +591,21 @@ namespace Xamarin.PropertyEditing.Tests var groupProp = new Mock<IPropertyInfo> (); groupProp.SetupGet (p => p.Type).Returns (typeof(int)); - var mockPlatform = new TargetPlatform { - GroupedTypes = new Dictionary<Type, string> { - { typeof(int), "ints" } - } - }; - var target = new object (); - var provider = new Mock<IEditorProvider> (); provider.Setup (p => p.GetObjectEditorAsync (target)) .ReturnsAsync (new MockObjectEditor (normalProp.Object, groupProp.Object)); + var mockPlatform = new TargetPlatform (provider.Object) { + GroupedTypes = new Dictionary<Type, string> { + { typeof(int), "ints" } + } + }; + var editor = await provider.Object.GetObjectEditorAsync (target); Assume.That (editor.Properties.Count, Is.EqualTo (2)); - var vm = new PanelViewModel (provider.Object, mockPlatform) { ArrangeMode = PropertyArrangeMode.Category }; + var vm = new PanelViewModel (mockPlatform) { ArrangeMode = PropertyArrangeMode.Category }; vm.SelectedObjects.Add (target); Assume.That (vm.ArrangedEditors.Count, Is.EqualTo (2)); @@ -634,10 +633,10 @@ namespace Xamarin.PropertyEditing.Tests provider.Setup (p => p.GetObjectEditorAsync (target)) .ReturnsAsync (new MockObjectEditor (normalProp.Object, groupProp.Object)); - var platform = new TargetPlatform (); + var platform = new TargetPlatform (provider.Object); Assume.That (platform.GroupedTypes, Is.Null); - var vm = new PanelViewModel (provider.Object, platform) { + var vm = new PanelViewModel (platform) { ArrangeMode = PropertyArrangeMode.Category }; @@ -646,7 +645,7 @@ namespace Xamarin.PropertyEditing.Tests internal override PanelViewModel CreateVm (IEditorProvider provider) { - return new PanelViewModel (provider, TargetPlatform.Default); + return new PanelViewModel (new TargetPlatform (provider)); } private TestContext context; diff --git a/Xamarin.PropertyEditing.Tests/PropertyGroupViewModelTests.cs b/Xamarin.PropertyEditing.Tests/PropertyGroupViewModelTests.cs index 6ceb11a..f11950a 100644 --- a/Xamarin.PropertyEditing.Tests/PropertyGroupViewModelTests.cs +++ b/Xamarin.PropertyEditing.Tests/PropertyGroupViewModelTests.cs @@ -1,4 +1,4 @@ -using System.Collections.Specialized; +using System.Collections.Specialized; using Moq; using NUnit.Framework; using Xamarin.PropertyEditing.ViewModels; @@ -20,10 +20,10 @@ namespace Xamarin.PropertyEditing.Tests prop2.SetupGet (p => p.Type).Returns (typeof(int)); editor = new MockObjectEditor (prop.Object, prop2.Object); - var pvm = new PropertyViewModel<int> (TargetPlatform.Default, prop.Object, new[] { editor }); - var pvm2 = new PropertyViewModel<int> (TargetPlatform.Default, prop2.Object, new[] { editor }); + var pvm = new PropertyViewModel<int> (MockEditorProvider.MockPlatform, prop.Object, new[] { editor }); + var pvm2 = new PropertyViewModel<int> (MockEditorProvider.MockPlatform, prop2.Object, new[] { editor }); - var vm = new PropertyGroupViewModel (TargetPlatform.Default, "category", new[] { pvm, pvm2 }, new [] { editor}); + var vm = new PropertyGroupViewModel (MockEditorProvider.MockPlatform, "category", new[] { pvm, pvm2 }, new [] { editor}); Assert.That (vm.Properties, Contains.Item (pvm)); Assert.That (vm.Properties, Contains.Item (pvm2)); } @@ -47,10 +47,10 @@ namespace Xamarin.PropertyEditing.Tests constraint.Setup (c => c.GetIsAvailableAsync (editor)).ReturnsAsync (true); constraint2.Setup (c => c.GetIsAvailableAsync (editor)).ReturnsAsync (false); - var pvm = new PropertyViewModel<int> (TargetPlatform.Default, prop.Object, new[] { editor }); - var pvm2 = new PropertyViewModel<int> (TargetPlatform.Default, prop2.Object, new[] { editor }); + var pvm = new PropertyViewModel<int> (MockEditorProvider.MockPlatform, prop.Object, new[] { editor }); + var pvm2 = new PropertyViewModel<int> (MockEditorProvider.MockPlatform, prop2.Object, new[] { editor }); - var vm = new PropertyGroupViewModel (TargetPlatform.Default, "category", new[] { pvm, pvm2 }, new [] { editor}); + var vm = new PropertyGroupViewModel (MockEditorProvider.MockPlatform, "category", new[] { pvm, pvm2 }, new [] { editor}); Assert.That (vm.Properties, Contains.Item (pvm)); Assert.That (vm.Properties, Does.Not.Contain (pvm2)); } @@ -77,10 +77,10 @@ namespace Xamarin.PropertyEditing.Tests constraint.Setup (c => c.GetIsAvailableAsync (editor)).ReturnsAsync (true); constraint2.Setup (c => c.GetIsAvailableAsync (editor)).ReturnsAsync (() => isAvailable); - var pvm = new PropertyViewModel<int> (TargetPlatform.Default, prop.Object, new[] { editor }); - var pvm2 = new PropertyViewModel<int> (TargetPlatform.Default, prop2.Object, new[] { editor }); + var pvm = new PropertyViewModel<int> (MockEditorProvider.MockPlatform, prop.Object, new[] { editor }); + var pvm2 = new PropertyViewModel<int> (MockEditorProvider.MockPlatform, prop2.Object, new[] { editor }); - var vm = new PropertyGroupViewModel (TargetPlatform.Default, "category", new[] { pvm, pvm2 }, new [] { editor}); + var vm = new PropertyGroupViewModel (MockEditorProvider.MockPlatform, "category", new[] { pvm, pvm2 }, new [] { editor}); Assume.That (vm.Properties, Contains.Item (pvm)); Assume.That (vm.Properties, Does.Not.Contain (pvm2)); @@ -117,10 +117,10 @@ namespace Xamarin.PropertyEditing.Tests prop2.SetupGet (p => p.Name).Returns ("two"); editor = new MockObjectEditor (prop.Object, prop2.Object); - var pvm = new PropertyViewModel<int> (TargetPlatform.Default, prop.Object, new[] { editor }); - var pvm2 = new PropertyViewModel<int> (TargetPlatform.Default, prop2.Object, new[] { editor }); + var pvm = new PropertyViewModel<int> (MockEditorProvider.MockPlatform, prop.Object, new[] { editor }); + var pvm2 = new PropertyViewModel<int> (MockEditorProvider.MockPlatform, prop2.Object, new[] { editor }); - var vm = new PropertyGroupViewModel (TargetPlatform.Default, "category", new[] { pvm, pvm2 }, new [] { editor}); + var vm = new PropertyGroupViewModel (MockEditorProvider.MockPlatform, "category", new[] { pvm, pvm2 }, new [] { editor}); Assume.That (vm.Properties, Contains.Item (pvm)); Assume.That (vm.Properties, Contains.Item (pvm2)); @@ -155,10 +155,10 @@ namespace Xamarin.PropertyEditing.Tests prop2.SetupGet (p => p.Name).Returns ("two"); editor = new MockObjectEditor (prop.Object, prop2.Object); - var pvm = new PropertyViewModel<int> (TargetPlatform.Default, prop.Object, new[] { editor }); - var pvm2 = new PropertyViewModel<int> (TargetPlatform.Default, prop2.Object, new[] { editor }); + var pvm = new PropertyViewModel<int> (MockEditorProvider.MockPlatform, prop.Object, new[] { editor }); + var pvm2 = new PropertyViewModel<int> (MockEditorProvider.MockPlatform, prop2.Object, new[] { editor }); - var vm = new PropertyGroupViewModel (TargetPlatform.Default, "category", new[] { pvm, pvm2 }, new [] { editor}); + var vm = new PropertyGroupViewModel (MockEditorProvider.MockPlatform, "category", new[] { pvm, pvm2 }, new [] { editor}); Assume.That (vm.Properties, Contains.Item (pvm)); Assume.That (vm.Properties, Contains.Item (pvm2)); diff --git a/Xamarin.PropertyEditing.Tests/PropertyViewModelTests.cs b/Xamarin.PropertyEditing.Tests/PropertyViewModelTests.cs index 18b8e30..e1300a8 100644 --- a/Xamarin.PropertyEditing.Tests/PropertyViewModelTests.cs +++ b/Xamarin.PropertyEditing.Tests/PropertyViewModelTests.cs @@ -847,7 +847,7 @@ namespace Xamarin.PropertyEditing.Tests var value = GetNonDefaultRandomTestValue (); string custom = value.ToString (); - var platform = new TargetPlatform { + var platform = new TargetPlatform (new MockEditorProvider()) { SupportsCustomExpressions = true }; @@ -873,7 +873,7 @@ namespace Xamarin.PropertyEditing.Tests var value = GetNonDefaultRandomTestValue (); string custom = value.ToString (); - var platform = new TargetPlatform { + var platform = new TargetPlatform (new MockEditorProvider()) { SupportsCustomExpressions = true }; @@ -1059,7 +1059,7 @@ namespace Xamarin.PropertyEditing.Tests protected TViewModel GetViewModel (IPropertyInfo property, IEnumerable<IObjectEditor> editors) { - return GetViewModel (TargetPlatform.Default, property, editors); + return GetViewModel (MockEditorProvider.MockPlatform, property, editors); } protected abstract TViewModel GetViewModel (TargetPlatform platform, IPropertyInfo property, IEnumerable<IObjectEditor> editors); diff --git a/Xamarin.PropertyEditing.Tests/SolidBrushPropertyViewModelTests.cs b/Xamarin.PropertyEditing.Tests/SolidBrushPropertyViewModelTests.cs index 16ba562..fb5f0dd 100644 --- a/Xamarin.PropertyEditing.Tests/SolidBrushPropertyViewModelTests.cs +++ b/Xamarin.PropertyEditing.Tests/SolidBrushPropertyViewModelTests.cs @@ -330,7 +330,7 @@ namespace Xamarin.PropertyEditing.Tests mockProperty.As<IColorSpaced> ().SetupGet (pi => pi.ColorSpaces).Returns (SampleColorSpaces); var mockEditor = new MockObjectEditor (mockProperty.Object); - return new BrushPropertyViewModel (TargetPlatform.Default, mockProperty.Object, new[] { mockEditor }); + return new BrushPropertyViewModel (MockEditorProvider.MockPlatform, mockProperty.Object, new[] { mockEditor }); } } } diff --git a/Xamarin.PropertyEditing.Windows.Standalone/MainWindow.xaml.cs b/Xamarin.PropertyEditing.Windows.Standalone/MainWindow.xaml.cs index 0acdd2c..d7d4028 100644 --- a/Xamarin.PropertyEditing.Windows.Standalone/MainWindow.xaml.cs +++ b/Xamarin.PropertyEditing.Windows.Standalone/MainWindow.xaml.cs @@ -15,7 +15,7 @@ namespace Xamarin.PropertyEditing.Windows.Standalone public MainWindow () { InitializeComponent (); - this.panel.TargetPlatform = new TargetPlatform { + this.panel.TargetPlatform = new TargetPlatform (new MockEditorProvider()) { SupportsCustomExpressions = true, SupportsMaterialDesign = true, SupportsBrushOpacity = false, @@ -23,7 +23,6 @@ namespace Xamarin.PropertyEditing.Windows.Standalone { typeof(CommonBrush), "Brush" } } }; - this.panel.EditorProvider = new MockEditorProvider (); this.panel.ResourceProvider = new MockResourceProvider (); #if USE_VS_ICONS @@ -41,7 +40,7 @@ namespace Xamarin.PropertyEditing.Windows.Standalone } else { inspectedObject = mockedControl.MockedControl; if (mockedControl is MockedSampleControlButton mockedButton) { - IObjectEditor editor = await this.panel.EditorProvider.GetObjectEditorAsync (inspectedObject); + IObjectEditor editor = await this.panel.TargetPlatform.EditorProvider.GetObjectEditorAsync (inspectedObject); await mockedButton.SetBrushInitialValueAsync (editor, new CommonSolidBrush (20, 120, 220, 240, "sRGB")); await mockedButton.SetMaterialDesignBrushInitialValueAsync (editor, new CommonSolidBrush (0x65, 0x1F, 0xFF, 200)); await mockedButton.SetReadOnlyBrushInitialValueAsync (editor, new CommonSolidBrush (240, 220, 15, 190)); diff --git a/Xamarin.PropertyEditing.Windows/PropertyEditorPanel.cs b/Xamarin.PropertyEditing.Windows/PropertyEditorPanel.cs index a83c194..421973b 100644 --- a/Xamarin.PropertyEditing.Windows/PropertyEditorPanel.cs +++ b/Xamarin.PropertyEditing.Windows/PropertyEditorPanel.cs @@ -28,17 +28,8 @@ namespace Xamarin.PropertyEditing.Windows SelectedItems = selectedItems; } - public static readonly DependencyProperty EditorProviderProperty = DependencyProperty.Register ( - nameof(EditorProvider), typeof(IEditorProvider), typeof(PropertyEditorPanel), new PropertyMetadata (default(IEditorProvider), (o, args) => ((PropertyEditorPanel)o).OnProviderChanged())); - - public IEditorProvider EditorProvider - { - get { return (IEditorProvider) GetValue (EditorProviderProperty); } - set { SetValue (EditorProviderProperty, value); } - } - public static readonly DependencyProperty ResourceProviderProperty = DependencyProperty.Register ( - nameof(ResourceProvider), typeof(IResourceProvider), typeof(PropertyEditorPanel), new PropertyMetadata (default(IResourceProvider), (o, args) => ((PropertyEditorPanel)o).OnProviderChanged())); + nameof(ResourceProvider), typeof(IResourceProvider), typeof(PropertyEditorPanel), new PropertyMetadata (default(IResourceProvider), (o, args) => ((PropertyEditorPanel)o).OnTargetPlatformChanged())); public IResourceProvider ResourceProvider { @@ -47,7 +38,7 @@ namespace Xamarin.PropertyEditing.Windows } public static readonly DependencyProperty TargetPlatformProperty = DependencyProperty.Register ( - "TargetPlatform", typeof(TargetPlatform), typeof(PropertyEditorPanel), new PropertyMetadata (TargetPlatform.Default)); + "TargetPlatform", typeof(TargetPlatform), typeof(PropertyEditorPanel), new PropertyMetadata (null, (o,e) => ((PropertyEditorPanel)o).OnTargetPlatformChanged ())); public TargetPlatform TargetPlatform { @@ -97,7 +88,7 @@ namespace Xamarin.PropertyEditing.Windows this.paneSelector = (ChoiceControl) GetTemplateChild ("paneSelector"); this.paneSelector.SelectedValue = EditingPane.Properties; this.paneSelector.SelectedItemChanged += OnPaneChanged; - OnProviderChanged(); + OnTargetPlatformChanged(); if (this.vm.SelectedObjects.Count > 0) OnArrangeModeChanged (ArrangeMode); @@ -153,7 +144,7 @@ namespace Xamarin.PropertyEditing.Windows OnArrangeModeChanged (ArrangeMode); } - private void OnProviderChanged () + private void OnTargetPlatformChanged () { if (this.root == null) return; @@ -162,8 +153,8 @@ namespace Xamarin.PropertyEditing.Windows this.vm.PropertyChanged -= OnVmPropertyChanged; PanelViewModel newVm = null; - if (EditorProvider != null) { - newVm = new PanelViewModel (EditorProvider, TargetPlatform) { + if (TargetPlatform != null) { + newVm = new PanelViewModel (TargetPlatform) { ResourceProvider = ResourceProvider }; } diff --git a/Xamarin.PropertyEditing/TargetPlatform.cs b/Xamarin.PropertyEditing/TargetPlatform.cs index 2cc42fc..940307a 100644 --- a/Xamarin.PropertyEditing/TargetPlatform.cs +++ b/Xamarin.PropertyEditing/TargetPlatform.cs @@ -10,6 +10,22 @@ namespace Xamarin.PropertyEditing /// </summary> public sealed class TargetPlatform { + public TargetPlatform (IEditorProvider provider) + { + if (provider == null) + throw new ArgumentNullException (nameof(provider)); + + EditorProvider = provider; + } + + /// <summary> + /// Gets the <see cref="IEditorProvider"/> associated with this platform. + /// </summary> + public IEditorProvider EditorProvider + { + get; + } + /// <summary> /// Gets or sets whether the platform supports custom expressions (default false). /// </summary> @@ -43,10 +59,5 @@ namespace Xamarin.PropertyEditing set; } - public static readonly TargetPlatform Default = new TargetPlatform { - GroupedTypes = new Dictionary<Type, string> { - { typeof(CommonBrush), "Brush" } - } - }; } } diff --git a/Xamarin.PropertyEditing/ViewModels/ObjectPropertyViewModel.cs b/Xamarin.PropertyEditing/ViewModels/ObjectPropertyViewModel.cs index 16f1b21..e491b23 100644 --- a/Xamarin.PropertyEditing/ViewModels/ObjectPropertyViewModel.cs +++ b/Xamarin.PropertyEditing/ViewModels/ObjectPropertyViewModel.cs @@ -26,16 +26,13 @@ namespace Xamarin.PropertyEditing.ViewModels internal class ObjectPropertyViewModel : PropertyViewModel { - public ObjectPropertyViewModel (IEditorProvider provider, TargetPlatform targetPlatform, IPropertyInfo property, IEnumerable<IObjectEditor> editors) + public ObjectPropertyViewModel (TargetPlatform targetPlatform, IPropertyInfo property, IEnumerable<IObjectEditor> editors) : base (targetPlatform, property, editors) { - if (provider == null) - throw new ArgumentNullException (nameof(provider)); if (targetPlatform == null) throw new ArgumentNullException (nameof(targetPlatform)); - this.provider = provider; - ValueModel = new ObjectViewModel (provider, targetPlatform); + ValueModel = new ObjectViewModel (targetPlatform); RequestCurrentValueUpdate(); QueryTypes(); @@ -171,7 +168,6 @@ namespace Xamarin.PropertyEditing.ViewModels } } - private readonly IEditorProvider provider; private AsyncValue<IReadOnlyDictionary<IAssemblyInfo, ILookup<string, ITypeInfo>>> assignableTypes; private bool createInstancePending; private string customExpression; @@ -282,7 +278,7 @@ namespace Xamarin.PropertyEditing.ViewModels } await SetValueAsync (new ValueInfo<object> { - Value = await this.provider.CreateObjectAsync (selectedType), + Value = await TargetPlatform.EditorProvider.CreateObjectAsync (selectedType), ValueDescriptor = selectedType, Source = ValueSource.Local }); diff --git a/Xamarin.PropertyEditing/ViewModels/ObjectViewModel.cs b/Xamarin.PropertyEditing/ViewModels/ObjectViewModel.cs index 63f52c0..1d560e8 100644 --- a/Xamarin.PropertyEditing/ViewModels/ObjectViewModel.cs +++ b/Xamarin.PropertyEditing/ViewModels/ObjectViewModel.cs @@ -3,8 +3,8 @@ namespace Xamarin.PropertyEditing.ViewModels internal class ObjectViewModel : PropertiesViewModel { - public ObjectViewModel (IEditorProvider provider, TargetPlatform targetPlatform) - : base (provider, targetPlatform) + public ObjectViewModel (TargetPlatform targetPlatform) + : base (targetPlatform) { } } diff --git a/Xamarin.PropertyEditing/ViewModels/PanelViewModel.cs b/Xamarin.PropertyEditing/ViewModels/PanelViewModel.cs index b75167c..ec09f31 100644 --- a/Xamarin.PropertyEditing/ViewModels/PanelViewModel.cs +++ b/Xamarin.PropertyEditing/ViewModels/PanelViewModel.cs @@ -7,8 +7,8 @@ namespace Xamarin.PropertyEditing.ViewModels internal class PanelViewModel : PropertiesViewModel, IFilterable { - public PanelViewModel (IEditorProvider provider, TargetPlatform targetPlatform) - : base (provider, targetPlatform) + public PanelViewModel (TargetPlatform targetPlatform) + : base (targetPlatform) { ArrangeModes = new List<ArrangeModeViewModel> { new ArrangeModeViewModel (PropertyArrangeMode.Name, this), diff --git a/Xamarin.PropertyEditing/ViewModels/PropertiesViewModel.cs b/Xamarin.PropertyEditing/ViewModels/PropertiesViewModel.cs index d4ef9cb..51e0d27 100644 --- a/Xamarin.PropertyEditing/ViewModels/PropertiesViewModel.cs +++ b/Xamarin.PropertyEditing/ViewModels/PropertiesViewModel.cs @@ -13,14 +13,11 @@ namespace Xamarin.PropertyEditing.ViewModels internal abstract class PropertiesViewModel : NotifyingObject, INotifyDataErrorInfo { - public PropertiesViewModel (IEditorProvider provider, TargetPlatform targetPlatform) + public PropertiesViewModel (TargetPlatform targetPlatform) { - if (provider == null) - throw new ArgumentNullException (nameof (provider)); if (targetPlatform == null) throw new ArgumentNullException (nameof(targetPlatform)); - EditorProvider = provider; TargetPlatform = targetPlatform; this.selectedObjects.CollectionChanged += OnSelectedObjectsChanged; @@ -109,10 +106,7 @@ namespace Xamarin.PropertyEditing.ViewModels public bool HasErrors => this.errors.IsValueCreated && this.errors.Value.Count > 0; - protected IEditorProvider EditorProvider - { - get; - } + protected IEditorProvider EditorProvider => TargetPlatform.EditorProvider; protected IReadOnlyList<IObjectEditor> ObjectEditors => this.objEditors; @@ -450,8 +444,6 @@ namespace Xamarin.PropertyEditing.ViewModels : typeof(PredefinedValuesViewModel<>).MakeGenericType (hasPredefinedValues.GenericTypeArguments[0]); return (PropertyViewModel) Activator.CreateInstance (type, TargetPlatform, property, this.objEditors); - } else if (property.Type == typeof(object)) { - return new ObjectPropertyViewModel (EditorProvider, TargetPlatform, property, this.objEditors); } if (ViewModelMap.TryGetValue (property.Type, out var vmFactory)) @@ -475,6 +467,7 @@ namespace Xamarin.PropertyEditing.ViewModels { typeof(CommonSize), (tp,p,e) => new SizePropertyViewModel (tp, p, e) }, { typeof(CommonRectangle), (tp,p,e) => new RectanglePropertyViewModel (tp, p, e) }, { typeof(CommonThickness), (tp,p, e) => new ThicknessPropertyViewModel (tp, p, e) }, + { typeof(object), (tp,p,e) => new ObjectPropertyViewModel (tp,p,e) }, }; } } |