Пример #1
0
        // /////////////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// Construct a ListBox instance from the given template.
        /// </summary>
        /// <param name="template"></param>
        public ListBox(ListBoxTemplate template)
            : base(template)
        {
            Items = template.Items;
            Title = template.Title;
            if (Title == null)
                Title = "";

            CurrentSelected = -1;
            OwnerDraw = template.OwnerDraw;

            if (this.Size.Width < 3 || this.Size.Height < 3)
            {
                template.HasFrameBorder = false;
            }

            HasFrame = template.HasFrameBorder;
            HilightWhenMouseOver = template.HilightWhenMouseOver;
            CanHaveKeyboardFocus = template.CanHaveKeyboardFocus;

            LabelAlignment = template.LabelAlignment;
            TitleAlignment = template.TitleAlignment;
            CurrentSelected = template.InitialSelectedIndex;

            mouseOverIndex = -1;

            CalcMetrics(template);
        }
Пример #2
0
        // /////////////////////////////////////////////////////////////////////////////////
        #endregion
        #region Constructors
        // /////////////////////////////////////////////////////////////////////////////////
        /// <summary>
        /// Construct a ListBox instance from the given template.
        /// </summary>
        /// <param name="template"></param>
        public ListBox(ListBoxTemplate template)
            : base(template)
        {
            Items = template.Items;
            Title = template.Title;
            if (Title == null)
            {
                Title = "";
            }

            CurrentSelected = -1;
            OwnerDraw       = template.OwnerDraw;

            if (this.Size.Width < 3 || this.Size.Height < 3)
            {
                template.HasFrameBorder = false;
            }

            HasFrame             = template.HasFrameBorder;
            HilightWhenMouseOver = template.HilightWhenMouseOver;
            CanHaveKeyboardFocus = template.CanHaveKeyboardFocus;

            LabelAlignment  = template.LabelAlignment;
            TitleAlignment  = template.TitleAlignment;
            CurrentSelected = template.InitialSelectedIndex;

            mouseOverIndex = -1;

            CalcMetrics(template);
        }
Пример #3
0
        private void CalcMetrics(ListBoxTemplate template)
        {
            int nitms       = Items.Count;
            int expandTitle = 0;

            int delta = Size.Height - nitms - 1;

            if (template.HasFrameBorder)
            {
                delta -= 3;
            }

            numberItemsDisplayed = Items.Count;
            if (delta < 0)
            {
                numberItemsDisplayed += delta;
            }
            else if (delta > 0)
            {
                expandTitle = delta;
            }

            int titleWidth = Size.Width;

            int titleHeight = 1 + expandTitle;

            if (Title != "")
            {
                if (template.HasFrameBorder)
                {
                    titleRect = new Rect(Point.Origin.Shift(1, 1),
                                         new Size(titleWidth - 2, titleHeight));
                }
                else
                {
                    titleRect = new Rect(Point.Origin,
                                         new Size(titleWidth, titleHeight));
                }
            }

            int itemsWidth  = Size.Width;
            int itemsHeight = numberItemsDisplayed;

            if (template.HasFrameBorder)
            {
                itemsRect = new Rect(titleRect.LowerLeft.Shift(0, 2),
                                     new Size(itemsWidth - 2, itemsHeight));
            }
            else
            {
                itemsRect = new Rect(titleRect.LowerLeft.Shift(0, 1),
                                     new Size(itemsWidth, itemsHeight));
            }
        }
