public override NSView GetViewForItem(NSTableView tableView, NSTableColumn tableColumn, int row, NSObject obj, Func <NSObject, int, object> getItem) { var view = tableView.MakeView(tableColumn.Identifier, tableView) as CellView; if (view == null) { view = new CellView(); view.Cell = new EtoLabelFieldCell { VerticalAlignment = VerticalAlignment.Center }; view.Identifier = tableColumn.Identifier; view.Selectable = false; view.DrawsBackground = false; view.Bezeled = false; view.Bordered = false; view.AutoresizingMask = NSViewResizingMask.HeightSizable | NSViewResizingMask.WidthSizable; view.Cell.Wraps = false; view.Cell.Scrollable = true; view.Cell.UsesSingleLineMode = true; var col = Array.IndexOf(tableView.TableColumns(), tableColumn); view.BecameFirstResponder += (sender, e) => { var control = (CellView)sender; var r = (int)control.Tag; var item = getItem(control.Item, r); var ee = new GridViewCellEventArgs(ColumnHandler.Widget, r, (int)col, item); ColumnHandler.DataViewHandler.Callback.OnCellEditing(ColumnHandler.DataViewHandler.Widget, ee); }; view.EditingEnded += (sender, e) => { var notification = (NSNotification)sender; var control = (CellView)notification.Object; var r = (int)control.Tag; var item = getItem(control.Item, r); SetObjectValue(item, control.ObjectValue); var ee = new GridViewCellEventArgs(ColumnHandler.Widget, r, (int)col, item); ColumnHandler.DataViewHandler.Callback.OnCellEdited(ColumnHandler.DataViewHandler.Widget, ee); control.ObjectValue = GetObjectValue(item); }; view.ResignedFirstResponder += (sender, e) => { var control = (CellView)sender; var r = (int)control.Tag; var item = getItem(control.Item, r); SetObjectValue(item, control.ObjectValue); var ee = new GridViewCellEventArgs(ColumnHandler.Widget, r, (int)col, item); ColumnHandler.DataViewHandler.Callback.OnCellEdited(ColumnHandler.DataViewHandler.Widget, ee); }; view.Bind("editable", tableColumn, "editable", null); } view.Item = obj; view.Tag = row; var args = new MacCellFormatArgs(ColumnHandler.Widget, getItem(obj, row), row, view); ColumnHandler.DataViewHandler.OnCellFormatting(args); return(view); }
public override NSView GetViewForItem(NSTableView tableView, NSTableColumn tableColumn, int row, NSObject obj, Func <NSObject, int, object> getItem) { var view = tableView.MakeView(tableColumn.Identifier, tableView) as CellView; if (view == null) { view = new CellView { Title = string.Empty }; view.Identifier = tableColumn.Identifier; view.SetButtonType(NSButtonType.Switch); view.Bind("enabled", tableColumn, "editable", null); var col = Array.IndexOf(tableView.TableColumns(), tableColumn); view.Activated += (sender, e) => { var control = (CellView)sender; var r = (int)control.Tag; var item = getItem(control.Item, r); var ee = new GridViewCellEventArgs(ColumnHandler.Widget, r, col, item); ColumnHandler.DataViewHandler.Callback.OnCellEditing(ColumnHandler.DataViewHandler.Widget, ee); SetObjectValue(item, control.ObjectValue); control.ObjectValue = GetObjectValue(item); ColumnHandler.DataViewHandler.Callback.OnCellEdited(ColumnHandler.DataViewHandler.Widget, ee); }; } view.Tag = row; view.Item = obj; var args = new MacCellFormatArgs(ColumnHandler.Widget, getItem(obj, row), row, view); ColumnHandler.DataViewHandler.OnCellFormatting(args); return(view); }
public override NSView GetViewForItem(NSTableView tableView, NSTableColumn tableColumn, int row, NSObject obj, Func <NSObject, int, object> getItem) { var view = tableView.MakeView(tableColumn.Identifier, tableView) as CellView; if (view == null) { view = new CellView { WeakHandler = new WeakReference(this), Identifier = tableColumn.Identifier, }; var col = Array.IndexOf(tableView.TableColumns(), tableColumn); view.BecameFirstResponder += (sender, e) => { var control = (CellView)sender; var r = (int)control.Tag; var item = getItem(control.Item, r); var ee = MacConversions.CreateCellEventArgs(ColumnHandler.Widget, tableView, r, col, item); ColumnHandler.DataViewHandler.OnCellEditing(ee); }; view.EditingEnded += (sender, e) => { var notification = (NSNotification)sender; var control = (CellView)notification.Object; var r = (int)control.Tag; var item = getItem(control.Item, r); SetObjectValue(item, control.ObjectValue); var ee = MacConversions.CreateCellEventArgs(ColumnHandler.Widget, tableView, r, col, item); ColumnHandler.DataViewHandler.OnCellEdited(ee); control.ObjectValue = GetObjectValue(item) ?? new NSString(string.Empty); }; view.ResignedFirstResponder += (sender, e) => { var control = (CellView)sender; var r = (int)control.Tag; var item = getItem(control.Item, r); SetObjectValue(item, control.ObjectValue); var ee = MacConversions.CreateCellEventArgs(ColumnHandler.Widget, tableView, r, col, item); ColumnHandler.DataViewHandler.OnCellEdited(ee); }; view.Bind(editableBinding, tableColumn, "editable", null); } var cell = view.Cell; cell.VerticalAlignment = VerticalAlignment; cell.Alignment = TextAlignment.ToNS(); view.Item = obj; view.Tag = row; var args = new MacCellFormatArgs(ColumnHandler.Widget, getItem(obj, row), row, view); ColumnHandler.DataViewHandler.OnCellFormatting(args); return(view); }
public override NSView GetViewForItem(NSTableView tableView, NSTableColumn tableColumn, int row, NSObject obj, Func <NSObject, int, object> getItem) { var item = getItem(obj, row); var state = CellStates.None; if (tableView.IsRowSelected(row)) { state |= CellStates.Selected; } if (tableColumn.Editable) { state |= CellStates.Editing; } var column = -1; // TODO: get index or lookup when needed. var args = new MutableCellEventArgs(ColumnHandler.DataViewHandler as Grid, Widget, row, column, item, state, null); var identifier = tableColumn.Identifier; var id = Callback.OnGetIdentifier(Widget, args); if (!string.IsNullOrEmpty(id)) { identifier += "_" + id; } var view = tableView.MakeView(identifier, tableView) as EtoCustomCellView; if (view == null) { var control = Callback.OnCreateCell(Widget, args); args.SetControl(control); view = new EtoCustomCellView { Handler = this, Args = args, EtoControl = control, Identifier = identifier, AutoresizingMask = NSViewResizingMask.HeightSizable | NSViewResizingMask.WidthSizable }; if (control != null) { var childView = control.ToNative(true); view.AddSubview(childView); view.Setup(); } } else { view.Args.SetEditable(args.IsEditing); view.Args.SetSelected(args.IsSelected); view.Args.SetItem(args.Item); } var formatArgs = new MacCellFormatArgs(ColumnHandler.Widget, item, row, view); ColumnHandler.DataViewHandler.OnCellFormatting(formatArgs); Callback.OnConfigureCell(Widget, view.Args, view.EtoControl); return(view); }
public override nfloat GetPreferredWidth(object value, CGSize cellSize, int row, object dataItem) { var args = new MacCellFormatArgs(ColumnHandler.Widget, dataItem, row, field); ColumnHandler.DataViewHandler.Callback.OnCellFormatting(ColumnHandler.DataViewHandler.Widget, args); field.Font = args.Font.ToNS() ?? NSFont.BoldSystemFontOfSize(NSFont.SystemFontSize); field.ObjectValue = value as NSObject; return(field.Cell.CellSizeForBounds(new CGRect(0, 0, nfloat.MaxValue, cellSize.Height)).Width); }
public override nfloat GetPreferredWidth(object value, CGSize cellSize, int row, object dataItem) { field.TextField.Font = defaultFont; field.SetFrameSize(cellSize); var args = new MacCellFormatArgs(ColumnHandler.Widget, dataItem, row, field); ColumnHandler.DataViewHandler.OnCellFormatting(args); field.ObjectValue = value as NSObject; return(field.FittingSize.Width); }
public override nfloat GetPreferredWidth(object value, CGSize cellSize, int row, object dataItem) { field.Font = defaultFont; var args = new MacCellFormatArgs(ColumnHandler.Widget, dataItem, row, field); ColumnHandler.DataViewHandler.OnCellFormatting(args); if (args.FontSet) { field.Font = args.Font.ToNS(); } field.ObjectValue = value as NSObject ?? new NSString(string.Empty); return(field.Cell.CellSizeForBounds(new CGRect(0, 0, nfloat.MaxValue, cellSize.Height)).Width); }
public override NSView GetViewForItem(NSTableView tableView, NSTableColumn tableColumn, int row, NSObject obj, Func <NSObject, int, object> getItem) { var view = tableView.MakeView(tableColumn.Identifier, tableView) as EtoImageView; if (view == null) { view = new EtoImageView { Identifier = tableColumn.Identifier }; } var args = new MacCellFormatArgs(ColumnHandler.Widget, getItem(obj, row), row, view); ColumnHandler.DataViewHandler.OnCellFormatting(args); return(view); }
public override NSView GetViewForItem(NSTableView tableView, NSTableColumn tableColumn, int row, NSObject obj, Func <NSObject, int, object> getItem) { var view = tableView.MakeView(tableColumn.Identifier, tableView) as EtoCellView; if (view == null) { view = new EtoCellView { Handler = this, Identifier = tableColumn.Identifier, FocusRingType = NSFocusRingType.Exterior }; view.Bind(enabledBinding, tableColumn, "editable", null); } var args = new MacCellFormatArgs(ColumnHandler.Widget, getItem(obj, row), row, view); ColumnHandler.DataViewHandler.OnCellFormatting(args); return(view); }
public override NSView GetViewForItem(NSTableView tableView, NSTableColumn tableColumn, int row, NSObject obj, Func <NSObject, int, object> getItem) { var view = tableView.MakeView(tableColumn.Identifier, tableView) as NSLevelIndicator; if (view == null) { view = new NSLevelIndicator(); view.Identifier = tableColumn.Identifier; view.Cell = new EtoCell { MinValue = 0, MaxValue = 1 }; view.Cell.LevelIndicatorStyle = NSLevelIndicatorStyle.ContinuousCapacity; } var args = new MacCellFormatArgs(ColumnHandler.Widget, getItem(obj, row), row, view); ColumnHandler.DataViewHandler.OnCellFormatting(args); return(view); }
public override nfloat GetPreferredWidth(object value, CGSize cellSize, int row, object dataItem) { var args = new MacCellFormatArgs(ColumnHandler.Widget, dataItem, row, field); ColumnHandler.DataViewHandler.Callback.OnCellFormatting(ColumnHandler.DataViewHandler.Widget, args); field.Font = defaultFont; if (args.FontSet) { field.Font = args.Font.ToNS(); } if (field.Title != menu.Title) { field.Menu = menu.Copy() as NSMenu; } field.ObjectValue = value as NSObject; return(field.Cell.CellSizeForBounds(new CGRect(0, 0, nfloat.MaxValue, cellSize.Height)).Width); }
public override NSView GetViewForItem(NSTableView tableView, NSTableColumn tableColumn, int row, NSObject obj, Func <NSObject, int, object> getItem) { var view = tableView.MakeView(tableColumn.Identifier, tableView) as CellView; if (view == null) { var col = Array.IndexOf(tableView.TableColumns(), tableColumn); view = new CellView { Handler = this, Cell = new EtoCell(), Identifier = tableColumn.Identifier, Bordered = false, AutoresizingMask = NSViewResizingMask.HeightSizable | NSViewResizingMask.WidthSizable }; view.Activated += (sender, e) => { var control = (CellView)sender; var r = (int)control.Tag; var item = getItem(control.Item, r); var cellArgs = new GridViewCellEventArgs(ColumnHandler.Widget, r, (int)col, item); ColumnHandler.DataViewHandler.Callback.OnCellEditing(ColumnHandler.DataViewHandler.Widget, cellArgs); SetObjectValue(item, control.ObjectValue); ColumnHandler.DataViewHandler.Callback.OnCellEdited(ColumnHandler.DataViewHandler.Widget, cellArgs); control.ObjectValue = GetObjectValue(item); }; view.Bind("enabled", tableColumn, "editable", null); view.Menu = menu.Copy() as NSMenu; } else if (view.Title != menu.Title) { view.Menu = menu.Copy() as NSMenu; } view.Tag = row; view.Item = obj; var formatArgs = new MacCellFormatArgs(ColumnHandler.Widget, getItem(obj, row), row, view); ColumnHandler.DataViewHandler.OnCellFormatting(formatArgs); return(view); }
public override NSView GetViewForItem(NSTableView tableView, NSTableColumn tableColumn, int row, NSObject obj, Func <NSObject, int, object> getItem) { var view = tableView.MakeView(tableColumn.Identifier, tableView) as CellView; if (view == null) { view = new CellView { WeakHandler = new WeakReference(this), Cell = new EtoLabelFieldCell { Wraps = false, Scrollable = true, UsesSingleLineMode = false // true prevents proper vertical alignment }, Identifier = tableColumn.Identifier, Selectable = false, DrawsBackground = false, Bezeled = false, Bordered = false, AutoresizingMask = NSViewResizingMask.HeightSizable | NSViewResizingMask.WidthSizable }; var col = Array.IndexOf(tableView.TableColumns(), tableColumn); view.BecameFirstResponder += (sender, e) => { var control = (CellView)sender; var r = (int)control.Tag; var item = getItem(control.Item, r); var ee = MacConversions.CreateCellEventArgs(ColumnHandler.Widget, tableView, r, col, item); ColumnHandler.DataViewHandler.OnCellEditing(ee); }; view.EditingEnded += (sender, e) => { var notification = (NSNotification)sender; var control = (CellView)notification.Object; var r = (int)control.Tag; var item = getItem(control.Item, r); SetObjectValue(item, control.ObjectValue); var ee = MacConversions.CreateCellEventArgs(ColumnHandler.Widget, tableView, r, col, item); ColumnHandler.DataViewHandler.OnCellEdited(ee); control.ObjectValue = GetObjectValue(item) ?? new NSString(string.Empty); }; view.ResignedFirstResponder += (sender, e) => { var control = (CellView)sender; var r = (int)control.Tag; var item = getItem(control.Item, r); SetObjectValue(item, control.ObjectValue); var ee = MacConversions.CreateCellEventArgs(ColumnHandler.Widget, tableView, r, col, item); ColumnHandler.DataViewHandler.OnCellEdited(ee); }; view.Bind(editableBinding, tableColumn, "editable", null); } var cell = (EtoLabelFieldCell)view.Cell; cell.VerticalAlignment = VerticalAlignment; cell.Alignment = TextAlignment.ToNS(); view.Item = obj; view.Tag = row; var args = new MacCellFormatArgs(ColumnHandler.Widget, getItem(obj, row), row, view); ColumnHandler.DataViewHandler.OnCellFormatting(args); return(view); }