Exemplo n.º 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ViewToViewModelMappingHelper"/> class.
        /// </summary>
        /// <param name="viewModelContainer">The view model container.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="viewModelContainer"/> is <c>null</c>.</exception>
        /// <exception cref="ArgumentException">The <paramref name="viewModelContainer"/> is not a <see cref="DependencyObject"/>.</exception>
        public ViewToViewModelMappingHelper(IViewModelContainer viewModelContainer)
        {
            Argument.IsNotNull("viewModelContainer", viewModelContainer);

            Log.Debug("Initializing view model container to manage ViewToViewModel mappings");

            if (!(viewModelContainer is DependencyObject))
            {
                throw new ArgumentException(ResourceHelper.GetString("ViewModelContainerMustBeOfTypeDependencyObject"), "ViewModelContainer");
            }

            ViewModelContainer = viewModelContainer;
            var viewModelContainerType = ViewModelContainerType;

            if (!_viewToViewModelMappingContainers.ContainsKey(viewModelContainerType))
            {
                _viewToViewModelMappingContainers.Add(viewModelContainerType, new ViewToViewModelMappingContainer((DependencyObject)ViewModelContainer));
            }

            ViewModelContainer.ViewModelChanged += OnViewModelChanged;
            ViewModelContainer.PropertyChanged  += OnViewModelContainerPropertyChanged;

            InitializeViewModel(ViewModelContainer.ViewModel);

            Log.Debug("Initialized view model container to manage ViewToViewModel mappings");
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ViewToViewModelMappingHelper"/> class.
        /// </summary>
        /// <param name="viewModelContainer">The view model container.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="viewModelContainer"/> is <c>null</c>.</exception>
        /// <exception cref="ArgumentException">The <paramref name="viewModelContainer"/> is not a <see cref="DependencyObject"/>.</exception>
        public ViewToViewModelMappingHelper(IViewModelContainer viewModelContainer)
        {
            Argument.IsNotNull("viewModelContainer", viewModelContainer);

            Log.Debug("Initializing view model container to manage ViewToViewModel mappings");

            if (!(viewModelContainer is DependencyObject))
            {
                throw new ArgumentException(ResourceHelper.GetString("ViewModelContainerMustBeOfTypeDependencyObject"), "ViewModelContainer");
            }

            ViewModelContainer = viewModelContainer;
            var viewModelContainerType = ViewModelContainerType;

            if (!_viewToViewModelMappingContainers.ContainsKey(viewModelContainerType))
            {
                _viewToViewModelMappingContainers.Add(viewModelContainerType, new ViewToViewModelMappingContainer((DependencyObject)ViewModelContainer));
            }

            ViewModelContainer.ViewModelChanged += OnViewModelChanged;
            ViewModelContainer.PropertyChanged += OnViewModelContainerPropertyChanged;

            InitializeViewModel(ViewModelContainer.ViewModel);

            Log.Debug("Initialized view model container to manage ViewToViewModel mappings");
        }
Exemplo n.º 3
0
        /// <summary>
        /// Subscribes to the parent view model container.
        /// </summary>
        private void SubscribeToParentViewModelContainer()
        {
            if (!SupportParentViewModelContainers)
            {
                return;
            }

            if (HasParentViewModelContainer)
            {
                return;
            }

            _parentViewModelContainer = FindParentByPredicate(TargetControl, o => o is IViewModelContainer) as IViewModelContainer;
            if (_parentViewModelContainer != null)
            {
                Log.Debug("Found the parent view model container '{0}' for '{1}'", _parentViewModelContainer.GetType().Name, TargetControl.GetType().Name);
            }
            else
            {
                Log.Debug("Couldn't find parent view model container");
            }

            if (_parentViewModelContainer != null)
            {
                _parentViewModelContainer.ViewModelChanged += OnParentViewModelContainerViewModelChanged;
                _parentViewModelContainer.ViewLoading      += OnParentViewModelContainerLoading;
                _parentViewModelContainer.ViewUnloading    += OnParentViewModelContainerUnloading;

                SubscribeToParentViewModel(_parentViewModelContainer.ViewModel);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ViewToViewModelMappingContainer" /> class.
        /// </summary>
        /// <param name="viewModelContainer">The view.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="viewModelContainer" /> is <c>null</c>.</exception>
        public ViewToViewModelMappingContainer(IViewModelContainer viewModelContainer)
        {
            Argument.IsNotNull("view", viewModelContainer);

            var properties = viewModelContainer.GetType().GetPropertiesEx();

            foreach (var property in properties)
            {
                object[] viewToViewModelAttributes = property.GetCustomAttributesEx(typeof(ViewToViewModelAttribute), false);
                if (viewToViewModelAttributes.Length > 0)
                {
                    Log.Debug("Property '{0}' is decorated with the ViewToViewModelAttribute, creating a mapping", property.Name);

                    var viewToViewModelAttribute = (ViewToViewModelAttribute)viewToViewModelAttributes[0];

                    string propertyName          = property.Name;
                    string viewModelPropertyName = (string.IsNullOrEmpty(viewToViewModelAttribute.ViewModelPropertyName)) ? propertyName : viewToViewModelAttribute.ViewModelPropertyName;

                    var mapping = new ViewToViewModelMapping(propertyName, viewModelPropertyName, viewToViewModelAttribute.MappingType);

                    // Store it (in 2 dictionaries for high-speed access)
                    _viewToViewModelMappings.Add(property.Name, mapping);
                    _viewModelToViewMappings.Add(viewModelPropertyName, mapping);
                }
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Subscribes to the parent view model container.
        /// </summary>
        private void SubscribeToParentViewModelContainer()
        {
            if (!SupportParentViewModelContainers)
            {
                return;
            }

            if (HasParentViewModelContainer)
            {
                return;
            }

            _parentViewModelContainer = TargetView.FindParentViewModelContainer();
            if (_parentViewModelContainer != null)
            {
                Log.Debug("Found the parent view model container '{0}' for '{1}'", _parentViewModelContainer.GetType().Name, TargetView.GetType().Name);
            }
            else
            {
                Log.Debug("Couldn't find parent view model container");
            }

            ApiCop.UpdateRule <UnusedFeatureApiCopRule>("UserControlLogic.SupportParentViewModelContainers",
                                                        rule => rule.IncreaseCount(_parentViewModelContainer != null, TargetViewType.FullName));

            if (_parentViewModelContainer != null)
            {
                _parentViewModelContainer.ViewModelChanged += OnParentViewModelContainerViewModelChanged;

                SubscribeToParentViewModel(_parentViewModelContainer.ViewModel);
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ViewToViewModelMappingContainer" /> class.
        /// </summary>
        /// <param name="viewModelContainer">The view.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="viewModelContainer" /> is <c>null</c>.</exception>
        public ViewToViewModelMappingContainer(IViewModelContainer viewModelContainer)
        {
            Argument.IsNotNull("view", viewModelContainer);

            var properties = viewModelContainer.GetType().GetPropertiesEx();
            foreach (var property in properties)
            {
                object[] viewToViewModelAttributes = property.GetCustomAttributesEx(typeof(ViewToViewModelAttribute), false);
                if (viewToViewModelAttributes.Length > 0)
                {
                    Log.Debug("Property '{0}' is decorated with the ViewToViewModelAttribute, creating a mapping", property.Name);

                    var viewToViewModelAttribute = (ViewToViewModelAttribute)viewToViewModelAttributes[0];

                    string propertyName = property.Name;
                    string viewModelPropertyName = (string.IsNullOrEmpty(viewToViewModelAttribute.ViewModelPropertyName)) ? propertyName : viewToViewModelAttribute.ViewModelPropertyName;

                    var mapping = new ViewToViewModelMapping(propertyName, viewModelPropertyName, viewToViewModelAttribute.MappingType);

                    // Store it (in 2 dictionaries for high-speed access)
                    _viewToViewModelMappings.Add(property.Name, mapping);
                    _viewModelToViewMappings.Add(viewModelPropertyName, mapping);
                }
            }
        }
Exemplo n.º 7
0
        public SeasonsList( IViewModelContainer viewModelContainer, IDataContainer dataContainer, ISeriesList seriesList )
            : base(viewModelContainer, dataContainer)
        {
            MessengerInstance.Register<SelectedSeriesChanged>( this, OnSelectedSeriesChanged );
            Seasons = new ObservableCollection<SeasonEntry>();

            OnSelectedSeriesChanged( new SelectedSeriesChanged( seriesList.SelectedSeries ) );
        }
Exemplo n.º 8
0
		public SettingsDialogViewModel( IViewModelContainer viewModelContainer, IDataContainer dataContainer, IAppThemes themes ) : base( viewModelContainer, dataContainer )
		{
			Themes = themes ?? new AppThemes();
			AvailableAccents = Themes.Accents.ToList();
			AvailableThemes = Themes.Themes.ToList();

			AvailableLanguages = new List<CultureInfo>( ViewModelContainer.LanguageProvider.AvailableLanguages.OrderBy( l => l.NativeName ) );
			AvailableContentLanguages = Repositories.Languages.GetAll().Select( l => l.Culture ).OrderBy( l => l.NativeName ).ToList();
		}
Exemplo n.º 9
0
        /// <summary>
        /// Unsubscribes from the parent view model container.
        /// </summary>
        private void UnsubscribeFromParentViewModelContainer()
        {
            if (_parentViewModelContainer != null)
            {
                _parentViewModelContainer.ViewModelChanged -= OnParentViewModelContainerViewModelChanged;

                _parentViewModelContainer = null;
            }
        }
Exemplo n.º 10
0
        public EpisodesList( IViewModelContainer container, IDataContainer dataContainer, ISeriesList seriesList, ISeasonsList seasonsList )
            : base(container, dataContainer)
        {
            SeriesList = seriesList;

            Episodes = new ObservableCollection<EpisodeEntry>();
            MessengerInstance.Register<SelectedSeasonChanged>( this, OnSelectedSeasonChanged );

            OnSelectedSeasonChanged( new SelectedSeasonChanged( seasonsList?.SelectedSeason?.SeasonNumber ) );
        }
Exemplo n.º 11
0
        /// <summary>
        /// Uninitializes the <see cref="ViewToViewModelMapping"/> for the specified <see cref="IViewModelContainer"/>.
        /// </summary>
        /// <param name="viewModelContainer">The view model container the uninitialize the mappings for.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="viewModelContainer"/> is <c>null</c>.</exception>
        public static void UninitializeViewToViewModelMappings(IViewModelContainer viewModelContainer)
        {
            Argument.IsNotNull("viewModelContainer", viewModelContainer);

            if (_viewModelContainers.TryGetValue(viewModelContainer, out var viewToViewModelMappingHelper))
            {
                viewToViewModelMappingHelper.UninitializeViewToViewModelMappings();
                _viewModelContainers.Remove(viewModelContainer);
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// Uninitializes the <see cref="ViewToViewModelMapping"/> for the specified <see cref="IViewModelContainer"/>.
        /// </summary>
        /// <param name="viewModelContainer">The view model container the uninitialize the mappings for.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="viewModelContainer"/> is <c>null</c>.</exception>
        public static void UninitializeViewToViewModelMappings(IViewModelContainer viewModelContainer)
        {
            Argument.IsNotNull("viewModelContainer", viewModelContainer);

            if (_viewModelContainers.ContainsKey(viewModelContainer))
            {
                _viewModelContainers[viewModelContainer].UninitializeViewToViewModelMappings();
                _viewModelContainers.Remove(viewModelContainer);
            }
        }
Exemplo n.º 13
0
        /// <summary>
        /// Initializes the <see cref="ViewToViewModelMapping"/> for the specified <see cref="IViewModelContainer"/>.
        /// </summary>
        /// <param name="viewModelContainer">The view model container to initialize the mappings for.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="viewModelContainer"/> is <c>null</c>.</exception>
        public static void InitializeViewToViewModelMappings(IViewModelContainer viewModelContainer)
        {
            Argument.IsNotNull("viewModelContainer", viewModelContainer);

            if (_viewModelContainers.ContainsKey(viewModelContainer))
            {
                return;
            }

            _viewModelContainers.Add(viewModelContainer, new ViewToViewModelMappingHelper(viewModelContainer));
        }
Exemplo n.º 14
0
        public EpisodeDetails( IViewModelContainer viewModelContainer, IDataContainer dataContainer, IEpisodesList episodesList )
            : base(viewModelContainer, dataContainer)
        {
            MessengerInstance.Register<SelectedEpisodeChanged>( this, OnSelectedEpisodeChanged );

            Writers = new ObservableCollection<PersonEntry>();
            Directors = new ObservableCollection<PersonEntry>();
            GuestStars = new ObservableCollection<PersonEntry>();

            OnSelectedEpisodeChanged( new SelectedEpisodeChanged( episodesList.SelectedEpisode ) );
        }
Exemplo n.º 15
0
		public EpisodeEntry( IViewModelContainer viewModelContainer, IDataContainer dataContainer, Episode model, SeriesEntry series )
			: base( viewModelContainer, dataContainer )
		{
			Series = series;
			Model = model;

			if( model.BannerLocation != null )
			{
				BannerUrl = model.BannerLocation;
			}
		}
        /// <summary>
        /// Generate an HTML input element of type 'checkbox' and set its value from the ViewModel based on the expression provided.
        /// The checkbox element has an accompanying input element of type 'hidden' to support binding upon form post.
        /// </summary>
        /// <typeparam name="T">The type of the ViewModel.</typeparam>
        /// <param name="view">The view.</param>
        /// <param name="expression">Expression indicating the ViewModel member associated with the element.</param>
        public static CheckBox CheckBox <T>(this IViewModelContainer <T> view, Expression <Func <T, object> > expression) where T : class
        {
            var checkbox = new CheckBox(expression.GetNameFor(view), expression.GetMemberExpression(), view.Behaviors);
            var val      = expression.GetValueFrom(view.ViewModel) as bool?;

            if (val.HasValue)
            {
                checkbox.Checked(val.Value);
            }
            return(checkbox);
        }
Exemplo n.º 17
0
        /// <summary>
        /// Initializes a new instance of the <see cref="AudioBandToolbarViewModel"/> class.
        /// </summary>
        /// <param name="viewModels">The view models.</param>
        /// <param name="appSettings">The app settings.</param>
        /// <param name="audioSourceManager">The audio source mananger.</param>
        /// <param name="messageBus">The message bus.</param>
        /// <param name="audioSession">The audio session.</param>
        public AudioBandToolbarViewModel(IViewModelContainer viewModels, IAppSettings appSettings, IAudioSourceManager audioSourceManager, IMessageBus messageBus, IAudioSession audioSession)
        {
            _appSettings        = appSettings;
            _audioSourceManager = audioSourceManager;
            _messageBus         = messageBus;
            _audioSession       = audioSession;
            ViewModels          = viewModels;

            ShowSettingsWindowCommand = new RelayCommand(ShowSettingsWindowCommandOnExecute);
            LoadCommand = new AsyncRelayCommand <object>(LoadCommandOnExecute);
            SelectAudioSourceCommand = new AsyncRelayCommand <IInternalAudioSource>(SelectAudioSourceCommandOnExecute);
        }
        /// <summary>
        /// Renders a partial
        /// </summary>
        /// <typeparam name="T">The type of the ViewModel.</typeparam>
        /// <typeparam name="TPartialViewModel">The type of model of the partial.</typeparam>
        /// <param name="view">The view.</param>
        /// <param name="partialViewName">The name of the partial to render.</param>
        /// <param name="modelExpression">Expression of the model for the partial.</param>
        /// <param name="viewDataItems">A list of funcs, each epxressing a weakly typed view data item for the partial.  For example: index => i</param>
        public static void RenderPartial <T, TPartialViewModel>(this IViewModelContainer <T> view, string partialViewName, Expression <Func <T, TPartialViewModel> > modelExpression, params Func <string, object>[] viewDataItems)
            where T : class
            where TPartialViewModel : class
        {
            var viewDataDictionary = new ViewDataDictionary();

            foreach (var item in viewDataItems)
            {
                viewDataDictionary.Add(new KeyValuePair <string, object>(item.Method.GetParameters()[0].Name, item(null)));
            }
            new PartialRenderer <T, TPartialViewModel>(view, partialViewName, modelExpression).ViewData(viewDataDictionary).Render();
        }
        /// <summary>
        /// Generate an HTML input element of type 'hidden,' set it's name from the expression with '.Index' appended
        /// and set its value from the ViewModel from the valueExpression provided.
        /// </summary>
        /// <typeparam name="T">The type of the ViewModel.</typeparam>
        /// <param name="view">The view.</param>
        /// <param name="expression">Expression indicating the ViewModel member to use to derive the 'name' attribute.</param>
        /// <param name="valueExpression">Expression indicating the ViewModel member to use to get the value of the element.</param>
        public static Hidden Index <T>(this IViewModelContainer <T> view, Expression <Func <T, object> > expression,
                                       Expression <Func <T, object> > valueExpression) where T : class
        {
            var name  = expression.GetNameFor(view) + ".Index";
            var value = valueExpression.GetValueFrom(view.ViewModel);
            var id    = name.FormatAsHtmlId() + (value == null
                                ? null
                                : "_" + value.ToString().FormatAsHtmlId());
            var hidden = new Hidden(name, expression.GetMemberExpression(), view.Behaviors).Value(value).Id(id);

            return(hidden);
        }
 public AppInitializationServant(
     IViewModelMappingInitializationService viewModelMappingInitService,
     IViewModelContainer viewModelContainer,
     IExceptionInitializationService exceptionInitializationService,
     IInformationPublisher infoPublisher,
     IServiceLocator serviceLocator)
 {
     _viewModelMappingInitService    = viewModelMappingInitService;
     _viewModelContainer             = viewModelContainer;
     _exceptionInitializationService = exceptionInitializationService;
     _infoPublisher  = infoPublisher;
     _serviceLocator = serviceLocator;
 }
Exemplo n.º 21
0
        /// <summary>
        /// Unsubscribes from the parent view model container.
        /// </summary>
        private void UnsubscribeFromParentViewModelContainer()
        {
            if (_parentViewModelContainer != null)
            {
                // Fix for https://catelproject.atlassian.net/browse/CTL-182, we might be subscribed to a parent
                // while that doesn't change, we might be unloaded and we always need to unsubscribe from the parent view model
                UnsubscribeFromParentViewModel();

                _parentViewModelContainer.ViewModelChanged -= OnParentViewModelContainerViewModelChanged;

                _parentViewModelContainer = null;
            }
        }
        /// <summary>
        /// If ModelState contains an error for the specified view model member, generate an HTML span element with the
        /// specified message as inner text, or with the ModelState error message if the specified message is null.  If no
        /// class is specified the class attribute of the span element will be 'field-validation-error'.
        /// </summary>
        /// <typeparam name="T">The type of the ViewModel.</typeparam>
        /// <param name="view">The view.</param>
        /// <param name="expression">Expression indicating the ViewModel member associated with the element.</param>
        /// <param name="message">The error message.</param>
        public static ValidationMessage ValidationMessage <T>(this IViewModelContainer <T> view, Expression <Func <T, object> > expression, string message) where T : class
        {
            string errorMessage = null;
            var    name         = expression.GetNameFor(view);

            if (view.ViewData.ModelState.ContainsKey(name))
            {
                var modelState = view.ViewData.ModelState[name];
                if (modelState != null && modelState.Errors != null && modelState.Errors.Count > 0)
                {
                    errorMessage = modelState.Errors[0] == null
                                                ? null
                                                : message ?? modelState.Errors[0].ErrorMessage;
                }
            }
            return(new ValidationMessage(expression.GetMemberExpression(), view.Behaviors).Value(errorMessage));
        }
Exemplo n.º 23
0
		public SeriesEntry( IViewModelContainer viewModelContainer, IDataContainer dataContainer, Series model )
			: base( viewModelContainer, dataContainer )
		{
			Model = model;

			var allEpisodes = Model.Episodes.Where( e => e.SeasonNumber != 0 ).ToArray();

			Episodes = new ObservableCollection<EpisodeEntry>( allEpisodes.Select( e => new EpisodeEntry( viewModelContainer, dataContainer, e, this ) ) );
			Seasons =
				new ObservableCollection<SeasonEntry>( allEpisodes.Select( e => e.SeasonNumber ).Distinct().Select( n => new SeasonEntry( viewModelContainer, dataContainer, n, this ) ) );

			Name = model.Name;
			Rating = model.Rating;
			RatingsCount = model.Ratings;

			if( model.BannerLocation != null )
			{
				BannerUrl = model.BannerLocation;
			}
		}
Exemplo n.º 24
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ViewToViewModelMappingHelper"/> class.
        /// </summary>
        /// <param name="viewModelContainer">The view model container.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="viewModelContainer"/> is <c>null</c>.</exception>
        public ViewToViewModelMappingHelper(IViewModelContainer viewModelContainer)
        {
            Argument.IsNotNull("viewModelContainer", viewModelContainer);

            Log.Debug("Initializing view model container to manage ViewToViewModel mappings");

            ViewModelContainer = viewModelContainer;
            var viewModelContainerType = ViewModelContainerType;

            if (!_viewToViewModelMappingContainers.ContainsKey(viewModelContainerType))
            {
                _viewToViewModelMappingContainers.Add(viewModelContainerType, new ViewToViewModelMappingContainer(viewModelContainer));
            }

            ViewModelContainer.ViewModelChanged += OnViewModelChanged;
            ViewModelContainer.PropertyChanged += OnViewModelContainerPropertyChanged;

            InitializeViewModel(ViewModelContainer.ViewModel);

            Log.Debug("Initialized view model container to manage ViewToViewModel mappings");
        }
Exemplo n.º 25
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ViewToViewModelMappingHelper"/> class.
        /// </summary>
        /// <param name="viewModelContainer">The view model container.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="viewModelContainer"/> is <c>null</c>.</exception>
        public ViewToViewModelMappingHelper(IViewModelContainer viewModelContainer)
        {
            Argument.IsNotNull("viewModelContainer", viewModelContainer);

            Log.Debug("Initializing view model container to manage ViewToViewModel mappings");

            ViewModelContainer = viewModelContainer;
            var viewModelContainerType = ViewModelContainerType;

            if (!_viewToViewModelMappingContainers.ContainsKey(viewModelContainerType))
            {
                _viewToViewModelMappingContainers.Add(viewModelContainerType, new ViewToViewModelMappingContainer(viewModelContainer));
            }

            ViewModelContainer.ViewModelChanged += OnViewModelChanged;
            ViewModelContainer.PropertyChanged  += OnViewModelContainerPropertyChanged;

            InitializeViewModel(ViewModelContainer.ViewModel);

            Log.Debug("Initialized view model container to manage ViewToViewModel mappings");
        }
Exemplo n.º 26
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SettingsWindowViewModel"/> class.
        /// </summary>
        /// <param name="appSettings">The app settings.</param>
        /// <param name="dialogService">The dialog service.</param>
        /// <param name="viewModels">The view models.</param>
        /// <param name="messageBus">The message bus.</param>
        public SettingsWindowViewModel(IAppSettings appSettings, IDialogService dialogService, IViewModelContainer viewModels, IMessageBus messageBus)
        {
            _appSettings   = appSettings;
            _dialogService = dialogService;
            _messageBus    = messageBus;
            messageBus.Subscribe <EditStartMessage>(EditStartMessageOnPublished);
            ViewModels           = viewModels;
            _selectedProfileName = appSettings.CurrentProfile.Name;
            ProfileNames         = new ObservableCollection <string>(appSettings.Profiles.Select(p => p.Name));

            SelectViewModelCommand = new RelayCommand <ViewModelBase>(SelectViewModelOnExecute);
            DeleteProfileCommand   = new RelayCommand(DeleteProfileCommandOnExecute, DeleteProfileCommandCanExecute);
            DeleteProfileCommand.Observe(ProfileNames);
            AddProfileCommand    = new RelayCommand(AddProfileCommandOnExecute);
            RenameProfileCommand = new RelayCommand(RenameProfileCommandOnExecute);
            SaveCommand          = new RelayCommand(SaveCommandOnExecute, SaveCommandCanExecute);
            SaveCommand.Observe(this, nameof(HasUnsavedChanges));
            CloseCommand          = new RelayCommand(CloseCommandOnExecute);
            ImportProfilesCommand = new RelayCommand(ImportProfilesCommandOnExecute);
            ExportProfilesCommand = new RelayCommand(ExportProfilesCommandOnExecute);
        }
Exemplo n.º 27
0
        /// <summary>
        /// Handles the ViewModelChanged event of the parent ViewModel container.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.EventArgs" /> instance containing the event data.</param>
        private void OnParentViewModelContainerViewModelChanged(object sender, EventArgs e)
        {
            UnsubscribeFromParentViewModel();

            IViewModelContainer viewModelContainer = null;

            var senderAsLogic = sender as LogicBase;

            if (senderAsLogic != null)
            {
                viewModelContainer = senderAsLogic.TargetControl as IViewModelContainer;
            }
            else
            {
                viewModelContainer = sender as IViewModelContainer;
            }

            if (viewModelContainer != null)
            {
                SubscribeToParentViewModel(viewModelContainer.ViewModel);
            }
        }
Exemplo n.º 28
0
 private void RenderPartial(IViewModelContainer <TPartialViewModel> partial)
 {
     if (partial is ViewPage <TPartialViewModel> )
     {
         ((ViewPage <TPartialViewModel>)partial).RenderView(view.Html.ViewContext);
     }
     else if (partial is ViewUserControl <TPartialViewModel> )
     {
         ((ViewUserControl <TPartialViewModel>)partial).RenderView(view.Html.ViewContext);
     }
     else if (partial is ViewPage)
     {
         ((ViewPage)partial).RenderView(view.Html.ViewContext);
     }
     else if (partial is ViewUserControl)
     {
         ((ViewUserControl)partial).RenderView(view.Html.ViewContext);
     }
     else
     {
         throw new InvalidOperationException("IViewModelContainer<T>.RenderPartial can only be used to render views that are ViewPage<T>, ViewUserControl<T>, ViewPage or ViewUserControl.");
     }
 }
Exemplo n.º 29
0
        /// <summary>
        /// Uninitializes the <see cref="ViewToViewModelMapping"/> for the specified <see cref="IViewModelContainer"/>.
        /// </summary>
        /// <param name="viewModelContainer">The view model container the uninitialize the mappings for.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="viewModelContainer"/> is <c>null</c>.</exception>
        public static void UninitializeViewToViewModelMappings(IViewModelContainer viewModelContainer)
        {
            Argument.IsNotNull("viewModelContainer", viewModelContainer);

            if (_viewModelContainers.ContainsKey(viewModelContainer))
            {
                _viewModelContainers[viewModelContainer].UninitializeViewToViewModelMappings();
                _viewModelContainers.Remove(viewModelContainer);
            }
        }
 /// <summary>
 /// Generate a list of HTML input elements of type 'checkbox' and set its value from the ViewModel based on the expression provided.
 /// Each checkbox element has an accompanying input element of type 'hidden' to support binding upon form post.
 /// </summary>
 /// <typeparam name="T">The type of the ViewModel.</typeparam>
 /// <param name="view">The view.</param>
 /// <param name="expression">Expression indicating the ViewModel member associated with the element.</param>
 public static CheckBoxList CheckBoxList <T>(this IViewModelContainer <T> view, Expression <Func <T, object> > expression) where T : class
 {
     return(new CheckBoxList(expression.GetNameFor(view), expression.GetMemberExpression(), view.Behaviors)
            .Selected(expression.GetValueFrom(view.ViewModel) as IEnumerable));
 }
Exemplo n.º 31
0
 public ConfirmDialogViewModel( IViewModelContainer viewModelContainer, IDataContainer dataContainer )
     : base(viewModelContainer, dataContainer)
 {
 }
Exemplo n.º 32
0
 public StatisticsDialogViewModel( IViewModelContainer viewModelContainer, IDataContainer dataContainer )
     : base(viewModelContainer, dataContainer)
 {
 }
 /// <summary>
 /// Generate an HTML input element of type 'datetime-local' and set its value from the ViewModel based on the expression provided.
 /// </summary>
 /// <param name="view">The view.</param>
 /// <param name="expression">Expression indicating the ViewModel member associated with the element.</param>
 public static DateTimeLocalPicker DateTimeLocalPicker <T>(this IViewModelContainer <T> view, Expression <Func <T, object> > expression) where T : class
 {
     return(new DateTimeLocalPicker(expression.GetNameFor(view), expression.GetMemberExpression(), view.GetBehaviors())
            .Value(expression.GetValueFrom(view.ViewModel)));
 }
Exemplo n.º 34
0
        /// <summary>
        /// Subscribes to the parent view model container.
        /// </summary>
        private void SubscribeToParentViewModelContainer()
        {
            if (!SupportParentViewModelContainers)
            {
                return;
            }

            if (HasParentViewModelContainer)
            {
                return;
            }

            _parentViewModelContainer = TargetView.FindParentViewModelContainer();
            if (_parentViewModelContainer != null)
            {
                Log.Debug("Found the parent view model container '{0}' for '{1}'", _parentViewModelContainer.GetType().Name, TargetView.GetType().Name);
            }
            else
            {
                Log.Debug("Couldn't find parent view model container");
            }

            ApiCop.UpdateRule<UnusedFeatureApiCopRule>("UserControlLogic.SupportParentViewModelContainers",
                    rule => rule.IncreaseCount(_parentViewModelContainer != null, TargetViewType.FullName));

            if (_parentViewModelContainer != null)
            {
                _parentViewModelContainer.ViewModelChanged += OnParentViewModelContainerViewModelChanged;

                SubscribeToParentViewModel(_parentViewModelContainer.ViewModel);
            }
        }
 /// <summary>
 /// Generate an HTML input element of type 'hidden,' set it's name from the expression with '.Index' appended.
 /// </summary>
 /// <typeparam name="T">The type of the ViewModel.</typeparam>
 /// <param name="view">The view.</param>
 /// <param name="expression">Expression indicating the ViewModel member to use to derive the 'name' attribute.</param>
 public static Index Index <T>(this IViewModelContainer <T> view, Expression <Func <T, object> > expression) where T : class
 {
     return(new Index(expression.GetNameFor(view), expression.GetMemberExpression(), view.Behaviors));
 }
 protected CrossViewInjectorBase(IViewModelContainer vmContainer) : this()
 {
     ViewModelContainer = vmContainer;
     AssignCrossViewWrappersToVm();
 }
 /// <summary>
 /// Returns a name to match the value for the HTML id attribute form elements using the same expression.
 /// </summary>
 /// <typeparam name="T">The type of the ViewModel.</typeparam>
 /// <param name="view">The view.</param>
 /// <param name="expression">Expression indicating the ViewModel member.</param>
 public static string IdFor <T>(this IViewModelContainer <T> view, Expression <Func <T, object> > expression) where T : class
 {
     return(expression.GetNameFor(view).FormatAsHtmlId());
 }
 /// <summary>
 /// Generate an HTML input element of type 'submit.'
 /// </summary>
 /// <param name="view">The view.</param>
 /// <param name="text">Value of the 'value' and 'name' attributes.  Also used to derive the 'id' attribute.</param>
 public static SubmitButton SubmitButton <T>(this IViewModelContainer <T> view, string text) where T : class
 {
     return(new SubmitButton(text, view.Behaviors));
 }
 /// <summary>
 /// Generate an HTML textarea element and set its value from the ViewModel based on the expression provided.
 /// </summary>
 /// <typeparam name="T">The type of the ViewModel.</typeparam>
 /// <param name="view">The view.</param>
 /// <param name="expression">Expression indicating the ViewModel member associated with the element.</param>
 public static TextArea TextArea <T>(this IViewModelContainer <T> view, Expression <Func <T, object> > expression) where T : class
 {
     return(new TextArea(expression.GetNameFor(view), expression.GetMemberExpression(), view.Behaviors)
            .Value(expression.GetValueFrom(view.ViewModel)));
 }
Exemplo n.º 40
0
        /// <summary>
        /// Subscribes to the parent view model container.
        /// </summary>
        private void SubscribeToParentViewModelContainer()
        {
            if (!SupportParentViewModelContainers)
            {
                return;
            }

            if (HasParentViewModelContainer)
            {
                return;
            }

            _parentViewModelContainer = FindParentByPredicate(TargetControl, o => o is IViewModelContainer) as IViewModelContainer;
            if (_parentViewModelContainer != null)
            {
                Log.Debug("Found the parent view model container '{0}' for '{1}'", _parentViewModelContainer.GetType().Name, TargetControl.GetType().Name);
            }
            else
            {
                Log.Debug("Couldn't find parent view model container");
            }

            if (_parentViewModelContainer != null)
            {
                _parentViewModelContainer.ViewModelChanged += OnParentViewModelContainerViewModelChanged;
                _parentViewModelContainer.ViewLoading += OnParentViewModelContainerLoading;
                _parentViewModelContainer.ViewUnloading += OnParentViewModelContainerUnloading;

                SubscribeToParentViewModel(_parentViewModelContainer.ViewModel);
            }
        }
 /// <summary>
 /// If ModelState contains an error for the specified view model member, generate an HTML span element with the
 /// ModelState error message is the specified message is null.   If no class is specified the class attribute
 /// of the span element will be 'field-validation-error'.
 /// </summary>
 /// <typeparam name="T">The type of the ViewModel.</typeparam>
 /// <param name="view">The view.</param>
 /// <param name="expression">Expression indicating the ViewModel member associated with the element.</param>
 public static ValidationMessage ValidationMessage <T>(this IViewModelContainer <T> view, Expression <Func <T, object> > expression) where T : class
 {
     return(ValidationMessage(view, expression, null));
 }
Exemplo n.º 42
0
        /// <summary>
        /// Unsubscribes from the parent view model container.
        /// </summary>
        private void UnsubscribeFromParentViewModelContainer()
        {
            if (_parentViewModelContainer != null)
            {
                // Fix for https://catelproject.atlassian.net/browse/CTL-182, we might be subscribed to a parent
                // while that doesn't change, we might be unloaded and we always need to unsubscribe from the parent view model
                UnsubscribeFromParentViewModel();

                _parentViewModelContainer.ViewModelChanged -= OnParentViewModelContainerViewModelChanged;

                _parentViewModelContainer = null;
            }
        }
Exemplo n.º 43
0
		public SeasonEntry( IViewModelContainer viewModelContainer, IDataContainer dataContainer, uint seasonNumber, SeriesEntry series )
			: base( viewModelContainer, dataContainer )
		{
			Series = series;
			SeasonNumber = seasonNumber;
		}
Exemplo n.º 44
0
 public SeriesDetailsDialogViewModel( IViewModelContainer viewModelContainer, IDataContainer dataContainer )
     : base(viewModelContainer, dataContainer)
 {
 }
Exemplo n.º 45
0
		public SeriesList( IViewModelContainer viewModelContainer, IDataContainer dataContainer )
			: base( viewModelContainer, dataContainer )
		{
			MessengerInstance.Register<RefreshRequest>( this, msg => Reset() );
		}
Exemplo n.º 46
0
 public PartialRenderer(IViewModelContainer <T> view, string partialViewName, Expression <Func <T, TPartialViewModel> > modelExpression)
 {
     this.view            = view;
     this.partialViewName = partialViewName;
     this.modelExpression = modelExpression;
 }
 /// <summary>
 /// Generate an HTML input element of type 'email' and set its value from the ViewModel based on the expression provided.
 /// </summary>
 /// <param name="view">The view.</param>
 /// <param name="expression">Expression indicating the ViewModel member associated with the element.</param>
 public static EmailBox EmailBox <T>(this IViewModelContainer <T> view, Expression <Func <T, object> > expression) where T : class
 {
     return(new EmailBox(expression.GetNameFor(view), expression.GetMemberExpression(), view.GetBehaviors())
            .Value(expression.GetValueFrom(view.ViewModel)));
 }
Exemplo n.º 48
0
        /// <summary>
        /// Unsubscribes from the parent view model container.
        /// </summary>
        private void UnsubscribeFromParentViewModelContainer()
        {
            if (_parentViewModelContainer != null)
            {
                _parentViewModelContainer.ViewModelChanged -= OnParentViewModelContainerViewModelChanged;

                _parentViewModelContainer = null;
            }
        }
Exemplo n.º 49
0
		public AddSeriesDialogViewModel( IViewModelContainer viewModelContainer, IDataContainer dataContainer ) : base( viewModelContainer, dataContainer )
		{
			FoundSeries = new ObservableCollection<SeriesSearchEntry>();
		}
Exemplo n.º 50
0
 protected DialogViewModelBase( IViewModelContainer viewModelContainer, IDataContainer dataContainer )
     : base(viewModelContainer, dataContainer)
 {
 }
Exemplo n.º 51
0
        /// <summary>
        /// Initializes the <see cref="ViewToViewModelMapping"/> for the specified <see cref="IViewModelContainer"/>.
        /// </summary>
        /// <param name="viewModelContainer">The view model container to initialize the mappings for.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="viewModelContainer"/> is <c>null</c>.</exception>
        public static void InitializeViewToViewModelMappings(IViewModelContainer viewModelContainer)
        {
            Argument.IsNotNull("viewModelContainer", viewModelContainer);

            if (_viewModelContainers.ContainsKey(viewModelContainer))
            {
                return;
            }

            _viewModelContainers.Add(viewModelContainer, new ViewToViewModelMappingHelper(viewModelContainer));
        }
Exemplo n.º 52
0
 public PersonEntry( IViewModelContainer viewModelContainer, IDataContainer dataContainer, Person model )
     : base(viewModelContainer, dataContainer)
 {
     Model = model;
 }
 /// <summary>
 /// Renders a partial
 /// </summary>
 /// <typeparam name="T">The type of the ViewModel.</typeparam>
 /// <typeparam name="TPartialViewModel">The type of model of the partial.</typeparam>
 /// <param name="view">The view.</param>
 /// <param name="partialViewName">The name of the partial to render.</param>
 /// <param name="modelExpression">Expression of the model for the partial.</param>
 public static void RenderPartial <T, TPartialViewModel>(this IViewModelContainer <T> view, string partialViewName, Expression <Func <T, TPartialViewModel> > modelExpression)
     where T : class
     where TPartialViewModel : class
 {
     new PartialRenderer <T, TPartialViewModel>(view, partialViewName, modelExpression).Render();
 }