public override NSView GetViewForItem(NSTableView tableView, NSTableColumn tableColumn, nint row)
        {
            var data      = owner.PropsDataSource.data [(int)row];
            var paintInfo = owner.ViewModel.OnPropertyCellPaint((int)row);

            if (tableColumn == owner.PropKeyColumn)
            {
                var viewId = "name";
                var view   = (NSTextField)tableView.MakeView(viewId, this);
                if (view == null)
                {
                    view = MakeLabel(viewId);
                }
                if (paintInfo.AddLeftPadding)
                {
                    view.StringValue = "  " + data.Key;
                }
                else
                {
                    view.StringValue = data.Key;
                }
                return(view);
            }
            else if (tableColumn == owner.PropValueColumn)
            {
                if (paintInfo.PaintAsLink)
                {
                    var viewId = "link";
                    var view   = (NSLinkLabel)tableView.MakeView(viewId, this);
                    if (view == null)
                    {
                        view = new NSLinkLabel()
                        {
                            Identifier = viewId,
                            RespectInteriorBackgroundStyle = true
                        }
                    }
                    ;
                    view.StringValue = data.Value.ToString();
                    view.LinkClicked = (s, e) =>
                                       owner.ViewModel.OnPropertyCellClicked((int)row);
                    return(view);
                }
                else
                {
                    var viewId = "val";
                    var view   = (NSTextField)tableView.MakeView(viewId, this);
                    if (view == null)
                    {
                        view = MakeLabel(viewId);
                    }
                    view.StringValue = data.Value.ToString();
                    return(view);
                }
            }

            return(null);
        }
        void UpdateActionLink(NSLinkLabel lbl, string value, ControlData.StatusColor color, bool enabled, ViewControlId id)
        {
            lbl.SetAttributedContents(value);
            lbl.TextColor = MapColor(color);
            lbl.IsEnabled = enabled;

            if (lbl.LinkClicked == null)
            {
                lbl.LinkClicked = (s, e) =>
                {
                    if (!string.IsNullOrEmpty(e.Link.Tag as string))
                    {
                        var flags = ClickFlags.None;                         // todo: flags
                        viewModel.OnActionClick((string)e.Link.Tag, id, flags);
                    }
                };
            }
        }
 public ControlsSet(NSLinkLabel content, NSProgressIndicator progress)
 {
     this.content  = content;
     this.progress = progress;
 }