internal MoveStaticMembersDialog(MoveStaticMembersDialogViewModel viewModel)
            : base()
        {
            ViewModel   = viewModel;
            DataContext = viewModel;

            MemberSelectionControl = new StaticMemberSelection(ViewModel.MemberSelectionViewModel);

            // Set focus to first tab control when the window is loaded
            Loaded += (s, e) => MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));

            InitializeComponent();
        }
        // internal for testing purposes
        internal static MoveStaticMembersOptions GenerateOptions(string language, MoveStaticMembersDialogViewModel viewModel, bool dialogResult)
        {
            if (dialogResult)
            {
                // if the destination name contains extra namespaces, we want the last one as that is the real type name
                var typeName    = viewModel.DestinationName.Split('.').Last();
                var newFileName = Path.ChangeExtension(typeName, language == LanguageNames.CSharp ? ".cs" : ".vb");
                return(new MoveStaticMembersOptions(
                           newFileName,
                           viewModel.PrependedNamespace + viewModel.DestinationName,
                           viewModel.MemberSelectionViewModel.CheckedMembers.SelectAsArray(vm => vm.Symbol)));
            }

            return(MoveStaticMembersOptions.Cancelled);
        }