public ErrorMessageView(IHostResourceProvider hostResources, IEnumerable errors) { if (errors == null) { throw new ArgumentNullException(nameof(errors)); } Frame = new CGRect(CGPoint.Empty, new CGSize(320, 240)); var iconView = new NSButton(new CGRect(5, Frame.Height - 25, DefaultIconButtonSize, DefaultIconButtonSize)) { Bordered = false, Image = hostResources.GetNamedImage("pe-action-warning-16"), Title = string.Empty, TranslatesAutoresizingMaskIntoConstraints = false, }; AddSubview(iconView); var viewTitle = new UnfocusableTextField(new CGRect(30, Frame.Height - 26, 120, 24), "Errors"); AddSubview(viewTitle); this.errorMessages = new NSTextField { BackgroundColor = NSColor.Clear, Editable = false, TranslatesAutoresizingMaskIntoConstraints = false, }; this.errorMessages.Cell.Wraps = true; foreach (var error in errors) { this.errorMessages.StringValue += error + "\n"; } AddSubview(this.errorMessages); this.AddConstraints(new[] { NSLayoutConstraint.Create(iconView, NSLayoutAttribute.Top, NSLayoutRelation.Equal, this, NSLayoutAttribute.Top, 1f, 5f), NSLayoutConstraint.Create(iconView, NSLayoutAttribute.Left, NSLayoutRelation.Equal, this, NSLayoutAttribute.Left, 1f, 5f), NSLayoutConstraint.Create(iconView, NSLayoutAttribute.Width, NSLayoutRelation.Equal, 1f, DefaultIconButtonSize), NSLayoutConstraint.Create(iconView, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, DefaultIconButtonSize), NSLayoutConstraint.Create(viewTitle, NSLayoutAttribute.Top, NSLayoutRelation.Equal, this, NSLayoutAttribute.Top, 1f, 7f), NSLayoutConstraint.Create(viewTitle, NSLayoutAttribute.Left, NSLayoutRelation.Equal, iconView, NSLayoutAttribute.Right, 1f, 5f), NSLayoutConstraint.Create(viewTitle, NSLayoutAttribute.Width, NSLayoutRelation.Equal, 1f, 120), NSLayoutConstraint.Create(viewTitle, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, PropertyEditorControl.DefaultControlHeight), NSLayoutConstraint.Create(this.errorMessages, NSLayoutAttribute.Top, NSLayoutRelation.Equal, this, NSLayoutAttribute.Top, 1f, 35f), NSLayoutConstraint.Create(this.errorMessages, NSLayoutAttribute.Left, NSLayoutRelation.Equal, this, NSLayoutAttribute.Left, 1f, 5f), NSLayoutConstraint.Create(this.errorMessages, NSLayoutAttribute.Width, NSLayoutRelation.Equal, this, NSLayoutAttribute.Width, 1f, -10f), NSLayoutConstraint.Create(this.errorMessages, NSLayoutAttribute.Height, NSLayoutRelation.Equal, this, NSLayoutAttribute.Height, 1f, -40f), }); }
public BasePopOverControl(IHostResourceProvider hostResources, string title, string imageNamed) : base() { if (title == null) { throw new ArgumentNullException(nameof(title)); } if (imageNamed == null) { throw new ArgumentNullException(nameof(imageNamed)); } if (hostResources == null) { throw new ArgumentNullException(nameof(hostResources)); } TranslatesAutoresizingMaskIntoConstraints = false; WantsLayer = true; HostResources = hostResources; var iconView = new NSImageView { Image = hostResources.GetNamedImage(imageNamed), ImageScaling = NSImageScale.None, TranslatesAutoresizingMaskIntoConstraints = false, }; AddSubview(iconView); this.viewTitle = new UnfocusableTextField { Font = NSFont.BoldSystemFontOfSize(11), StringValue = title, TranslatesAutoresizingMaskIntoConstraints = false, }; AddSubview(this.viewTitle); this.AddConstraints(new[] { NSLayoutConstraint.Create(iconView, NSLayoutAttribute.Top, NSLayoutRelation.Equal, this, NSLayoutAttribute.Top, 1f, 5f), NSLayoutConstraint.Create(iconView, NSLayoutAttribute.Left, NSLayoutRelation.Equal, this, NSLayoutAttribute.Left, 1f, 5f), NSLayoutConstraint.Create(iconView, NSLayoutAttribute.Width, NSLayoutRelation.Equal, 1f, DefaultIconButtonSize), NSLayoutConstraint.Create(iconView, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, DefaultIconButtonSize), NSLayoutConstraint.Create(this.viewTitle, NSLayoutAttribute.Top, NSLayoutRelation.Equal, this, NSLayoutAttribute.Top, 1f, 7f), NSLayoutConstraint.Create(this.viewTitle, NSLayoutAttribute.Left, NSLayoutRelation.Equal, iconView, NSLayoutAttribute.Right, 1f, 5f), NSLayoutConstraint.Create(this.viewTitle, NSLayoutAttribute.Width, NSLayoutRelation.Equal, 1f, 120), NSLayoutConstraint.Create(this.viewTitle, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, PropertyEditorControl.DefaultControlHeight), }); AppearanceChanged(); }