Exemple #1
0
        private void Initialize(Button button, double fontSize = -1, bool includeBevel = true, bool allowCropping = false, bool scoreIfEmpty = false, bool allowSplittingWords = false)
        {
            bool             isButtonColorSet = button.BackgroundColor.A > 0;
            LayoutChoice_Set sublayout;

            this.buttonBackground = new ContentView();
            ButtonConfigurer buttonConfigurer = new ButtonConfigurer(button, this.buttonBackground);

            if (fontSize > 0)
            {
                if (allowCropping)
                {
                    sublayout = TextLayout.New_Croppable(buttonConfigurer, fontSize, scoreIfEmpty);
                }
                else
                {
                    sublayout = new TextLayout(buttonConfigurer, fontSize, allowSplittingWords, scoreIfEmpty);
                }
            }
            else
            {
                List <LayoutChoice_Set> sublayoutOptions = new List <LayoutChoice_Set>(3);
                if (allowCropping)
                {
                    sublayoutOptions.Add(TextLayout.New_Croppable(buttonConfigurer, 30, scoreIfEmpty));
                    sublayoutOptions.Add(TextLayout.New_Croppable(buttonConfigurer, 16, scoreIfEmpty));
                    sublayoutOptions.Add(TextLayout.New_Croppable(buttonConfigurer, 12, scoreIfEmpty));
                }
                else
                {
                    sublayoutOptions.Add(new TextLayout(buttonConfigurer, 30, allowSplittingWords, scoreIfEmpty));
                    sublayoutOptions.Add(new TextLayout(buttonConfigurer, 16, allowSplittingWords, scoreIfEmpty));
                    sublayoutOptions.Add(new TextLayout(buttonConfigurer, 12, allowSplittingWords, scoreIfEmpty));
                }
                LayoutUnion layoutUnion = new LayoutUnion(sublayoutOptions);
                sublayout = layoutUnion;
            }

            // add a view behind the button to change its normal background color without changing its color when selected
            ContainerLayout backgroundLayout = new ContainerLayout(buttonBackground, sublayout, false);

            if (includeBevel)
            {
                buttonBackground.BackgroundColor = Color.Black;
                // add a small border, so that it's easy to see where the buttons end
                Thickness   innerBevelThickness = new Thickness(1);
                ContentView insideBevel         = new ContentView();
                insideBevel.Padding = innerBevelThickness;
                //insideBevel.BackgroundColor = Color.DarkGray;// Color.FromRgb(0.4, 0.4, 0.4);
                buttonConfigurer.InnerBevel = insideBevel;
                ContainerLayout middleLayout = new MustBorderLayout(insideBevel, backgroundLayout, innerBevelThickness, false);

                // add a bevel to the border
                Thickness   outerBevelThickness = new Thickness(1);
                ContentView outsideBevel        = new ContentView();
                outsideBevel.Padding = outerBevelThickness;
                //outsideBevel.BackgroundColor = Color.LightGray;// Color.FromRgb(0.63, 0.63, 0.63);
                buttonConfigurer.OuterBevel = outsideBevel;
                ContainerLayout outsideLayout = new MustBorderLayout(outsideBevel, middleLayout, outerBevelThickness, false);

                // add some extra space around it
                Thickness   spacingThickness = new Thickness(1);
                ContentView spacing          = new ContentView();
                spacing.Padding         = spacingThickness;
                spacing.BackgroundColor = Color.FromRgba(0, 0, 0, 0);
                ContainerLayout spacingLayout = new MustBorderLayout(spacing, outsideLayout, spacingThickness, false);

                this.Set_LayoutChoices(new List <LayoutChoice_Set>()
                {
                    spacingLayout, new ScoreShifted_Layout(null, LayoutScore.Get_CutOff_LayoutScore(1))
                });

                button.TextColor = Color.LightGray;
            }
            else
            {
                if (!isButtonColorSet)
                {
                    buttonBackground.BackgroundColor = Color.White;
                    button.TextColor = Color.Black;
                }
                this.Set_LayoutChoices(new List <LayoutChoice_Set>()
                {
                    backgroundLayout
                });
            }
            Effect effect = Effect.Resolve("VisiPlacement.ButtonEffect");

            button.Effects.Add(effect);

            this.buttonConfigurer = buttonConfigurer;
        }