コード例 #1
0
        ///--------------------------------------------------------------------------------
        /// <summary>This method refreshes the view model.</summary>
        ///
        /// <param name="refreshChildren">Flag indicating whether children should be refreshed.</param>
        ///--------------------------------------------------------------------------------
        public void Refresh(bool refreshChildren, int refreshLevel = 0)
        {
            if (refreshChildren == true || refreshLevel > 0)
            {
                EnumerationsFolder.Refresh(refreshChildren, refreshLevel - 1);
                ModelObjectsFolder.Refresh(refreshChildren, refreshLevel - 1);
            }

            #region protected
            if (refreshChildren == true || refreshLevel > 0)
            {
                ModelDataFolder.Refresh(refreshChildren, refreshLevel - 1);
            }

            #endregion protected

            HasErrors         = !Model.IsValid;
            HasCustomizations = Model.IsAutoUpdated == false || Model.IsEmptyMetadata(Model.ForwardInstance) == false || ChildrenHaveAnyCustomizations();
            if (HasCustomizations == false && Model.ReverseInstance != null)
            {
                // remove customizations if solely due to child customizations no longer present
                Model.IsAutoUpdated  = true;
                Model.SpecSourceName = Model.ReverseInstance.SpecSourceName;
                Model.ResetModified(Model.ReverseInstance.IsModified);
                Model.ResetLoaded(Model.ReverseInstance.IsLoaded);
                if (!Model.IsIdenticalMetadata(Model.ReverseInstance))
                {
                    HasCustomizations   = true;
                    Model.IsAutoUpdated = false;
                }
            }
            if (HasCustomizations == false)
            {
                // clear customizations
                Model.ForwardInstance = null;
                Model.ReverseInstance = null;
                Model.IsAutoUpdated   = true;
            }
            if (EnumerationsFolder.HasErrors == true)
            {
                HasErrors = true;
            }
            if (ModelObjectsFolder.HasErrors == true)
            {
                HasErrors = true;
            }
            OnPropertyChanged("Items");
            OnPropertyChanged("HasCustomizations");
            OnPropertyChanged("HasErrors");
        }
コード例 #2
0
 ///--------------------------------------------------------------------------------
 /// <summary>This method disposes of resources in the view model.</summary>
 ///--------------------------------------------------------------------------------
 protected override void OnDispose()
 {
     if (EnumerationsFolder != null)
     {
         EnumerationsFolder.Updated -= Children_Updated;
         EnumerationsFolder.Dispose();
         EnumerationsFolder = null;
     }
     if (ModelObjectsFolder != null)
     {
         ModelObjectsFolder.Updated -= Children_Updated;
         ModelObjectsFolder.Dispose();
         ModelObjectsFolder = null;
     }
     if (_editModel != null)
     {
         Items.CollectionChanged   -= Children_CollectionChanged;
         EditModel.PropertyChanged -= EditModel_PropertyChanged;
         EditModel = null;
     }
     Model = null;
     base.OnDispose();
 }
コード例 #3
0
        ///--------------------------------------------------------------------------------
        /// <summary>This method returns the parent view model corresponding to
        /// the input message.</summary>
        ///
        /// <param name="data">The message data to find parent for.</param>
        ///--------------------------------------------------------------------------------
        public EditWorkspaceViewModel FindParentViewModel(SolutionModelEventArgs data)
        {
            EditWorkspaceViewModel parentModel = null;

            parentModel = EnumerationsFolder.FindParentViewModel(data);
            if (parentModel != null)
            {
                return(parentModel);
            }
            parentModel = ModelObjectsFolder.FindParentViewModel(data);
            if (parentModel != null)
            {
                return(parentModel);
            }
            #region protected
            parentModel = ModelDataFolder.FindParentViewModel(data);
            if (parentModel != null)
            {
                return(parentModel);
            }
            #endregion protected

            return(null);
        }
コード例 #4
0
        ///--------------------------------------------------------------------------------
        /// <summary>This method updates the view model data and sends update command back
        /// to the solution builder.</summary>
        ///--------------------------------------------------------------------------------
        protected override void OnUpdate()
        {
            // set up reverse engineering instance if not present
            if (Model.ReverseInstance == null && Model.IsAutoUpdated == true)
            {
                Model.ReverseInstance = new Model();
                Model.ReverseInstance.TransformDataFromObject(Model, null, false);

                // perform the update of EditModel back to Model
                Model.TransformDataFromObject(EditModel, null, false);
                Model.IsAutoUpdated = false;
            }
            else if (Model.ReverseInstance != null)
            {
                EditModel.ResetModified(Model.ReverseInstance.IsModified);
                if (EditModel.Equals(Model.ReverseInstance))
                {
                    // perform the update of EditModel back to Model
                    Model.TransformDataFromObject(EditModel, null, false);
                    Model.IsAutoUpdated = true;
                }
                else
                {
                    // perform the update of EditModel back to Model
                    Model.TransformDataFromObject(EditModel, null, false);
                    Model.IsAutoUpdated = false;
                }
            }
            else
            {
                // perform the update of EditModel back to Model
                Model.TransformDataFromObject(EditModel, null, false);
                Model.IsAutoUpdated = false;
            }
            Model.ForwardInstance = null;
            if (ModelNameCustomized || DescriptionCustomized || TagsCustomized)
            {
                Model.ForwardInstance         = new Model();
                Model.ForwardInstance.ModelID = EditModel.ModelID;
                Model.SpecSourceName          = Model.DefaultSourceName;
                if (ModelNameCustomized)
                {
                    Model.ForwardInstance.ModelName = EditModel.ModelName;
                }
                if (DescriptionCustomized)
                {
                    Model.ForwardInstance.Description = EditModel.Description;
                }
                if (TagsCustomized)
                {
                    Model.ForwardInstance.Tags = EditModel.Tags;
                }
            }
            EditModel.ResetModified(false);
            OnUpdated(this, null);

            // send update back to solution builder
            SendEditModelPerformed();

            // send update for any updated Enumerations
            if (EnumerationsFolder != null && EnumerationsFolder.IsEdited == true)
            {
                EnumerationsFolder.Update();
            }

            // send update for any updated ModelObjects
            if (ModelObjectsFolder != null && ModelObjectsFolder.IsEdited == true)
            {
                ModelObjectsFolder.Update();
            }
        }