1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
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 BrushTabViewController : UnderlinedTabViewController<BrushPropertyViewModel>
{
public BrushTabViewController ()
{
PreferredContentSize = new CGSize (430, 230);
TransitionOptions = NSViewControllerTransitionOptions.None;
}
Dictionary<CommonBrushType, int> BrushTypeTable = new Dictionary<CommonBrushType, int> ();
bool inhibitSelection;
public override void OnViewModelChanged (BrushPropertyViewModel oldModel)
{
this.inhibitSelection = true;
base.OnViewModelChanged (oldModel);
foreach (var item in TabViewItems) {
RemoveTabViewItem (item);
}
BrushTypeTable.Clear ();
if (ViewModel == null)
return;
foreach (var key in ViewModel.BrushTypes.Keys) {
var item = new NSTabViewItem ();
item.Label = key;
var brushType = ViewModel.BrushTypes [key];
switch (brushType) {
case CommonBrushType.Solid:
var solid = new SolidColorBrushEditorViewController ();
solid.ViewModel = ViewModel;
item.ViewController = solid;
item.Image = NSImage.ImageNamed ("property-brush-solid-16");
break;
case CommonBrushType.MaterialDesign:
var material = new MaterialBrushEditorViewController ();
material.ViewModel = ViewModel;
item.ViewController = material;
item.Image = NSImage.ImageNamed ("property-brush-palette-16");
break;
case CommonBrushType.Resource:
var resource = new ResourceBrushViewController ();
resource.ViewModel = ViewModel;
item.ViewController = resource;
item.Image = NSImage.ImageNamed ("property-brush-resources-16");
break;
case CommonBrushType.Gradient:
var gradient = new EmptyBrushEditorViewController ();
gradient.ViewModel = ViewModel;
item.ViewController = gradient;
item.Image = NSImage.ImageNamed ("property-brush-gradient-16");
break;
case CommonBrushType.NoBrush:
var none = new EmptyBrushEditorViewController ();
none.ViewModel = ViewModel;
item.ViewController = none;
item.Image = NSImage.ImageNamed ("property-brush-none-16");
break;
}
if (item.ViewController != null) {
BrushTypeTable [brushType] = TabViewItems.Length;
AddTabViewItem (item);
}
}
if (BrushTypeTable.TryGetValue (ViewModel.SelectedBrushType, out var index)) {
SelectedTabViewItemIndex = index;
}
this.inhibitSelection = false;
}
public override void OnPropertyChanged (object sender, PropertyChangedEventArgs args)
{
base.OnPropertyChanged (sender, args);
switch (args.PropertyName) {
case nameof (BrushPropertyViewModel.SelectedBrushType):
if (BrushTypeTable.TryGetValue (ViewModel.SelectedBrushType, out var index)) {
this.SelectedTabViewItemIndex = index;
}
break;
}
}
public override void WillSelect (NSTabView tabView, NSTabViewItem item)
{
var brushController = item.ViewController as NotifyingViewController<BrushPropertyViewModel>;
if (brushController != null)
brushController.ViewModel = ViewModel;
if (this.inhibitSelection)
return;
base.WillSelect (tabView, item);
}
public override void DidSelect (NSTabView tabView, NSTabViewItem item)
{
if (this.inhibitSelection)
return;
base.DidSelect (tabView, item);
ViewModel.SelectedBrushType = ViewModel.BrushTypes [item.Label];
}
public override void ViewDidLoad ()
{
View.Frame = new CGRect (0, 0, 430,230);
this.inhibitSelection = true;
base.ViewDidLoad ();
this.inhibitSelection = false;
}
}
}
|