public override NSView GetViewForItem(NSTableView tableView, NSTableColumn tableColumn, nint row)
        {
            EditableTextView view = (EditableTextView)tableView.MakeView(CellIdentifier, this);

            if (view == null)
            {
                view = new EditableTextView
                {
                    Identifier        = CellIdentifier,
                    Bordered          = false,
                    BackgroundColor   = NSColor.White,
                    Selectable        = true,
                    Editable          = true,
                    PlaceholderString = "New Keyword",
                };

                view.EditingEnded += (sender, e) =>
                {
                    AdjustLibraryKeywordGroup(view, (int)row);
                };
            }

            view.StringValue = string.Format("{0}{1}",
                                             _dataSource.Keywords[(int)row].IsDeleted ? ">> DELETED << " : "",
                                             _dataSource.Keywords[(int)row].GroupName);

            return(view);
        }
        private NSView CreateValueView(DataSourceOutlineViewSourceFieldsInfo field)
        {
            NSView view = null;

            Type fieldType = field.FieldInfo.FieldType;

            if (fieldType == typeof(DateField))
            {
                view = new NSDatePicker
                {
                    DatePickerStyle    = NSDatePickerStyle.TextField,
                    DatePickerElements = NSDatePickerElementFlags.YearMonthDateDay
                };

                var dateField = view as NSDatePicker;
                dateField.ValidateProposedDateValue += (sender, e) => field.Fields[0].Value = ((DateTime)dateField.DateValue).ToLocalTime();
            }
            else
            {
                view = new EditableTextView()
                {
                    Selectable        = true,
                    Editable          = true,
                    Bordered          = false,
                    PlaceholderString = $"New {field.FieldInfo.Name}"
                };

                var textField = view as NSTextField;
                if (fieldType == typeof(NumberField))
                {
                    textField.Formatter = new NSNumberFormatter();
                }

                textField.StringValue = field.Value.ToString();

                textField.EditingEnded += (sender, e) =>
                                          field.Value = textField.StringValue;
            }

            return(view);
        }