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
|
using AppKit;
using Xamarin.PropertyEditing.ViewModels;
namespace Xamarin.PropertyEditing.Mac
{
internal class EditorContainer
: PropertyContainer
{
public EditorContainer (IHostResourceProvider hostResources, IEditorView editorView, bool? needsPropertyButton = null)
: base (hostResources, editorView, needsPropertyButton ?? editorView?.NeedsPropertyButton ?? false)
{
}
public IEditorView EditorView => (IEditorView)NativeContainer;
public EditorViewModel ViewModel
{
get => EditorView?.ViewModel;
set {
if (EditorView == null)
return;
EditorView.ViewModel = value;
if (EditorView.NeedsPropertyButton)
PropertyButton.ViewModel = value as PropertyViewModel;
}
}
public NSView LeftEdgeView
{
get { return this.leftEdgeView; }
set
{
if (this.leftEdgeView != null) {
this.leftEdgeView.RemoveFromSuperview ();
RemoveConstraints (new[] { this.leftEdgeLeftConstraint, this.leftEdgeVCenterConstraint });
this.leftEdgeLeftConstraint.Dispose ();
this.leftEdgeLeftConstraint = null;
this.leftEdgeVCenterConstraint.Dispose ();
this.leftEdgeVCenterConstraint = null;
}
this.leftEdgeView = value;
if (value != null) {
AddSubview (value);
value.TranslatesAutoresizingMaskIntoConstraints = false;
this.leftEdgeLeftConstraint = NSLayoutConstraint.Create (this.leftEdgeView, NSLayoutAttribute.Left, NSLayoutRelation.Equal, this, NSLayoutAttribute.Left, 1, 4);
this.leftEdgeVCenterConstraint = NSLayoutConstraint.Create (this.leftEdgeView, NSLayoutAttribute.CenterY, NSLayoutRelation.Equal, this, NSLayoutAttribute.CenterY, 1, 0);
AddConstraints (new[] { this.leftEdgeLeftConstraint, this.leftEdgeVCenterConstraint });
}
}
}
public override void ViewWillMoveToSuperview (NSView newSuperview)
{
if (newSuperview == null)
ViewModel = null;
base.ViewWillMoveToSuperview (newSuperview);
}
#if DEBUG // Currently only used to highlight which controls haven't been implemented
public NSColor LabelTextColor {
set { LabelControl.TextColor = value; }
}
#endif
private NSView leftEdgeView;
private NSLayoutConstraint leftEdgeLeftConstraint, leftEdgeVCenterConstraint;
}
}
|