internal CombinedValueChangedActionItem(string displayName, ObservableViewModelService serviceProvider, string observableNodePath, ObservableViewModelIdentifier identifier, IEnumerable <IActionItem> actionItems)
     : base(displayName, actionItems)
 {
     if (serviceProvider == null)
     {
         throw new ArgumentNullException("serviceProvider");
     }
     this.serviceProvider    = serviceProvider;
     this.observableNodePath = observableNodePath;
     this.identifier         = identifier;
 }
Exemple #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ObservableViewModel"/> class.
        /// </summary>
        /// <param name="serviceProvider">A service provider that can provide a <see cref="IDispatcherService"/> and an <see cref="ObservableViewModelService"/> to use for this view model.</param>
        /// <param name="modelContainer">A <see cref="ModelContainer"/> to use to build view model nodes.</param>
        /// <param name="modelNode">The root model node of the view model to generate.</param>
        /// <param name="dirtiables">The list of <see cref="IDirtiableViewModel"/> objects linked to this view model.</param>
        public ObservableViewModel(IViewModelServiceProvider serviceProvider, ModelContainer modelContainer, IModelNode modelNode, IEnumerable <IDirtiableViewModel> dirtiables)
            : this(serviceProvider, modelContainer, dirtiables.SafeArgument("dirtiables").ToList())
        {
            if (modelNode == null)
            {
                throw new ArgumentNullException("modelNode");
            }
            var node = observableViewModelService.ObservableNodeFactory(this, "Root", modelNode.Content.IsPrimitive, modelNode, new ModelNodePath(modelNode), modelNode.Content.Type, null);

            Identifier = new ObservableViewModelIdentifier(node.ModelGuid);
            node.Initialize();
            RootNode = node;
            node.CheckConsistency();
        }
Exemple #3
0
 public CombinedNodeCommandWrapper(IViewModelServiceProvider serviceProvider, string name, string observableNodePath, ObservableViewModelIdentifier identifier, IEnumerable <ModelNodeCommandWrapper> commands)
     : base(serviceProvider, null)
 {
     if (commands == null)
     {
         throw new ArgumentNullException("commands");
     }
     service            = serviceProvider.Get <ObservableViewModelService>();
     this.commands      = commands;
     this.name          = name;
     this.identifier    = identifier;
     actionStack        = serviceProvider.Get <ITransactionalActionStack>();
     ObservableNodePath = observableNodePath;
 }
Exemple #4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ObservableViewModel"/> class.
        /// </summary>
        /// <param name="serviceProvider">A service provider that can provide a <see cref="IDispatcherService"/> and an <see cref="ObservableViewModelService"/> to use for this view model.</param>
        /// <param name="modelContainer">A <see cref="ModelContainer"/> to use to build view model nodes.</param>
        /// <param name="modelNode">The root model node of the view model to generate.</param>
        /// <param name="dirtiables">The list of <see cref="IDirtiableViewModel"/> objects linked to this view model.</param>
        public ObservableViewModel(IViewModelServiceProvider serviceProvider, ModelContainer modelContainer, IModelNode modelNode, IEnumerable <IDirtiableViewModel> dirtiables)
            : this(serviceProvider, modelContainer)
        {
            if (modelNode == null)
            {
                throw new ArgumentNullException("modelNode");
            }
            var node = ObservableModelNode.Create(this, "Root", modelNode.Content.IsPrimitive, null, modelNode, modelNode.Content.Type, null);

            Identifier = new ObservableViewModelIdentifier(node.ModelGuid);
            dirtiableViewModels.Add(node, dirtiables.ToList());
            node.Initialize();
            RootNode = node;
            node.CheckConsistency();
        }
 public ValueChangedActionItem(string name, ObservableViewModelService service, ModelNodePath nodePath, string observableNodePath, ObservableViewModelIdentifier identifier, object index, IEnumerable <IDirtiableViewModel> dirtiables, object previousValue)
     : base(name, dirtiables)
 {
     if (service == null)
     {
         throw new ArgumentNullException("service");
     }
     if (!nodePath.IsValid)
     {
         throw new InvalidOperationException("Unable to retrieve the path of the modified node.");
     }
     this.service       = service;
     this.identifier    = identifier;
     this.PreviousValue = previousValue;
     NodePath           = nodePath;
     Index = index;
     ObservableNodePath = observableNodePath;
 }
