public AutoFormsCustomAttribute(
     string customControlType,
     string label = null,
     AutoFormsOrientation orientation = AutoFormsOrientation.Default,
     AutoFormsLayoutOptions horizontalLabelOptions   = AutoFormsLayoutOptions.Default,
     AutoFormsLayoutOptions horizontalControlOptions = AutoFormsLayoutOptions.Default,
     double controlWidthRequest = -1,
     string itemStyle           = null,
     string labelStyleOverride  = null,
     string placeholder         = null,
     double heightRequest       = -1,
     string isVisible           = null,
     string isEnabled           = null,
     string isFocused           = null,
     int filter           = 0,
     double paddingLeft   = 0,
     double paddingRight  = 0,
     double paddingTop    = 0,
     double paddingBottom = 0,
     double layoutHorizontalPercentageOverride = -1,
     string[] grouped = null
     ) :
     base(label, AutoFormsType.Custom, orientation, horizontalLabelOptions, horizontalControlOptions, controlWidthRequest, itemStyle, labelStyleOverride, placeholder, heightRequest, isVisible, isEnabled, isFocused, filter,
          paddingLeft, paddingRight, paddingTop, paddingBottom, layoutHorizontalPercentageOverride, grouped)
 {
     CustomControlType = customControlType;
 }
        protected View CreateControlContainer(string bindingName, Type fieldType, AutoFormsOrientation orientation)
        {
            var c = CreateControl(bindingName, fieldType);

            if (c == null)
            {
                return(null);
            }

            if (_attribute.ControlWidthRequest > 0)
            {
                c.WidthRequest = _attribute.ControlWidthRequest;
            }

            SetHorizontalLayoutOptions(c, _attribute.HorizontalControlOptions);

            if (orientation == AutoFormsOrientation.Horizontal)
            {
                Grid.SetColumn(c, 1);
            }
            else if (orientation == AutoFormsOrientation.HorizontalReversed)
            {
                Grid.SetColumn(c, 0);
            }
            else
            {
                Grid.SetRow(c, 1);
            }


            return(c);
        }
Beispiel #3
0
 public AutoFormsListItemAttribute(
     string label              = null,
     double value              = 1,
     GridUnitType gridType     = GridUnitType.Star,
     string itemStyle          = null,
     string labelStyleOverride = null,
     TextAlignment horizontalHeaderAlignment = TextAlignment.Start,
     TextAlignment horizontalItemAlignment   = TextAlignment.Start,
     AutoFormsType type = AutoFormsType.Auto,
     AutoFormsOrientation orientation = AutoFormsOrientation.Horizontal,
     AutoFormsLayoutOptions horizontalLabelOptions   = AutoFormsLayoutOptions.Default,
     AutoFormsLayoutOptions horizontalControlOptions = AutoFormsLayoutOptions.Default,
     int controlWidthRequest = -1,
     string placeholder      = null,
     int heightRequest       = -1,
     string isVisible        = null,
     string isEnabled        = null,
     string isFocused        = null,
     int filter       = 0,
     string[] grouped = null,
     object sortValue = null) : base(
         label, type, orientation, horizontalLabelOptions, horizontalControlOptions, controlWidthRequest, itemStyle, labelStyleOverride, placeholder, heightRequest, isVisible, isEnabled, isFocused, filter, grouped: grouped)
 {
     Value    = value;
     GridType = gridType;
     HorizontalHeaderAlignment = horizontalHeaderAlignment;
     HorizontalItemAlignment   = horizontalItemAlignment;
     SortValue = sortValue;
 }
