Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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);
        }
Esempio n. 13
0
        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);
        }