public MoveStaticMembersDialogViewModel( StaticMemberSelectionViewModel memberSelectionViewModel, string defaultType, ImmutableArray <string> existingNames, string prependedNamespace, ISyntaxFacts syntaxFacts) { MemberSelectionViewModel = memberSelectionViewModel; _syntaxFacts = syntaxFacts ?? throw new ArgumentNullException(nameof(syntaxFacts)); _destinationName = defaultType; _existingNames = existingNames; PrependedNamespace = string.IsNullOrEmpty(prependedNamespace) ? prependedNamespace : prependedNamespace + "."; PropertyChanged += MoveMembersToTypeDialogViewModel_PropertyChanged; OnDestinationUpdated(); }
// internal for testing purposes, get the view model internal static MoveStaticMembersDialogViewModel GetViewModel( Document document, INamedTypeSymbol selectedType, ISymbol?selectedNodeSymbol, IGlyphService?glyphService, IUIThreadOperationExecutor uiThreadOperationExecutor) { var membersInType = selectedType.GetMembers(). WhereAsArray(member => MemberAndDestinationValidator.IsMemberValid(member) && member.IsStatic); var memberViewModels = membersInType .SelectAsArray(member => new SymbolViewModel <ISymbol>(member, glyphService) { // The member user selected will be checked at the beginning. IsChecked = SymbolEquivalenceComparer.Instance.Equals(selectedNodeSymbol, member), }); using var cancellationTokenSource = new CancellationTokenSource(); var memberToDependentsMap = SymbolDependentsBuilder.FindMemberToDependentsMap(membersInType, document.Project, cancellationTokenSource.Token); var existingTypeNames = selectedType.ContainingNamespace.GetAllTypes(cancellationTokenSource.Token).SelectAsArray(t => t.ToDisplayString()); var candidateName = selectedType.Name + "Helpers"; var defaultTypeName = NameGenerator.GenerateUniqueName(candidateName, name => !existingTypeNames.Contains(name)); var containingNamespaceDisplay = selectedType.ContainingNamespace.IsGlobalNamespace ? string.Empty : selectedType.ContainingNamespace.ToDisplayString(); var selectMembersViewModel = new StaticMemberSelectionViewModel( uiThreadOperationExecutor, memberViewModels, memberToDependentsMap); return(new MoveStaticMembersDialogViewModel(selectMembersViewModel, defaultTypeName, existingTypeNames, containingNamespaceDisplay, document.GetRequiredLanguageService <ISyntaxFactsService>())); }
internal StaticMemberSelection(StaticMemberSelectionViewModel viewModel) { ViewModel = viewModel; DataContext = ViewModel; InitializeComponent(); }