Beispiel #4
0
        public AutoFormsAttribute(
            string label       = null,
            AutoFormsType type = AutoFormsType.Auto,
            AutoFormsOrientation orientation = AutoFormsOrientation.Default,
            AutoFormsLayoutOptions horizontalLabelOptions   = AutoFormsLayoutOptions.Default,
            AutoFormsLayoutOptions horizontalControlOptions = AutoFormsLayoutOptions.Default,
            double controlWidthRequest = -1,
            string itemStyle           = null,
            string labelStyleOverride  = null,
            string placeholder         = null,
            double heightRequest       = -1,
            string isVisible           = null,
            string isEnabled           = null,
            string isFocused           = null,
            int filter           = 0,
            double paddingLeft   = 25,
            double paddingRight  = 25,
            double paddingTop    = 0,
            double paddingBottom = 20,
            double layoutHorizontalPercentageOverride = -1,
            string[] grouped = null) : base(filter)
        {
            Label              = label;
            ItemStyle          = itemStyle;
            LabelStyleOverride = labelStyleOverride;
            Placeholder        = placeholder;
            Type          = type;
            HeightRequest = heightRequest;
            IsVisible     = isVisible;
            IsEnabled     = isEnabled;
            IsFocused     = isFocused;
            PaddingLeft   = paddingLeft;
            PaddingRight  = paddingRight;
            PaddingTop    = paddingTop;
            PaddingBottom = paddingBottom;
            LayoutHorizontalPercentageOverride = layoutHorizontalPercentageOverride;
            Grouped = grouped;

            Orientation              = orientation;
            HorizontalLabelOptions   = horizontalLabelOptions;
            HorizontalControlOptions = horizontalControlOptions;
            ControlWidthRequest      = controlWidthRequest;
        }
        protected virtual View CreateLabel(string label, Style labelStyle, AutoFormsOrientation orientation, int col = 0, int row = 0)
        {
            var l = new Label
            {
                Style           = _labelStyleOverride ?? labelStyle,
                Text            = GetLocalizedString(label),
                VerticalOptions =
                    orientation == AutoFormsOrientation.Horizontal && _attribute.HeightRequest > 0
                    ? LayoutOptions.StartAndExpand
                    : LayoutOptions.CenterAndExpand,
                VerticalTextAlignment   = TextAlignment.Center,
                HorizontalOptions       = LayoutOptions.Fill,
                HorizontalTextAlignment = orientation == AutoFormsOrientation.Horizontal
                    ? TextAlignment.End
                    : TextAlignment.Start,
                LineBreakMode      = LineBreakMode.WordWrap,
                Margin             = new Thickness(0, 0, 0, 0),
                GestureRecognizers =
                {
                    new TapGestureRecognizer
                    {
                        Command = new Command(OnSelectedText)
                    }
                }
            };

            if (string.IsNullOrEmpty(_attribute.IsVisible) == false)
            {
                l.SetBinding(IsVisibleProperty, new Binding(_attribute.IsVisible, BindingMode.TwoWay));
            }

            //update the horizontal options if provided
            if (_attribute.Orientation == AutoFormsOrientation.Horizontal)
            {
                SetHorizontalLayoutOptions(l, _attribute.HorizontalLabelOptions);
            }

            Grid.SetColumn(l, col);
            Grid.SetRow(l, row);

            return(l);
        }
