public static void ClearDropdownList(this DynamicDropdownField dynamicDropdown, MVRScript context)
 {
     foreach (var prevOption in dynamicDropdown.options)
     {
         if (prevOption.Key == null)
         {
             return;
         }
         context.RemoveButton(prevOption.Key);
     }
     GameObject.Destroy(dynamicDropdown.backpanel);
     dynamicDropdown.backpanel = null;
 }
コード例 #2
0
        public void ShowDropDownItems(GameObject parent, DynamicDropdownField dynamicDropdown, float width, float height, int left, int top, Color color, Color hoverColor, Color textColor, UnityAction <string> onOptionSelect = null, bool refreshOnly = false)
        {
            top = top + 5;

            if (dynamicDropdown.isOpen)
            {
                ClearDropdownList(dynamicDropdown);
                dynamicDropdown.isOpen = false;
                return;
            }

            try
            {
                var panelHeight = dynamicDropdown.items.Count * height + 10;
                var panelTop    = top + height * 2 - 5;
                dynamicDropdown.backpanel = CreatePanel(parent, width + 10, panelHeight, left - 5, (int)(panelTop), color + new Color(0.5f, 0.3f, 0.3f), Color.white);

                dynamicDropdown.options = new Dictionary <UIDynamicButton, string>();
                var itemTop = top + (height * 2);
                foreach (var option in dynamicDropdown.items)
                {
                    //if (dynamicDropdown.selectedValue == option) continue;
                    var optionButton = CreateButton(parent, option, width, height, left, (int)itemTop, color + new Color(0.1f, 0.1f, 0.1f), hoverColor + new Color(0.1f, 0.1f, 0.1f), textColor + new Color(0.1f, 0.1f, 0.1f));
                    optionButton.buttonText.fontSize = dynamicDropdown.label.buttonText.fontSize;
                    optionButton.button.onClick.AddListener(() =>
                    {
                        try
                        {
                            dynamicDropdown.selectedOption.buttonText.text = option;
                            dynamicDropdown.selectedValue = option;
                            ClearDropdownList(dynamicDropdown);
                            dynamicDropdown.isOpen = false;
                            onOptionSelect.Invoke(option);
                        }
                        catch (Exception e)
                        {
                            SuperController.LogError(e.ToString());
                        }
                    });
                    dynamicDropdown.options.Add(optionButton, option);
                    itemTop += height;
                }
                dynamicDropdown.isOpen = true;
            }
            catch (Exception e)
            {
                SuperController.LogError(e.ToString());
            }
        }
 public static void Destroy(this DynamicDropdownField listBox, MVRScript context)
 {
     listBox.ClearDropdownList(context);
     if (listBox.label != null)
     {
         context.RemoveButton(listBox.label);
     }
     if (listBox.infoBox != null)
     {
         context.RemoveTextField(listBox.infoBox);
     }
     if (listBox.selectedOption != null)
     {
         context.RemoveButton(listBox.selectedOption);
     }
 }
コード例 #4
0
 public void ClearDropdownList(DynamicDropdownField dynamicDropdown)
 {
     foreach (var prevOption in dynamicDropdown.options)
     {
         if (prevOption.Key == null)
         {
             return;
         }
         _context.RemoveButton(prevOption.Key);
     }
     GameObject.Destroy(dynamicDropdown.backpanel);
     dynamicDropdown.backpanel = null;
     //var backpanelRect = dynamicDropdown.backpanel.GetComponents<RectTransform>().First();
     //backpanelRect.sizeDelta = new Vector2(backpanelRect.rect.width, 0);
     //dynamicDropdown.options = new Dictionary<UIDynamicButton, string>();
 }
 public static void MinimizeDynamicDropdown(this DynamicDropdownField dropdown, MVRScript context, bool minimize = true)
 {
     if (minimize)
     {
         dropdown.ClearDropdownList(context);
     }
     if (dropdown.backpanel != null)
     {
         dropdown.backpanel.transform.localScale = minimize ? Vector3.zero : Vector3.one;
     }
     if (dropdown.infoBox != null)
     {
         dropdown.infoBox.transform.localScale = minimize ? Vector3.zero : Vector3.one;
     }
     if (dropdown.selectedOption != null)
     {
         dropdown.selectedOption.transform.localScale = minimize ? Vector3.zero : Vector3.one;
     }
     dropdown.Minimized = minimize;
 }
コード例 #6
0
        public DynamicDropdownField CreateDynamicDropdown(GameObject parent, string name, List <string> items, float width, float height, int left, int top, Color color, Color hoverColor, Color textColor, int?fontSize = null, int infoBoxHeight = 0, UnityAction <string> onOptionSelect = null)
        {
            var dynamicDropdown = new DynamicDropdownField();

            dynamicDropdown.label = CreateButton(parent, name, width, 20, left, top, Color.clear, new Color(0.1f, 0.1f, 0.1f), textColor * 0.7f);
            dynamicDropdown.label.buttonText.fontSize  = (int)((fontSize ?? 20) * 0.9);
            dynamicDropdown.label.buttonText.alignment = TextAnchor.LowerLeft;

            dynamicDropdown.selectedOption = CreateButton(parent, "", width, height, left, (int)(top + 20), color, hoverColor, textColor);
            dynamicDropdown.selectedOption.buttonText.fontSize = fontSize ?? 20;
            dynamicDropdown.items = items;

            if (infoBoxHeight > 0)
            {
                dynamicDropdown.infoBox = CreateTextField(parent, "", width, infoBoxHeight, left, top + (int)(height) + 20, color + new Color(0.1f, 0.1f, 0.1f), textColor);
                dynamicDropdown.infoBox.UItext.fontSize  = (int)(fontSize * 0.9);
                dynamicDropdown.infoBox.UItext.fontStyle = FontStyle.Italic;
                dynamicDropdown.infoBox.UItext.alignment = TextAnchor.UpperLeft;
            }

            dynamicDropdown.selectedOption.button.onClick.AddListener(() =>
            {
                ShowDropDownItems(parent, dynamicDropdown, width, height, left, top, color, hoverColor, textColor, onOptionSelect);
            });

            dynamicDropdown.label.button.onClick.AddListener(() =>
            {
                dynamicDropdown.MinimizeDynamicDropdown(_context, !dynamicDropdown.Minimized);
            });

            dynamicDropdown.onRefresh = () =>
            {
                if (dynamicDropdown.infoBox != null)
                {
                    dynamicDropdown.infoBox.UItext.text = string.Join("\n•", dynamicDropdown.items.ToArray());
                }
            };

            return(dynamicDropdown);
        }
 public static void Refresh(this DynamicDropdownField listBox)
 {
     listBox.onRefresh.Invoke();
 }
 public static void SetItems(this DynamicDropdownField listBox, List <string> items)
 {
     listBox.items = items;
     listBox.onRefresh.Invoke();
 }