private NamingRuleTreeItemViewModel CreateRoot(SerializableNamingStylePreferencesInfo info)
        {
            var root = new NamingRuleTreeItemViewModel("Naming Rules:");

            CreateRootHelper(root, info.NamingRules);
            return(root);
        }
예제 #2
0
        private string MethodNamesArePascalCaseOptionString()
        {
            var symbolSpecification = new SymbolSpecification(
                Guid.NewGuid(),
                "Name",
                SpecializedCollections.SingletonEnumerable(new SymbolSpecification.SymbolKindOrTypeKind(SymbolKind.Method)).ToList(),
                SpecializedCollections.EmptyList <SymbolSpecification.AccessibilityKind>(),
                SpecializedCollections.EmptyList <SymbolSpecification.ModifierKind>());

            var namingStyle = new NamingStyle();

            namingStyle.CapitalizationScheme = Capitalization.PascalCase;
            namingStyle.Name          = "Name";
            namingStyle.Prefix        = "";
            namingStyle.Suffix        = "";
            namingStyle.WordSeparator = "";


            var namingRule = new SerializableNamingRule();

            namingRule.SymbolSpecificationID = symbolSpecification.ID;
            namingRule.NamingStyleID         = namingStyle.ID;
            namingRule.EnforcementLevel      = DiagnosticSeverity.Error;

            var info = new SerializableNamingStylePreferencesInfo();

            info.SymbolSpecifications.Add(symbolSpecification);
            info.NamingStyles.Add(namingStyle);
            info.NamingRules.Add(namingRule);

            return(info.CreateXElement().ToString());
        }
        internal override void LoadSettings()
        {
            base.LoadSettings();

            var namingPreferencesXml = this.OptionService.GetOption(SimplificationOptions.NamingPreferences, _languageName);

            SerializableNamingStylePreferencesInfo preferencesInfo;

            if (string.IsNullOrEmpty(namingPreferencesXml))
            {
                preferencesInfo = new SerializableNamingStylePreferencesInfo();
            }
            else
            {
                preferencesInfo = SerializableNamingStylePreferencesInfo.FromXElement(XElement.Parse(namingPreferencesXml));
            }

            _viewModel       = new NamingStylesOptionPageControlViewModel(preferencesInfo, _languageName, _categories, _notificationService);
            this.DataContext = _viewModel;

            this.RootTreeView.ItemsPath             = nameof(NamingRuleTreeItemViewModel.Children);
            this.RootTreeView.IsExpandablePath      = nameof(NamingRuleTreeItemViewModel.HasChildren);
            this.RootTreeView.FilterParentEvaluator = GetParent;
            this.RootTreeView.RootItemsSource       = new ObservableCollection <NamingRuleTreeItemViewModel>()
            {
                _viewModel.rootNamingRule
            };
        }
        public NamingStyleOptionPageViewModel(SerializableNamingStylePreferencesInfo info)
        {
            var viewModels = new List <NamingRuleViewModel>();

            foreach (var namingRule in info.NamingRules)
            {
                var viewModel = new NamingRuleViewModel();

                viewModel.NamingStyles            = new ObservableCollection <NamingStyle>(info.NamingStyles);
                viewModel.Specifications          = new ObservableCollection <SymbolSpecification>(info.SymbolSpecifications);
                viewModel.NotificationPreferences = new List <EnforcementLevel>(_notifications);

                viewModel.SelectedSpecification          = viewModel.Specifications.Single(s => s.ID == namingRule.SymbolSpecificationID);
                viewModel.SelectedStyle                  = viewModel.NamingStyles.Single(s => s.ID == namingRule.NamingStyleID);
                viewModel.SelectedNotificationPreference = viewModel.NotificationPreferences.Single(n => n.Name == new EnforcementLevel(namingRule.EnforcementLevel).Name);

                viewModels.Add(viewModel);
            }

            CodeStyleItems = new ObservableCollection <NamingRuleViewModel>(viewModels);
            Specifications = new ObservableCollection <SymbolSpecification>(info.SymbolSpecifications);
            NamingStyles   = new ObservableCollection <NamingStyle>(info.NamingStyles);

            SetMoveArrowStatuses();
        }
 internal NamingStylesOptionPageControlViewModel(SerializableNamingStylePreferencesInfo info, string languageName, ImmutableArray <string> categories, INotificationService notificationService)
 {
     this._languageName           = languageName;
     this.categories              = categories;
     this.notificationService     = notificationService;
     this.SymbolSpecificationList = new ObservableCollection <SymbolSpecificationViewModel>(info.SymbolSpecifications.Select(s => new SymbolSpecificationViewModel(languageName, categories, s, notificationService)));
     this.NamingStyleList         = new ObservableCollection <NamingStyleViewModel>(info.NamingStyles.Select(s => new NamingStyleViewModel(s, this.notificationService)));
     this.rootNamingRule          = CreateRoot(info);
 }
        public SerializableNamingStylePreferencesInfo GetInfo()
        {
            // TODO!
            var info = new SerializableNamingStylePreferencesInfo();

            info.SymbolSpecifications = SymbolSpecificationList.Select(s => s.GetSymbolSpecification()).ToList();
            info.NamingStyles         = NamingStyleList.Select(s => s.GetNamingStyle()).ToList();
            info.NamingRules          = CreateNamingRuleTree();
            return(info);
        }
        internal override void LoadSettings()
        {
            base.LoadSettings();

            var options = OptionService.GetOption(SimplificationOptions.NamingPreferences, _languageName);

            if (string.IsNullOrEmpty(options))
            {
                return;
            }

            var namingPreferencesXml = this.OptionService.GetOption(SimplificationOptions.NamingPreferences, _languageName);
            var preferencesInfo      = SerializableNamingStylePreferencesInfo.FromXElement(XElement.Parse(namingPreferencesXml));

            _viewModel       = new NamingStyleOptionPageViewModel(preferencesInfo);
            this.DataContext = _viewModel;
        }
        internal override void SaveSettings()
        {
            var info = new SerializableNamingStylePreferencesInfo();

            foreach (var item in _viewModel.CodeStyleItems)
            {
                if (!item.IsComplete())
                {
                    continue;
                }

                var rule = new SerializableNamingRule()
                {
                    EnforcementLevel      = item.SelectedNotificationPreference.Value,
                    NamingStyleID         = item.SelectedStyle.ID,
                    SymbolSpecificationID = item.SelectedSpecification.ID
                };

                info.NamingRules.Add(rule);
            }

            foreach (var item in _viewModel.Specifications)
            {
                info.SymbolSpecifications.Add(item);
            }

            foreach (var item in _viewModel.NamingStyles)
            {
                info.NamingStyles.Add(item);
            }

            var oldOptions = OptionService.GetOptions();
            var newOptions = oldOptions.WithChangedOption(SimplificationOptions.NamingPreferences, _languageName, info.CreateXElement().ToString());

            OptionService.SetOptions(newOptions);
            OptionLogger.Log(oldOptions, newOptions);
        }