Beispiel #6
0
        private void AddControlContainers(string bindingName, Type propertyType, AutoFormsOrientation orientation)
        {
            var dict = EnumHelper.ToDictionary(propertyType);

            var inline = false;

            if (_attribute is AutoFormsRadioButtonAttribute rba)
            {
                inline = rba.Inline;
            }

            var g = new RadioGroup
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.StartAndExpand,
            };

            g.SetBinding(
                RadioGroup.SelectedIndexProperty,
                new Binding(bindingName, BindingMode.TwoWay, new EnumConverter(), propertyType));

            var h = new Grid
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.StartAndExpand,
            };

            if (orientation == AutoFormsOrientation.Horizontal)
            {
                Grid.SetRow(g, 1);
                Grid.SetColumn(g, 1);
                Grid.SetRow(h, 0);
                Grid.SetColumn(h, 1);
            }
            else
            {
                Grid.SetRow(g, 1);
                Grid.SetColumn(g, 1);
                Grid.SetRow(h, 1);
                Grid.SetColumn(h, 0);
            }


            foreach (var kvp in dict)
            {
                var radio = new RadioButton
                {
                    HorizontalOptions = inline ? LayoutOptions.End : LayoutOptions.CenterAndExpand,
                    VerticalOptions   = LayoutOptions.CenterAndExpand,
                };

                var lbl = new Label
                {
                    Style                   = LabelStyle,
                    Text                    = kvp.Value,
                    VerticalOptions         = LayoutOptions.CenterAndExpand,
                    VerticalTextAlignment   = TextAlignment.Center,
                    HorizontalOptions       = LayoutOptions.Fill,
                    HorizontalTextAlignment = inline ? TextAlignment.Start : TextAlignment.Center,
                    LineBreakMode           = LineBreakMode.WordWrap,
                    GestureRecognizers      =
                    {
                        new TapGestureRecognizer
                        {
                            Command = new Command(() => radio.SelectItem())
                        }
                    }
                };

                if (_attribute.Orientation == AutoFormsOrientation.Horizontal)
                {
                    if (!inline)
                    {
                        g.ColumnDefinitions.Add(new ColumnDefinition {
                            Width = GridLength.Star
                        });
                        h.ColumnDefinitions.Add(new ColumnDefinition {
                            Width = GridLength.Star
                        });
                        Grid.SetColumn(radio, g.ColumnDefinitions.Count - 1);
                        Grid.SetColumn(lbl, g.ColumnDefinitions.Count - 1);
                    }
                    else
                    {
                        g.ColumnDefinitions.Add(new ColumnDefinition {
                            Width = GridLength.Star
                        });
                        Grid.SetColumn(radio, g.ColumnDefinitions.Count - 1);
                        g.ColumnDefinitions.Add(new ColumnDefinition {
                            Width = GridLength.Star
                        });
                        Grid.SetColumn(lbl, g.ColumnDefinitions.Count - 1);
                    }
                }
                else
                {
                    // have to force them the same height
                    h.RowDefinitions.Add(new RowDefinition {
                        Height = 40
                    });
                    g.RowDefinitions.Add(new RowDefinition {
                        Height = 40
                    });

                    Grid.SetRow(radio, g.RowDefinitions.Count - 1);
                    Grid.SetRow(lbl, g.RowDefinitions.Count - 1);

                    if (!inline)
                    {
                        lbl.HorizontalTextAlignment = TextAlignment.End;
                        radio.HorizontalOptions     = LayoutOptions.StartAndExpand;
                    }
                    else
                    {
                        if (g.ColumnDefinitions.Count < 2)
                        {
                            g.ColumnDefinitions.Add(new ColumnDefinition {
                                Width = GridLength.Auto
                            });
                        }
                        if (g.ColumnDefinitions.Count < 2)
                        {
                            g.ColumnDefinitions.Add(new ColumnDefinition {
                                Width = GridLength.Star
                            });
                        }

                        Grid.SetColumn(radio, 0);
                        Grid.SetColumn(lbl, 1);
                    }
                }

                if (!inline)
                {
                    h.Children.Add(lbl);
                }
                else
                {
                    g.Children.Add(lbl);
                }
                g.Children.Add(radio);
            }

            if (_attribute.Orientation == AutoFormsOrientation.Horizontal)
            {
                SetHorizontalLayoutOptions(g, _attribute.HorizontalControlOptions);
                SetHorizontalLayoutOptions(h, _attribute.HorizontalControlOptions);
            }

            if (_attribute.ControlWidthRequest > 0)
            {
                g.WidthRequest = _attribute.ControlWidthRequest;
                h.WidthRequest = _attribute.ControlWidthRequest;
            }


            var c = Content as Grid;

            c.Children.Add(g);

            if (!_hideHeader && !inline)
            {
                c.Children.Add(h);
            }
        }
        private void AddControlContainers(string bindingName, Type propertyType, AutoFormsOrientation orientation)
        {
            var dict = EnumHelper.ToDictionary(propertyType);

            var g = new SelectButtonGroup()
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.StartAndExpand,
                ColumnDefinitions =

                {
                    new ColumnDefinition {
                        Width = new GridLength(1, GridUnitType.Star)
                    },
                    new ColumnDefinition {
                        Width = new GridLength(1, GridUnitType.Star)
                    },
                    new ColumnDefinition {
                        Width = new GridLength(1, GridUnitType.Star)
                    },
                },
                ColumnSpacing = 10,
                RowSpacing    = 10
            };

            g.SetBinding(
                SelectButtonGroup.SelectedIndexProperty,
                new Binding(bindingName, BindingMode.TwoWay, new EnumConverter(), propertyType));

            for (var i = 0; i < (dict.Count / 3) + 1; i++)
            {
                g.RowDefinitions.Add(new RowDefinition {
                    Height = GridLength.Auto
                });
            }


            if (orientation == AutoFormsOrientation.Horizontal)
            {
                Grid.SetRow(g, 0);
                Grid.SetColumn(g, 1);
            }
            else
            {
                Grid.SetRow(g, 1);
                Grid.SetColumn(g, 0);
            }



            var row = 0;
            var col = 0;

            foreach (var kvp in dict)
            {
                if (col >= g.ColumnDefinitions.Count)
                {
                    col = 0; //set the column
                    row++;
                }
                var button = new SelectButton()
                {
                    HorizontalOptions = LayoutOptions.FillAndExpand,
                    Text  = GetLocalizedString(kvp.Value),
                    Style = _itemStyle,
                };

                Grid.SetColumn(button, col++);
                Grid.SetRow(button, row);


                g.Children.Add(button);
            }


            var c = Content as Grid;

            c.Children.Add(g);
        }