Пример #4
0
        protected override void OnSettingUp()
        {
            base.OnSettingUp();

            CheckBoxTemplate cb1 = new CheckBoxTemplate()
            {
                Label = " A Checkbox",
                UpperLeftPos = ViewRect.UpperLeft.Shift(1, 3),
            };
            AddControl(new CheckBox(cb1));

            CheckBoxTemplate cb2 = new CheckBoxTemplate()
            {
                Label = " Checkbox",
                MinimumWidth = cb1.CalculateSize().Width,
                CheckOnLeft = true
            };
            cb2.AlignTo(LayoutDirection.South, cb1, 1);
            AddControl(new CheckBox(cb2));

            CheckBoxTemplate cb3 = new CheckBoxTemplate()
            {
                Label = "Checkbox",
                MinimumWidth = cb1.CalculateSize().Width,
                CheckOnLeft = true,
                LabelAlignment = HorizontalAlignment.Right
            };
            cb3.AlignTo(LayoutDirection.South, cb2, 1);
            AddControl(new CheckBox(cb3));

            CheckBoxTemplate cb4 = new CheckBoxTemplate()
            {
                Label = "Checkbox",
                MinimumWidth = cb1.CalculateSize().Width,
                CheckOnLeft = true,
                LabelAlignment = HorizontalAlignment.Center,
            };
            cb4.AlignTo(LayoutDirection.South, cb3, 1);
            AddControl(new CheckBox(cb4));

            CheckBoxTemplate cb5 = new CheckBoxTemplate()
            {
                Label = "Checkbox",
                MinimumWidth = cb1.CalculateSize().Width,
                CheckOnLeft = false,
                LabelAlignment = HorizontalAlignment.Left,
                VerticalAlign = VerticalAlignment.Center,
                AutoSizeOverride = new Size(14,3),
                HasFrameBorder = false,
            };
            cb5.AlignTo(LayoutDirection.East, cb2, 1);
            AddControl(new CheckBox(cb5));

            CheckBoxTemplate cb6 = new CheckBoxTemplate()
            {
                Label = "Checkbox ",
                MinimumWidth = cb1.CalculateSize().Width,
                CheckOnLeft = false,
                LabelAlignment = HorizontalAlignment.Right,
                VerticalAlign = VerticalAlignment.Center,
                AutoSizeOverride = new Size(14, 3),
                HasFrameBorder = false,
            };
            cb6.AlignTo(LayoutDirection.South, cb5, 1);
            AddControl(new CheckBox(cb6));

            CheckBoxTemplate cb7 = new CheckBoxTemplate()
            {
                Label = Color.CYAN.DoForegroundCode() + "C" +
                    Color.RED.DoForegroundCode() + "o"+
                    Color.BLUE.DoForegroundCode() + "l"+
                    Color.BRASS.DoForegroundCode() + "o"+
                    Color.DARK_LIME.DoForegroundCode() + "r"+
                    Color.LIGHT_MAGENTA.DoForegroundCode() + "s" +
                    Color.StopColorCode + "!! ",
                CheckOnLeft = false,
                LabelAlignment = HorizontalAlignment.Center,
                HasFrameBorder = false,
            };
            cb7.AlignTo(LayoutDirection.South, cb6, 1);
            AddControl(new CheckBox(cb7));

            CheckBoxTemplate cb8 = new CheckBoxTemplate()
            {
                Label = "Custom",
                MinimumWidth = cb1.CalculateSize().Width,
                CheckOnLeft = false,
                LabelAlignment = HorizontalAlignment.Center,
            };
            cb8.AlignTo(LayoutDirection.North, cb5, 1);
            AddControl(new FancyCheck(cb8));

            ListBoxTemplate lb1 = new ListBoxTemplate()
            {
                Title = "A List Box",
                Items = new System.Collections.Generic.List<ListItemData>()
                {
                    new ListItemData("Item 1","Item 1 Tooltip"),
                    new ListItemData("Item 2","Item 2 Tooltip"),
                    new ListItemData("Item 3","Item 3 Tooltip"),
                    new ListItemData("Item 4","Item 4 Tooltip")
                },
            };
            lb1.AlignTo(LayoutDirection.South, cb4, 2);
            AddControl(new ListBox(lb1));

            ListBoxTemplate lb2 = new ListBoxTemplate()
            {
                Title = "A List Box",
                TitleAlignment = HorizontalAlignment.Right,
                LabelAlignment = HorizontalAlignment.Center,
                MinimumListBoxWidth = 20,
                Items = new System.Collections.Generic.List<ListItemData>()
                {
                    new ListItemData("Item 1","Item 1 Tooltip"),
                    new ListItemData("Item 2","Item 2 Tooltip"),
                    new ListItemData("Item 3","Item 3 Tooltip"),
                    new ListItemData("Item 4","Item 4 Tooltip")
                }
            };
            lb2.AlignTo(LayoutDirection.East, lb1, 2);
            AddControl(new ListBox(lb2));

            TextEntryTemplate t1 = new TextEntryTemplate()
            {
                Label = "Text Entry (Hit Enter to keep): ",
                MaximumCharacters = 6
            };
            t1.AlignTo(LayoutDirection.East, cb8, 2);
            AddControl(new TextEntry(t1));

            TextEntryTemplate t2 = new TextEntryTemplate()
            {
                Label = "Symbols Only: ",
                Validation = TextEntryValidations.Symbols,
                MaximumCharacters = 25
            };
            t2.AlignTo(LayoutDirection.South, t1, 2);
            AddControl(new TextEntry(t2));

            TextEntryTemplate t3 = new TextEntryTemplate()
            {
                Label = "Numbers & Symbols: ",
                Validation = TextEntryValidations.Numbers | TextEntryValidations.Symbols,
                MaximumCharacters = 20
            };
            t3.AlignTo(LayoutDirection.South, t2, 2);
            AddControl(new TextEntry(t3));

            TextEntryTemplate t4 = new TextEntryTemplate()
            {
                Label = "Don't need to hit Enter: ",
                MaximumCharacters = 4,
                CommitOnLostFocus = true,
            };
            t4.AlignTo(LayoutDirection.South, t3, 2);
            t4.UpperLeftPos = t4.UpperLeftPos.Shift(4, 0);
            AddControl(new TextEntry(t4));

            TextEntryTemplate t5 = new TextEntryTemplate()
            {
                Label = "Replace Text: ",
                MaximumCharacters = 11,
                CommitOnLostFocus = true,
                ReplaceOnFirstKey = true,
                StartingField = "Replace me",
                HasFrameBorder = false
            };
            t5.AlignTo(LayoutDirection.South, t4, 2);
            AddControl(new TextEntry(t5));

            ButtonTemplate mb1 = new ButtonTemplate()
            {
                Label = "Right Click for Menu"
            };
            mb1.AlignTo(LayoutDirection.South, lb2,3);
            AddControl(new MenuButton(mb1));

            RadioGroupTemplate rg1 = new RadioGroupTemplate()
            {
                Items = new System.Collections.Generic.List<RadioItemData>()
                {
                    new RadioItemData("Radio One","Tooltip for radio 1"),
                    new RadioItemData("Radio Two","Tooltip for radio 2"),
                    new RadioItemData("Radio Three","Tooltip for radio 3")
                },
            };
            rg1.AlignTo(LayoutDirection.South, t5, 2);
            AddControl(new RadioGroup(rg1));

            RadioGroupTemplate rg2 = new RadioGroupTemplate()
            {
                Items = new System.Collections.Generic.List<RadioItemData>()
                {
                    new RadioItemData("Radio One","Tooltip for radio 1"),
                    new RadioItemData("Radio Two","Tooltip for radio 2"),
                    new RadioItemData("Radio Three","Tooltip for radio 3")
                },
                HasFrameBorder = false,
                RadioOnLeft = false
            };
            rg2.AlignTo(LayoutDirection.South, rg1, 1);
            AddControl(new RadioGroup(rg2));

            PageInfo.AddText("This page shows a selection of Checkbox, TextEntry, ListBox, and RadioGroup controls." +
                "\n\nCheckbox controls are similar to buttons, except that there state (IsChecked) is persistant, and" +
                " this state is, by default, shown by a check box graphic." +
                "\n\nTextEntry controls allow user input.  Various behaviors of validation and committing the input are available." +
                "\n\nListBox controls are basically a list of clickable buttons with persistant state - one item is always the currently selected." +
                "\n\nMenu controls are similar to ListBox, except they automatically close if an item is selected or the mouse pointer leaves the area." +
                "\n\nRadioGroups are the same as ListBoxes, except the currently selected item is displayed differently.");
        }
