private static void SetUnitySerializedFieldRule(IContextBoundSettingsStore settingsStore,
                                                        SettingsIndexedEntry entry, ClrUserDefinedNamingRule userRule)
        {
            settingsStore.SetIndexedValue(entry, UnityNamingRuleDefaultSettings.SerializedFieldRuleGuid, null,
                                          userRule);
#endif
        }
Exemple #2
0
        private void AddNamingSection(Lifetime lifetime, IContextBoundSettingsStore settingsStore)
        {
            BeginSection();

            // Rider doesn't have a UI for editing user defined rules. See RIDER-8339
            Header("Serialized field naming rules");

            var entry    = settingsStore.Schema.GetIndexedEntry(ourUserRulesAccessor);
            var userRule = GetUnitySerializedFieldRule(settingsStore, entry);

            Assertion.AssertNotNull(userRule, "userRule != null");

            var prefixProperty = new Property <string>(lifetime, "StringOptionViewModel_SerializedFieldPrefix");

            prefixProperty.SetValue(userRule.Policy.NamingRule.Prefix);
            prefixProperty.Change.Advise_NoAcknowledgement(lifetime, args =>
            {
                var rule = GetUnitySerializedFieldRule(settingsStore, entry);
                rule.Policy.NamingRule.Prefix = args.New ?? string.Empty;
                SetUnitySerializedFieldRule(settingsStore, entry, rule);
            });

            var suffixProperty = new Property <string>(lifetime, "StringOptionViewModel_SerializedFieldSuffix");

            suffixProperty.SetValue(userRule.Policy.NamingRule.Suffix);
            suffixProperty.Change.Advise_NoAcknowledgement(lifetime, args =>
            {
                var rule = GetUnitySerializedFieldRule(settingsStore, entry);
                rule.Policy.NamingRule.Suffix = args.New ?? string.Empty;
                SetUnitySerializedFieldRule(settingsStore, entry, rule);
            });

            var kindProperty = new Property <object>(lifetime, "ComboOptionViewModel_SerializedFieldNamingStyle");

            kindProperty.SetValue(userRule.Policy.NamingRule.NamingStyleKind);
            kindProperty.Change.Advise_NoAcknowledgement(lifetime, args =>
            {
                var rule = GetUnitySerializedFieldRule(settingsStore, entry);
                rule.Policy.NamingRule.NamingStyleKind = (NamingStyleKinds)args.New;
                SetUnitySerializedFieldRule(settingsStore, entry, rule);
            });

            var enabledProperty = new Property <bool>(lifetime, "BoolOptionViewModel_SerializedFieldEnableInspection");

            enabledProperty.SetValue(userRule.Policy.EnableInspection);
            enabledProperty.Change.Advise_NoAcknowledgement(lifetime, args =>
            {
                var existingRule = GetUnitySerializedFieldRule(settingsStore, entry);
                var newRule      = new ClrUserDefinedNamingRule(existingRule.Descriptor,
                                                                new NamingPolicy(existingRule.Policy.ExtraRules.ToIReadOnlyList(), existingRule.Policy.NamingRule, args.New));
                SetUnitySerializedFieldRule(settingsStore, entry, newRule);
            });

            WithIndent(AddStringOption(prefixProperty, "Prefix:"));
            WithIndent(AddStringOption(suffixProperty, "Suffix:"));
            WithIndent(AddComboOption(kindProperty, "Style:",
                                      new RadioOptionPoint(NamingStyleKinds.AaBb, "UpperCamelCase"),
                                      new RadioOptionPoint(NamingStyleKinds.AaBb_AaBb, "UpperCamelCase_UnderscoreTolerant"),
                                      new RadioOptionPoint(NamingStyleKinds.AaBb_aaBb, "UpperCamelCase_underscoreTolerant"),
                                      new RadioOptionPoint(NamingStyleKinds.aaBb, "lowerCamelCase"),
                                      new RadioOptionPoint(NamingStyleKinds.aaBb_AaBb, "lowerCamelCase_UnderscoreTolerant"),
                                      new RadioOptionPoint(NamingStyleKinds.aaBb_aaBb, "lowerCamelCase_underscoreTolerant"),
                                      new RadioOptionPoint(NamingStyleKinds.AA_BB, "ALL_UPPER"),
                                      new RadioOptionPoint(NamingStyleKinds.Aa_bb, "First_upper")));
            WithIndent(AddBoolOption(enabledProperty, "Enable inspection"));

            EndSection();
        }