Exemple #6
0
 public ModelNodeCommandWrapper(IViewModelServiceProvider serviceProvider, INodeCommand nodeCommand, string observableNodePath, ObservableViewModelIdentifier identifier, ModelNodePath nodePath, ModelContainer modelContainer, IEnumerable <IDirtiableViewModel> dirtiables)
     : base(serviceProvider, dirtiables)
 {
     if (nodeCommand == null)
     {
         throw new ArgumentNullException("nodeCommand");
     }
     if (modelContainer == null)
     {
         throw new ArgumentNullException("modelContainer");
     }
     this.identifier     = identifier;
     this.nodePath       = nodePath;
     this.modelContainer = modelContainer;
     this.nodeCommand    = nodeCommand;
     service             = serviceProvider.Get <ObservableViewModelService>();
     ObservableNodePath  = observableNodePath;
 }
Exemple #7
0
 public ModelNodeCommandWrapper(IViewModelServiceProvider serviceProvider, INodeCommand nodeCommand, string observableNodePath, ObservableViewModel owner, ModelNodePath nodePath, IEnumerable <IDirtiableViewModel> dirtiables)
     : base(serviceProvider, dirtiables)
 {
     if (nodeCommand == null)
     {
         throw new ArgumentNullException(nameof(nodeCommand));
     }
     if (owner == null)
     {
         throw new ArgumentNullException(nameof(owner));
     }
     NodePath = nodePath;
     // Note: the owner should not be stored in the command because we want it to be garbage collectable
     Identifier         = owner.Identifier;
     ModelContainer     = owner.ModelContainer;
     NodeCommand        = nodeCommand;
     Service            = serviceProvider.Get <ObservableViewModelService>();
     ObservableNodePath = observableNodePath;
 }
Exemple #8
0
 public CombinedNodeCommandWrapper(IViewModelServiceProvider serviceProvider, string name, string observableNodePath, ObservableViewModelIdentifier identifier, IReadOnlyCollection <ModelNodeCommandWrapper> commands)
     : base(serviceProvider, null)
 {
     if (commands == null)
     {
         throw new ArgumentNullException("commands");
     }
     if (commands.Count == 0)
     {
         throw new ArgumentException(@"The collection of commands to combine is empty", "commands");
     }
     if (commands.Any(x => !ReferenceEquals(x.NodeCommand, commands.First().NodeCommand)))
     {
         throw new ArgumentException(@"The collection of commands to combine cannot contain different node commands", "commands");
     }
     service              = serviceProvider.Get <ObservableViewModelService>();
     this.commands        = commands;
     this.name            = name;
     this.identifier      = identifier;
     this.serviceProvider = serviceProvider;
     ObservableNodePath   = observableNodePath;
 }
        /// <summary>
        /// Attempts to resolve the given path on the observable view model corresponding to the given identifier. Returns <c>null</c>
        /// if it fails. This method does not throw exceptions.
        /// </summary>
        /// <param name="identifier">The identifier of the observable view model to resolve.</param>
        /// <param name="observableNodePath">The path of the node to resolve.</param>
        /// <returns>A reference to the <see cref="ObservableNode"/> corresponding to the given path of the given view model if available, <c>nulll</c> otherwise.</returns>
        public ObservableNode ResolveObservableNode(ObservableViewModelIdentifier identifier, string observableNodePath)
        {
            var observableViewModel = ViewModelProvider != null?ViewModelProvider(identifier) : null;

            return(observableViewModel != null?observableViewModel.ResolveObservableNode(observableNodePath) as ObservableNode : null);
        }