Пример #5
0
        private void CalcMetrics(ListBoxTemplate template)
        {
            int nitms = Items.Count;
            int expandTitle = 0;

            int delta = Size.Height - nitms - 1;
            if (template.HasFrameBorder)
            {
                delta -= 3;
            }

            numberItemsDisplayed = Items.Count;
            if (delta < 0)
            {
                numberItemsDisplayed += delta;
            }
            else if (delta > 0)
            {
                expandTitle = delta;
            }

            int titleWidth = Size.Width;

            int titleHeight = 1 + expandTitle;

            if (Title != "")
            {
                if (template.HasFrameBorder)
                {
                    titleRect = new Rect(Point.Origin.Shift(1, 1),
                        new Size(titleWidth - 2, titleHeight));
                }
                else
                {
                    titleRect = new Rect(Point.Origin,
                        new Size(titleWidth, titleHeight));
                }
            }

            int itemsWidth = Size.Width;
            int itemsHeight = numberItemsDisplayed;

            if (template.HasFrameBorder)
            {
                itemsRect = new Rect(titleRect.LowerLeft.Shift(0, 2),
                    new Size(itemsWidth - 2, itemsHeight));
            }
            else
            {
                itemsRect = new Rect(titleRect.LowerLeft.Shift(0, 1),
                    new Size(itemsWidth, itemsHeight));
            }
        }