public NodeRoleSelectionSetting() : base()
        {
            Content.SetPanelContent((panelContent) =>
            {
                Dropdown = panelContent.Add.TranslationDropdown();

                Dropdown.AddEventListener("onchange", (e) =>
                {
                    if (Dropdown?.Selected?.Value is Type roleType)
                    {
                        OnSelectRole(roleType);
                    }
                });

                foreach (Type roleType in Utils.GetTypes <Role>())
                {
                    Dropdown.Options.Add(new TranslationOption(new TranslationData(Utils.GetTranslationKey(Utils.GetLibraryName(roleType), "NAME")), roleType));
                }
            });
        }
Пример #2
0
        private static void CreateDropdownSetting(Panel parent, Settings.Settings settings, string categoryName, string propertyName, object propertyObject, PropertyInfo propertyInfo, PropertyInfo subPropertyInfo)
        {
            parent.Add.Panel(categoryName.ToLower());
            parent.Add.TranslationLabel(new TranslationData($"MENU.SETTINGS.TABS.{categoryName.ToUpper()}.{propertyName.ToUpper()}.TITLE"), "h3").AddTooltip(new TranslationData($"MENU.SETTINGS.TABS.{categoryName.ToUpper()}.{propertyName.ToUpper()}.DESCRIPTION"));

            TranslationDropdown dropdownSelection = parent.Add.TranslationDropdown();

            foreach (PropertyInfo possibleDropdownPropertyInfo in propertyInfo.PropertyType.GetProperties())
            {
                foreach (object possibleDropdownAttribute in possibleDropdownPropertyInfo.GetCustomAttributes())
                {
                    if (possibleDropdownAttribute is DropdownOptionsAttribute dropdownOptionsAttribute && dropdownOptionsAttribute.DropdownSetting.Equals(subPropertyInfo.Name))
                    {
                        dropdownSelection.AddEventListener("onchange", (e) =>
                        {
                            UpdateSettingsProperty(settings, propertyObject, propertyName, dropdownSelection.Selected.Value);
                        });

                        foreach (KeyValuePair <string, object> keyValuePair in Utils.GetPropertyValue <Dictionary <string, object> >(propertyObject, possibleDropdownPropertyInfo.Name))
                        {
                            Option option;

                            if (dropdownOptionsAttribute.AvoidTranslation)
                            {
                                option = new Option(keyValuePair.Key, keyValuePair.Value);
                            }
                            else
                            {
                                option = new TranslationOption(new TranslationData(keyValuePair.Key), keyValuePair.Value);
                            }

                            dropdownSelection.Options.Add(option);
                        }
                    }
                }
            }

            dropdownSelection.Select(Utils.GetPropertyValue <string>(propertyObject, propertyName));
        }