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:
authorDominique Louis <savagesoftware@gmail.com>2018-08-04 01:49:02 +0300
committerDominique Louis <savagesoftware@gmail.com>2018-08-17 20:50:16 +0300
commit456ba206256c13305c97606f105bacefbdcdb99b (patch)
tree3b9e67e23c0856fd6a9b573f9ae8cc676d829c10 /Xamarin.PropertyEditing.Mac/Controls
parentd2459a3360525a059a80e46a43052b95c22eee04 (diff)
[Mac] Brush Refactoring and Tweaks.
Separates out the Brush Resource classes into separate files, for consistency. Uses Localised strings instead of hard-coded ones. NSOutlineView now reuses Views instead of creating totally new ones each time. Grouped Brush files together under it's own subfolder. Now draws the ColourNoBrush Colours
Diffstat (limited to 'Xamarin.PropertyEditing.Mac/Controls')
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/BrushEditorControl.cs6
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/BrushTabViewController.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/BrushTabViewController.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ChannelEditor.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/ChannelEditor.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ChannelEditorType.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/ChannelEditorType.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ColorComponentEditor.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentEditor.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ColorComponentTabViewController.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentTabViewController.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ColorComponentViewController.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentViewController.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ColorEditorLayer.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/ColorEditorLayer.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ColorEditorView.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/ColorEditorView.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/CommonBrushLayer.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrushLayer.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/CommonBrushView.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrushView.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/CommonGradientBrushLayer.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/CommonGradientBrushLayer.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ComponentSpinEditor.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/ComponentSpinEditor.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/EmptyBrushEditorViewController.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/EmptyBrushEditorViewController.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/HistoryLayer.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/HistoryLayer.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/HueLayer.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/HueLayer.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/MaterialBrushEditorViewController.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/MaterialBrushEditorViewController.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/MaterialColorLayer.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/MaterialColorLayer.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/MaterialView.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/MaterialView.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ResourceBrushPropertyViewDelegate.cs26
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ResourceBrushViewController.cs90
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ResourceDataSource.cs59
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ResourceOutlineView.cs61
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ResourceOutlineViewDelegate.cs55
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ShadeLayer.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/ShadeLayer.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/SolidColorBrushEditor.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/SolidColorBrushEditor.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/SolidColorBrushEditorViewController.cs (renamed from Xamarin.PropertyEditing.Mac/Controls/Custom/SolidColorBrushEditorViewController.cs)0
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/ResourceBrushViewController.cs235
28 files changed, 294 insertions, 238 deletions
diff --git a/Xamarin.PropertyEditing.Mac/Controls/BrushEditorControl.cs b/Xamarin.PropertyEditing.Mac/Controls/BrushEditorControl.cs
index 2c86fc2..ed00525 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/BrushEditorControl.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/BrushEditorControl.cs
@@ -4,6 +4,7 @@ using System.ComponentModel;
using AppKit;
using CoreGraphics;
using Xamarin.PropertyEditing.Drawing;
+using Xamarin.PropertyEditing.Mac.Resources;
using Xamarin.PropertyEditing.ViewModels;
namespace Xamarin.PropertyEditing.Mac
@@ -98,13 +99,13 @@ namespace Xamarin.PropertyEditing.Mac
string GetTitle ()
{
- var title = "Unknown";
+ var title = LocalizationResources.CommonBrushTitleUnknown;
switch (ViewModel.Value) {
case CommonSolidBrush solid:
title = solid.Color.ToString ();
break;
case CommonGradientBrush gradient:
- title = "Gradient";
+ title = LocalizationResources.CommonBrushTitleGradient;
break;
default:
if (ViewModel.Value == null)
@@ -112,7 +113,6 @@ namespace Xamarin.PropertyEditing.Mac
break;
}
- //return ViewModel.Resource == null ? title : $"{title} - (Resource: {ViewModel?.Resource?.Name})";
return title;
}
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/BrushTabViewController.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/BrushTabViewController.cs
index 36d7ceb..36d7ceb 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/BrushTabViewController.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/BrushTabViewController.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/ChannelEditor.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ChannelEditor.cs
index 2dcc4c0..2dcc4c0 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/ChannelEditor.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ChannelEditor.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/ChannelEditorType.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ChannelEditorType.cs
index 9478d67..9478d67 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/ChannelEditorType.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ChannelEditorType.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentEditor.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ColorComponentEditor.cs
index 2cb8d94..2cb8d94 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentEditor.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ColorComponentEditor.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentTabViewController.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ColorComponentTabViewController.cs
index 55c592c..55c592c 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentTabViewController.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ColorComponentTabViewController.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentViewController.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ColorComponentViewController.cs
index 1b3e93b..1b3e93b 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorComponentViewController.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ColorComponentViewController.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorEditorLayer.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ColorEditorLayer.cs
index 6657ba1..6657ba1 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorEditorLayer.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ColorEditorLayer.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorEditorView.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ColorEditorView.cs
index afd40df..afd40df 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/ColorEditorView.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ColorEditorView.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrushLayer.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/CommonBrushLayer.cs
index c12362c..c12362c 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrushLayer.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/CommonBrushLayer.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrushView.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/CommonBrushView.cs
index c9118de..c9118de 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrushView.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/CommonBrushView.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonGradientBrushLayer.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/CommonGradientBrushLayer.cs
index fe9200d..fe9200d 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonGradientBrushLayer.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/CommonGradientBrushLayer.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/ComponentSpinEditor.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ComponentSpinEditor.cs
index 6be4c65..6be4c65 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/ComponentSpinEditor.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ComponentSpinEditor.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/EmptyBrushEditorViewController.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/EmptyBrushEditorViewController.cs
index f355eb9..f355eb9 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/EmptyBrushEditorViewController.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/EmptyBrushEditorViewController.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/HistoryLayer.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/HistoryLayer.cs
index 84fcbcf..84fcbcf 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/HistoryLayer.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/HistoryLayer.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/HueLayer.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/HueLayer.cs
index 420e9ca..420e9ca 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/HueLayer.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/HueLayer.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/MaterialBrushEditorViewController.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/MaterialBrushEditorViewController.cs
index 786f148..786f148 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/MaterialBrushEditorViewController.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/MaterialBrushEditorViewController.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/MaterialColorLayer.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/MaterialColorLayer.cs
index 418b5ca..418b5ca 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/MaterialColorLayer.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/MaterialColorLayer.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/MaterialView.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/MaterialView.cs
index 09f90b9..09f90b9 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/MaterialView.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/MaterialView.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ResourceBrushPropertyViewDelegate.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ResourceBrushPropertyViewDelegate.cs
new file mode 100644
index 0000000..84f35dd
--- /dev/null
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ResourceBrushPropertyViewDelegate.cs
@@ -0,0 +1,26 @@
+using System;
+using Foundation;
+using Xamarin.PropertyEditing.ViewModels;
+
+namespace Xamarin.PropertyEditing.Mac
+{
+ internal class ResourceBrushPropertyViewDelegate : ResourceOutlineViewDelegate
+ {
+ public BrushPropertyViewModel ViewModel
+ {
+ get;
+ set;
+ }
+
+ public override void SelectionDidChange (NSNotification notification)
+ {
+ var view = notification.Object as ResourceOutlineView;
+ var source = view.DataSource as ResourceDataSource;
+
+ var facade = view.ItemAtRow (view.SelectedRow);
+ var resource = (facade as NSObjectFacade)?.Target as Resource;
+
+ ViewModel.Resource = resource;
+ }
+ }
+}
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ResourceBrushViewController.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ResourceBrushViewController.cs
new file mode 100644
index 0000000..bb42cdc
--- /dev/null
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ResourceBrushViewController.cs
@@ -0,0 +1,90 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using AppKit;
+using CoreGraphics;
+using Foundation;
+using Xamarin.PropertyEditing.Drawing;
+using Xamarin.PropertyEditing.Mac.Resources;
+using Xamarin.PropertyEditing.ViewModels;
+
+namespace Xamarin.PropertyEditing.Mac
+{
+ internal class ResourceBrushViewController : NotifyingViewController<BrushPropertyViewModel>
+ {
+ private ResourceOutlineView resourceSelector;
+ private ResourceBrushPropertyViewDelegate viewDelegate;
+
+ public ResourceBrushViewController ()
+ {
+ PreferredContentSize = new CGSize (430, 230);
+ viewDelegate = new ResourceBrushPropertyViewDelegate ();
+ }
+
+ private Resource resource;
+ public override void OnPropertyChanged (object sender, PropertyChangedEventArgs e)
+ {
+ switch (e.PropertyName) {
+ case nameof (BrushPropertyViewModel.Resource):
+ if (resource == ViewModel.Resource)
+ return;
+
+ resource = ViewModel?.Resource;
+ UpdateSelection ();
+ break;
+ case nameof (BrushPropertyViewModel.Solid):
+ if (resourceSelector != null)
+ resourceSelector.ViewModel = ViewModel?.ResourceSelector;
+ break;
+ case nameof (BrushPropertyViewModel.Value):
+ break;
+ }
+ }
+
+ private void UpdateSelection ()
+ {
+ if (resourceSelector == null)
+ return;
+
+ var source = resourceSelector.DataSource as ResourceDataSource;
+ if (source == null || ViewModel == null)
+ return;
+
+ nint index = -1;
+ if (ViewModel.Resource != null && source.TryGetFacade (ViewModel?.Resource, out var facade)) {
+ index = resourceSelector.RowForItem (facade);
+ }
+
+ if (index < 0)
+ resourceSelector.DeselectAll (null);
+ else
+ resourceSelector.SelectRow (index, false);
+ }
+
+ public override void OnViewModelChanged (BrushPropertyViewModel oldModel)
+ {
+ base.OnViewModelChanged (oldModel);
+ if (resourceSelector != null) {
+ viewDelegate.ViewModel = ViewModel;
+ resourceSelector.ViewModel = ViewModel?.ResourceSelector;
+ }
+ }
+
+ public new ResourceOutlineView View {
+ get => base.View as ResourceOutlineView;
+ set => base.View = (value as ResourceOutlineView);
+ }
+
+ public override void LoadView ()
+ {
+ viewDelegate.ViewModel = ViewModel;
+ View = resourceSelector = new ResourceOutlineView {
+ Delegate = viewDelegate
+ };
+
+ if (ViewModel != null) {
+ resourceSelector.ViewModel = ViewModel?.ResourceSelector;
+ }
+ }
+ }
+}
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ResourceDataSource.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ResourceDataSource.cs
new file mode 100644
index 0000000..13c7e8e
--- /dev/null
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ResourceDataSource.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Collections.Generic;
+using AppKit;
+using Foundation;
+using Xamarin.PropertyEditing.ViewModels;
+
+namespace Xamarin.PropertyEditing.Mac
+{
+ internal class ResourceDataSource : NSOutlineViewDataSource
+ {
+ public ResourceDataSource (ResourceSelectorViewModel viewModel) : base ()
+ {
+ this.vm = viewModel;
+ }
+
+ public override nint GetChildrenCount (NSOutlineView outlineView, NSObject item)
+ {
+ if (this.vm?.Resources == null)
+ return 0;
+
+ if (this.vm.Resources?.Count () == 0)
+ return 0;
+
+ return this.vm.Resources.Count ();
+ }
+
+ public override NSObject GetChild (NSOutlineView outlineView, nint childIndex, NSObject item)
+ {
+ object element;
+
+ element = this.vm.Resources[(int)childIndex];
+
+ return GetFacade (element);
+ }
+
+ public override bool ItemExpandable (NSOutlineView outlineView, NSObject item)
+ {
+ return false;
+ }
+
+ public NSObject GetFacade (object element)
+ {
+ NSObject facade;
+
+ if (!this.groupFacades.TryGetValue (element, out facade)) {
+ this.groupFacades[element] = facade = new NSObjectFacade (element);
+ }
+ return facade;
+ }
+
+ public bool TryGetFacade (object element, out NSObject facade)
+ {
+ return this.groupFacades.TryGetValue (element, out facade);
+ }
+
+ private readonly ResourceSelectorViewModel vm;
+ private readonly Dictionary<object, NSObject> groupFacades = new Dictionary<object, NSObject> ();
+ }
+}
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ResourceOutlineView.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ResourceOutlineView.cs
new file mode 100644
index 0000000..adf9651
--- /dev/null
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ResourceOutlineView.cs
@@ -0,0 +1,61 @@
+using System;
+using AppKit;
+using Foundation;
+using Xamarin.PropertyEditing.Mac.Resources;
+using Xamarin.PropertyEditing.ViewModels;
+
+namespace Xamarin.PropertyEditing.Mac
+{
+ internal class ResourceOutlineView : NSOutlineView
+ {
+ internal const string ResourcePreviewColId = "Preview";
+ internal const string ResourceNameColId = "Name";
+
+ public ResourceOutlineView ()
+ {
+ Initialize ();
+ }
+
+ // Called when created from unmanaged code
+ public ResourceOutlineView (IntPtr handle) : base (handle)
+ {
+ }
+
+ // Called when created directly from a XIB file
+ [Export ("initWithCoder:")]
+ public ResourceOutlineView (NSCoder coder) : base (coder)
+ {
+ }
+
+ public void Initialize ()
+ {
+ var nameColumn = new NSTableColumn (ResourceNameColId) {
+ Title = LocalizationResources.ColumnResourceName,
+ Width = 150,
+ };
+ AddColumn (nameColumn);
+ var previewColumn = new NSTableColumn (ResourcePreviewColId) {
+ Title = LocalizationResources.ColumnResourcePreview,
+ Width = 150,
+ };
+ AddColumn (previewColumn);
+ }
+
+ [Export ("validateProposedFirstResponder:forEvent:")]
+ public bool validateProposedFirstResponder (NSResponder responder, NSEvent ev)
+ {
+ return true;
+ }
+
+ private ResourceSelectorViewModel viewModel;
+ public ResourceSelectorViewModel ViewModel
+ {
+ get => this.viewModel;
+ set
+ {
+ this.viewModel = value;
+ DataSource = new ResourceDataSource (viewModel);
+ }
+ }
+ }
+}
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ResourceOutlineViewDelegate.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ResourceOutlineViewDelegate.cs
new file mode 100644
index 0000000..4a29941
--- /dev/null
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ResourceOutlineViewDelegate.cs
@@ -0,0 +1,55 @@
+using System;
+using AppKit;
+using CoreGraphics;
+using Foundation;
+using Xamarin.PropertyEditing.Drawing;
+using Xamarin.PropertyEditing.ViewModels;
+
+namespace Xamarin.PropertyEditing.Mac
+{
+ internal class ResourceOutlineViewDelegate : NSOutlineViewDelegate
+ {
+ private const string labelIdentifier = "label";
+ private const string resourceIdentifier = "resource";
+
+ public override NSView GetView (NSOutlineView outlineView, NSTableColumn tableColumn, NSObject item)
+ {
+ var facade = item as NSObjectFacade;
+ var resource = facade?.Target as Resource;
+ switch (tableColumn.Identifier) {
+ case ResourceOutlineView.ResourcePreviewColId:
+ var cbv = (CommonBrushView)outlineView.MakeView (resourceIdentifier, this);
+ if (cbv == null) {
+ cbv = new CommonBrushView {
+ Identifier = resourceIdentifier,
+ Frame = new CGRect (0, 0, 30, 10),
+ };
+ }
+
+ var commonBrush = BrushPropertyViewModel.GetCommonBrushForResource (resource);
+ if (commonBrush != null)
+ cbv.Brush = commonBrush;
+
+ return cbv;
+
+ case ResourceOutlineView.ResourceNameColId:
+ default:
+ var utf = (UnfocusableTextField)outlineView.MakeView (labelIdentifier, this);
+ if (utf == null) {
+ utf = new UnfocusableTextField {
+ BackgroundColor = NSColor.Clear,
+ Identifier = labelIdentifier,
+ };
+ }
+ utf.StringValue = resource.Name;
+ return utf;
+ }
+ }
+
+
+ public override nfloat GetRowHeight (NSOutlineView outlineView, NSObject item)
+ {
+ return PropertyEditorControl.DefaultControlHeight;
+ }
+ }
+}
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/ShadeLayer.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ShadeLayer.cs
index 7a83418..7a83418 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/ShadeLayer.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/ShadeLayer.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/SolidColorBrushEditor.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/SolidColorBrushEditor.cs
index 75ddb6d..75ddb6d 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/SolidColorBrushEditor.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/SolidColorBrushEditor.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/SolidColorBrushEditorViewController.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/SolidColorBrushEditorViewController.cs
index a024dcc..a024dcc 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/SolidColorBrushEditorViewController.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/CommonBrush/SolidColorBrushEditorViewController.cs
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/ResourceBrushViewController.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/ResourceBrushViewController.cs
deleted file mode 100644
index 4900cc0..0000000
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/ResourceBrushViewController.cs
+++ /dev/null
@@ -1,235 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using AppKit;
-using CoreGraphics;
-using Foundation;
-using Xamarin.PropertyEditing.Drawing;
-using Xamarin.PropertyEditing.ViewModels;
-
-namespace Xamarin.PropertyEditing.Mac
-{
- internal class ResourceDataSource : NSOutlineViewDataSource
- {
- public ResourceDataSource (ResourceSelectorViewModel viewModel) : base ()
- {
- this.vm = viewModel;
- }
-
- public override nint GetChildrenCount (NSOutlineView outlineView, NSObject item)
- {
- if (this.vm?.Resources == null)
- return 0;
-
- if (this.vm.Resources?.Count () == 0)
- return 0;
-
- return this.vm.Resources.Count ();
- }
-
- public override NSObject GetChild (NSOutlineView outlineView, nint childIndex, NSObject item)
- {
- object element;
-
- element = this.vm.Resources[(int)childIndex];
-
- return GetFacade (element);
- }
-
- public override bool ItemExpandable (NSOutlineView outlineView, NSObject item)
- {
- return false;
- }
-
- public NSObject GetFacade (object element)
- {
- NSObject facade;
-
- if (!this.groupFacades.TryGetValue (element, out facade)) {
- this.groupFacades [element] = facade = new NSObjectFacade (element);
- }
- return facade;
- }
-
- public bool TryGetFacade (object element, out NSObject facade)
- {
- return this.groupFacades.TryGetValue (element, out facade);
- }
-
- private readonly ResourceSelectorViewModel vm;
- private readonly Dictionary<object, NSObject> groupFacades = new Dictionary<object, NSObject> ();
- }
-
- internal class ResourceBrushPropertyViewDelegate : ResourceOutlineViewDelegate
- {
- public BrushPropertyViewModel ViewModel {
- get;
- set;
- }
-
- public override void SelectionDidChange (NSNotification notification)
- {
- var view = notification.Object as ResourceOutlineView;
- var source = view.DataSource as ResourceDataSource;
-
- var facade = view.ItemAtRow (view.SelectedRow);
- var resource = (facade as NSObjectFacade)?.Target as Resource;
-
- ViewModel.Resource = resource;
- }
- }
-
- internal class ResourceOutlineViewDelegate : NSOutlineViewDelegate
- {
- public override NSView GetView (NSOutlineView outlineView, NSTableColumn tableColumn, NSObject item)
- {
- var facade = item as NSObjectFacade;
- var resource = facade?.Target as Resource;
- switch (tableColumn.Identifier) {
- case "Preview":
- switch (resource) {
- case Resource<CommonSolidBrush> solid:
- return new CommonBrushView {
- Brush = solid.Value,
- Frame = new CGRect (0, 0, 30, 10)
- };
- case Resource<CommonGradientBrush> gradient:
- return new CommonBrushView {
- Brush = gradient.Value,
- Frame = new CGRect (0, 0, 30, 10)
- };
- }
- return new NSView ();
- case "Label":
- default:
- return new NSTextField () {
- StringValue = resource.Name,
- Bordered = false,
- Editable = false,
- Selectable = false,
- ControlSize = NSControlSize.Small,
- Font = NSFont.FromFontName (PropertyEditorControl.DefaultFontName, PropertyEditorControl.DefaultPropertyLabelFontSize),
- BackgroundColor = NSColor.Clear
- };
- }
- }
- }
-
- internal class ResourceOutlineView : NSOutlineView
- {
- public ResourceOutlineView ()
- {
- Initialize ();
- }
-
- // Called when created from unmanaged code
- public ResourceOutlineView (IntPtr handle) : base (handle)
- {
- }
-
- // Called when created directly from a XIB file
- [Export ("initWithCoder:")]
- public ResourceOutlineView (NSCoder coder) : base (coder)
- {
- }
-
- public void Initialize ()
- {
- var nameColumn = new NSTableColumn ("Label") {
- Title = "Name"
- };
- AddColumn (nameColumn);
- var previewColumn = new NSTableColumn ("Preview") {
- Title = "Preview"
- };
- AddColumn (previewColumn);
- }
-
- private ResourceSelectorViewModel viewModel;
- public ResourceSelectorViewModel ViewModel {
- get => this.viewModel;
- set {
- this.viewModel = value;
- DataSource = new ResourceDataSource (viewModel);
- }
- }
- }
-
- internal class ResourceBrushViewController : NotifyingViewController<BrushPropertyViewModel>
- {
- private ResourceOutlineView resourceSelector;
- private ResourceBrushPropertyViewDelegate viewDelegate;
-
- public ResourceBrushViewController ()
- {
- PreferredContentSize = new CGSize (430, 230);
- viewDelegate = new ResourceBrushPropertyViewDelegate ();
- }
-
- private Resource resource;
- public override void OnPropertyChanged (object sender, PropertyChangedEventArgs e)
- {
- switch (e.PropertyName) {
- case nameof (BrushPropertyViewModel.Resource):
- if (resource == ViewModel.Resource)
- return;
-
- resource = ViewModel?.Resource;
- UpdateSelection ();
- break;
- case nameof (BrushPropertyViewModel.Solid):
- if (resourceSelector != null)
- resourceSelector.ViewModel = ViewModel?.ResourceSelector;
- break;
- case nameof (BrushPropertyViewModel.Value):
- break;
- }
- }
-
- private void UpdateSelection ()
- {
- if (resourceSelector == null)
- return;
-
- var source = resourceSelector.DataSource as ResourceDataSource;
- if (source == null || ViewModel == null)
- return;
-
- nint index = -1;
- if (ViewModel.Resource != null && source.TryGetFacade (ViewModel?.Resource, out var facade)) {
- index = resourceSelector.RowForItem (facade);
- }
-
- if (index < 0)
- resourceSelector.DeselectAll (null);
- else
- resourceSelector.SelectRow (index, false);
- }
-
- public override void OnViewModelChanged (BrushPropertyViewModel oldModel)
- {
- base.OnViewModelChanged (oldModel);
- if (resourceSelector != null) {
- viewDelegate.ViewModel = ViewModel;
- resourceSelector.ViewModel = ViewModel?.ResourceSelector;
- }
- }
-
- public new ResourceOutlineView View {
- get => base.View as ResourceOutlineView;
- set => base.View = (value as ResourceOutlineView);
- }
-
- public override void LoadView ()
- {
- viewDelegate.ViewModel = ViewModel;
- View = resourceSelector = new ResourceOutlineView {
- Delegate = viewDelegate
- };
-
- if (ViewModel != null) {
- resourceSelector.ViewModel = ViewModel?.ResourceSelector;
- }
- }
- }
-}