Esempio n. 1
0
 public LinkedParameterModel(ILinkedParameter linkedParameter, ModelSystemEditingSession session, ModelSystemModel modelSystem)
 {
     Session             = session;
     ModelSystem         = modelSystem;
     ParameterModels     = CreateInitialParameterModels(linkedParameter, ModelSystem);
     RealLinkedParameter = linkedParameter as LinkedParameter;
 }
Esempio n. 2
0
 public LinkedParameterModel(ILinkedParameter linkedParameter, ModelSystemEditingSession session, ModelSystemModel modelSystem)
 {
     Session = session;
     ModelSystem = modelSystem;
     ParameterModels = CreateInitialParameterModels(linkedParameter, ModelSystem);
     RealLinkedParameter = linkedParameter as LinkedParameter;
 }
Esempio n. 3
0
 public ModelSystemStructureModel(ModelSystemEditingSession session, ModelSystemStructure realModelSystemStructure)
 {
     Session = session;
     RealModelSystemStructure = realModelSystemStructure;
     Parameters = new ParametersModel(this, session);
     Children = CreateChildren(Session, RealModelSystemStructure);
 }
Esempio n. 4
0
 public LinkedParametersModel(ModelSystemEditingSession session, ModelSystemModel modelSystem, List<ILinkedParameter> realLinkedParameters)
 {
     Session = session;
     ModelSystem = modelSystem;
     RealLinkedParameters = realLinkedParameters;
     LinkedParameters = CreateLinkedParameters(RealLinkedParameters, Session, ModelSystem);
 }
Esempio n. 5
0
 public ModelSystemStructureModel(ModelSystemEditingSession session, ModelSystemStructure realModelSystemStructure)
 {
     Session = session;
     RealModelSystemStructure = realModelSystemStructure;
     Parameters = new ParametersModel(this, session);
     Children   = CreateChildren(Session, RealModelSystemStructure);
 }
Esempio n. 6
0
        /// <summary>
        /// Release the given editing session
        /// </summary>
        /// <param name="modelSystemEditingSession">The session to release</param>
        internal void ReleaseEditingSession(ModelSystemEditingSession modelSystemEditingSession)
        {
            if (modelSystemEditingSession == null)
            {
                throw new ArgumentNullException("modelSystemEditingSession");
            }
            bool terminate = false;

            lock (EditingLock)
            {
                for (int i = 0; i < EditingSessions.Count; i++)
                {
                    if (EditingSessions[i] == modelSystemEditingSession)
                    {
                        References[i]--;
                        // if nothing else is looking at this terminate the session
                        if (References[i] <= 0)
                        {
                            References.RemoveAt(i);
                            EditingSessions.RemoveAt(i);
                            terminate = true;
                        }
                        break;
                    }
                }
            }
            // if this was the last reference to the session terminate it
            if (terminate)
            {
                modelSystemEditingSession.SessionTerminated();
            }
        }
Esempio n. 7
0
        /// <summary>
        /// Load a previous run from file
        /// </summary>
        /// <param name="path">The directory the previous run was in.</param>
        /// <param name="error">An error in case of failure</param>
        /// <returns>An editing session if successful, null otherwise.</returns>
        public bool LoadPreviousRun(string path, ref string error, out ModelSystemEditingSession session)
        {
            session = null;
            DirectoryInfo info = new DirectoryInfo(path);

            if (!info.Exists)
            {
                error = "There is no directory with the name '" + path + "'!";
                return(false);
            }
            var runFileName = Path.Combine(path, "RunParameters.xml");

            if (!File.Exists(runFileName))
            {
                error = "There is no file containing run parameters in the directory '" + path + "'!";
                return(false);
            }
            try
            {
                session = new ModelSystemEditingSession(_Runtime, this, runFileName);
                return(true);
            }
            catch (Exception e)
            {
                error = e.Message;
                return(false);
            }
        }
Esempio n. 8
0
 public LinkedParametersModel(ModelSystemEditingSession session, ModelSystemModel modelSystem, List <ILinkedParameter> realLinkedParameters)
 {
     _Session              = session;
     _ModelSystem          = modelSystem;
     _RealLinkedParameters = realLinkedParameters;
     LinkedParameters      = CreateLinkedParameters(_RealLinkedParameters, _Session, _ModelSystem);
 }
Esempio n. 9
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="realParameter"></param>
 /// <param name="session"></param>
 public ParameterModel(ModuleParameter realParameter, ModelSystemEditingSession session)
 {
     IsDirty       = false;
     RealParameter = realParameter;
     _Session      = session;
     _Value        = _Value = RealParameter.Value != null?RealParameter.Value.ToString() : string.Empty;
 }
Esempio n. 10
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="session"></param>
 /// <param name="project"></param>
 /// <param name="modelSystemIndex"></param>
 public ModelSystemModel(ModelSystemEditingSession session, Project project, int modelSystemIndex)
 {
     _Project          = project;
     _ModelSystemIndex = modelSystemIndex;
     LoadModelSystemFromProject(session, project, modelSystemIndex);
     return;
 }
Esempio n. 11
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="session"></param>
 /// <param name="modelSystem"></param>
 public ModelSystemModel(ModelSystemEditingSession session, ModelSystem modelSystem)
 {
     ModelSystem  = modelSystem;
     Name         = modelSystem.Name;
     _Description = modelSystem.Description;
     LoadModelSystemFromModelSystem(session, modelSystem);
 }
Esempio n. 12
0
 /// <summary>
 /// Create a model system model for a previous run.
 /// </summary>
 /// <param name="modelSystemEditingSession">The session to use</param>
 /// <param name="project">The project the previous run is in.</param>
 /// <param name="runFile">The path to the run file.</param>
 public ModelSystemModel(XTMFRuntime runtime, ModelSystemEditingSession modelSystemEditingSession, Project project, string runFile)
 {
     Project = project;
     ModelSystemIndex = -1;
     Name = Path.GetFileName(runFile);
     _Description = "Previous run";
     Root = new ModelSystemStructureModel(modelSystemEditingSession, runtime.ModelSystemController.LoadFromRunFile(runFile));
 }
Esempio n. 13
0
 public ParameterModel(ModuleParameter realParameter, ModelSystemEditingSession session)
 {
     IsDirty = false;
     RealParameter = realParameter;
     Session = session;
     Name = RealParameter.Name;
     _Value = _Value = RealParameter.Value != null ? RealParameter.Value.ToString() : string.Empty;
 }
Esempio n. 14
0
 public ModelSystemModel(ModelSystemEditingSession session, ModelSystem modelSystem)
 {
     ModelSystem      = modelSystem;
     Name             = modelSystem.Name;
     _Description     = modelSystem.Description;
     Root             = new ModelSystemStructureModel(session, modelSystem.CreateEditingClone(out List <ILinkedParameter> editingLinkedParameters) as ModelSystemStructure);
     LinkedParameters = new LinkedParametersModel(session, this, editingLinkedParameters);
 }
Esempio n. 15
0
 /// <summary>
 /// Create a model system model for a previous run.
 /// </summary>
 /// <param name="modelSystemEditingSession">The session to use</param>
 /// <param name="project">The project the previous run is in.</param>
 /// <param name="runFile">The path to the run file.</param>
 public ModelSystemModel(XTMFRuntime runtime, ModelSystemEditingSession modelSystemEditingSession, Project project, string runFile)
 {
     Project          = project;
     ModelSystemIndex = -1;
     Name             = Path.GetFileName(runFile);
     _Description     = "Previous run";
     Root             = new ModelSystemStructureModel(modelSystemEditingSession, runtime.ModelSystemController.LoadFromRunFile(runFile));
     LinkedParameters = new LinkedParametersModel(modelSystemEditingSession, this, new List <ILinkedParameter>());
 }
Esempio n. 16
0
 public ModelSystemModel(ModelSystemEditingSession session, ModelSystem modelSystem)
 {
     ModelSystem = modelSystem;
     Name = modelSystem.Name;
     _Description = modelSystem.Description;
     List<ILinkedParameter> editingLinkedParameters;
     Root = new ModelSystemStructureModel(session, modelSystem.CreateEditingClone(out editingLinkedParameters) as ModelSystemStructure);
     LinkedParameters = new LinkedParametersModel(session, this, editingLinkedParameters);
 }
Esempio n. 17
0
 /// <summary>
 /// Create a model system model for a previous run.
 /// </summary>
 /// <param name="modelSystemEditingSession">The session to use</param>
 /// <param name="project">The project the previous run is in.</param>
 /// <param name="runFile">The path to the run file.</param>
 public ModelSystemModel(XTMFRuntime runtime, ModelSystemEditingSession modelSystemEditingSession, Project project, string runFile)
 {
     _Path             = runFile;
     _Project          = project;
     _ModelSystemIndex = -1;
     Name         = Path.GetFileName(runFile);
     _Description = "Previous run";
     LoadModelSystemFromFile(runtime, modelSystemEditingSession, runFile);
 }
Esempio n. 18
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="realParameter"></param>
        /// <param name="session"></param>
        /// <param name="belongsTo"></param>
        public ParameterModel(ModuleParameter realParameter, ModelSystemEditingSession session, ModelSystemStructureModel belongsTo)
        {
            IsDirty       = false;
            RealParameter = realParameter;
            _Session      = session;
            _Value        = _Value = RealParameter.Value != null?RealParameter.Value.ToString() : string.Empty;

            _belongsTo = belongsTo;
        }
Esempio n. 19
0
 public ModelSystemModel(ModelSystemEditingSession session, Project project, int modelSystemIndex)
 {
     _Project          = project;
     _ModelSystemIndex = modelSystemIndex;
     Name             = project.ModelSystemStructure[modelSystemIndex].Name;
     _Description     = project.ModelSystemDescriptions[modelSystemIndex];
     Root             = new ModelSystemStructureModel(session, (project.CloneModelSystemStructure(out List <ILinkedParameter> editingLinkedParameters, modelSystemIndex) as ModelSystemStructure));
     _Description     = _Project.ModelSystemDescriptions[modelSystemIndex];
     LinkedParameters = new LinkedParametersModel(session, this, editingLinkedParameters);
 }
Esempio n. 20
0
 public ModelSystemModel(ModelSystemEditingSession session, Project project, int modelSystemIndex)
 {
     Project = project;
     ModelSystemIndex = modelSystemIndex;
     Name = project.ModelSystemStructure[modelSystemIndex].Name;
     _Description = project.ModelSystemDescriptions[modelSystemIndex];
     List<ILinkedParameter> editingLinkedParameters;
     Root = new ModelSystemStructureModel(session, (project.CloneModelSystemStructure(out editingLinkedParameters, modelSystemIndex) as ModelSystemStructure));
     _Description = Project.ModelSystemDescriptions[modelSystemIndex];
     LinkedParameters = new LinkedParametersModel(session, this, editingLinkedParameters);
 }
Esempio n. 21
0
 internal void ModelSystemEditingSessionClosed(ModelSystemEditingSession modelSystemEditingSession, int modelSystemIndex)
 {
     // ensure this model system is not a past run
     if (modelSystemIndex >= 0)
     {
         lock (_EditingSessionsLock)
         {
             _EditingSessions[modelSystemIndex].References--;
             if (_EditingSessions[modelSystemIndex].References <= 0)
             {
                 _EditingSessions[modelSystemIndex].References = 0;
                 _EditingSessions[modelSystemIndex].Session    = null;
             }
         }
     }
 }
Esempio n. 22
0
 /// <summary>
 /// Start a new editing session for the given model system
 /// </summary>
 public ModelSystemEditingSession EditModelSystem(ModelSystem modelSystem)
 {
     if (modelSystem == null)
     {
         throw new ArgumentNullException("modelSystem");
     }
     lock (EditingLock)
     {
         for (int i = 0; i < EditingSessions.Count; i++)
         {
             if (EditingSessions[i].IsEditing(modelSystem))
             {
                 References[i]++;
                 return(EditingSessions[i]);
             }
         }
         var newSession = new ModelSystemEditingSession(Runtime, modelSystem);
         References.Add(1);
         EditingSessions.Add(newSession);
         return(newSession);
     }
 }
Esempio n. 23
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="modelSystemEditingSession"></param>
        /// <returns></returns>
        internal bool WillCloseTerminate(ModelSystemEditingSession modelSystemEditingSession)
        {
            if (modelSystemEditingSession == null)
            {
                throw new ArgumentNullException("modelSystemEditingSession");
            }
            bool terminate = false;

            lock (EditingLock)
            {
                for (int i = 0; i < EditingSessions.Count; i++)
                {
                    if (EditingSessions[i] == modelSystemEditingSession)
                    {
                        if (References[i] <= 1)
                        {
                            terminate = true;
                        }
                        break;
                    }
                }
            }
            return(terminate);
        }
Esempio n. 24
0
 public ParametersModel(ModelSystemStructureModel modelSystemStructure, ModelSystemEditingSession session)
 {
     Session = session;
     ModelSystemStructure = modelSystemStructure;
     Parameters = CreateParameterModels(modelSystemStructure, Session);
 }
Esempio n. 25
0
 internal void ModelSystemEditingSessionClosed(ModelSystemEditingSession modelSystemEditingSession, int modelSystemIndex)
 {
     // ensure this model system is not a past run
     if(modelSystemIndex >= 0)
     {
         lock (EditingSessionsLock)
         {
             this.EditingSessions[modelSystemIndex].References--;
             if(this.EditingSessions[modelSystemIndex].References <= 0)
             {
                 this.EditingSessions[modelSystemIndex].References = 0;
                 this.EditingSessions[modelSystemIndex].Session = null;
             }
         }
     }
 }
Esempio n. 26
0
        private ObservableCollection <ModelSystemStructureModel> CreateChildren(ModelSystemEditingSession session, ModelSystemStructure realModelSystemStructure)
        {
            if (realModelSystemStructure.Children == null)
            {
                return(new ObservableCollection <ModelSystemStructureModel>());
            }

            ObservableCollection <ModelSystemStructureModel> ret;

            if (Children == null)
            {
                ret = new ObservableCollection <ModelSystemStructureModel>();
                for (int i = 0; i < realModelSystemStructure.Children.Count; i++)
                {
                    ret.Add(new ModelSystemStructureModel(session, realModelSystemStructure.Children[i] as ModelSystemStructure));
                }
            }
            else
            {
                ret = Children;
                if (realModelSystemStructure.Children == null)
                {
                    ret.Clear();
                }
                else
                {
                    // remove children
                    var removedChildren = (from child in Children
                                           where !realModelSystemStructure.Children.Any(r => r == child.RealModelSystemStructure)
                                           select child).ToArray();
                    // new children go to the end
                    var newChildren = (from child in realModelSystemStructure.Children
                                       where !Children.Any(c => c.RealModelSystemStructure == child)
                                       select child).ToArray();

                    foreach (var child in removedChildren)
                    {
                        ret.Remove(child);
                    }
                    foreach (var child in newChildren)
                    {
                        ret.Add(new ModelSystemStructureModel(session, child as ModelSystemStructure));
                    }
                    bool repeat = false;
                    do
                    {
                        // now search for children that have moved indexes after adds and deleted have been performed
                        var indexes = (from child in Children
                                       select realModelSystemStructure.Children.IndexOf(child.RealModelSystemStructure)).ToArray();
                        for (int i = 0; i < indexes.Length; i++)
                        {
                            // if a child has moved
                            if (indexes[i] != i)
                            {
                                Children.Move(i, indexes[i]);
                                repeat = true;
                                break;
                            }
                        }
                    } while (repeat);
                }
            }
            return(ret);
        }
Esempio n. 27
0
        private static ObservableCollection <LinkedParameterModel> CreateLinkedParameters(List <ILinkedParameter> linkedParameters, ModelSystemEditingSession session, ModelSystemModel ModelSystem)
        {
            var ret = new ObservableCollection <LinkedParameterModel>();

            if (linkedParameters == null)
            {
                return(ret);
            }
            for (int i = 0; i < linkedParameters.Count; i++)
            {
                ret.Add(new LinkedParameterModel(linkedParameters[i], session, ModelSystem));
            }
            return(ret);
        }
Esempio n. 28
0
        private ObservableCollection<ModelSystemStructureModel> CreateChildren(ModelSystemEditingSession session, ModelSystemStructure realModelSystemStructure)
        {
            if(realModelSystemStructure.Children == null) return null;

            ObservableCollection<ModelSystemStructureModel> ret;
            if(Children == null)
            {
                ret = new ObservableCollection<ModelSystemStructureModel>();
                for(int i = 0; i < realModelSystemStructure.Children.Count; i++)
                {
                    ret.Add(new ModelSystemStructureModel(session, realModelSystemStructure.Children[i] as ModelSystemStructure));
                }
            }
            else
            {
                ret = Children;
                if(realModelSystemStructure.Children == null)
                {
                    ret.Clear();
                }
                else
                {
                    // remove children
                    var removedChildren = (from child in Children
                                           where !realModelSystemStructure.Children.Any(r => r == child.RealModelSystemStructure)
                                           select child).ToArray();
                    // new children go to the end
                    var newChildren = (from child in realModelSystemStructure.Children
                                       where !Children.Any(c => c.RealModelSystemStructure == child)
                                       select child).ToArray();

                    foreach(var child in removedChildren)
                    {
                        ret.Remove(child);
                    }
                    foreach(var child in newChildren)
                    {
                        ret.Add(new ModelSystemStructureModel(session, child as ModelSystemStructure));
                    }
                    bool repeat = false;
                    do
                    {
                        // now search for children that have moved indexes after adds and deleted have been performed
                        var indexes = (from child in Children
                                       select realModelSystemStructure.Children.IndexOf(child.RealModelSystemStructure)).ToArray();
                        for(int i = 0; i < indexes.Length; i++)
                        {
                            // if a child has moved
                            if(indexes[i] != i)
                            {
                                Children.Move(i, indexes[i]);
                                repeat = true;
                                break;
                            }
                        }
                    } while(repeat);
                }
            }
            return ret;
        }
Esempio n. 29
0
 private static ObservableCollection<LinkedParameterModel> CreateLinkedParameters(List<ILinkedParameter> linkedParameters, ModelSystemEditingSession session, ModelSystemModel ModelSystem)
 {
     var ret = new ObservableCollection<LinkedParameterModel>();
     if(linkedParameters == null) return ret;
     for(int i = 0; i < linkedParameters.Count; i++)
     {
         ret.Add(new LinkedParameterModel(linkedParameters[i], session, ModelSystem));
     }
     return ret;
 }
Esempio n. 30
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="modelSystemEditingSession"></param>
 /// <returns></returns>
 internal bool WillCloseTerminate(ModelSystemEditingSession modelSystemEditingSession)
 {
     if (modelSystemEditingSession == null)
     {
         throw new ArgumentNullException("modelSystemEditingSession");
     }
     bool terminate = false;
     lock (EditingLock)
     {
         for (int i = 0; i < EditingSessions.Count; i++)
         {
             if (EditingSessions[i] == modelSystemEditingSession)
             {
                 if (References[i] <= 1)
                 {
                     terminate = true;
                 }
                 break;
             }
         }
     }
     return terminate;
 }
Esempio n. 31
0
 /// <summary>
 /// Release the given editing session
 /// </summary>
 /// <param name="modelSystemEditingSession">The session to release</param>
 internal void ReleaseEditingSession(ModelSystemEditingSession modelSystemEditingSession)
 {
     if(modelSystemEditingSession == null)
     {
         throw new ArgumentNullException("modelSystemEditingSession");
     }
     bool terminate = false;
     lock (EditingLock)
     {
         for(int i = 0; i < EditingSessions.Count; i++)
         {
             if(EditingSessions[i] == modelSystemEditingSession)
             {
                 References[i]--;
                 // if nothing else is looking at this terminate the session
                 if(References[i] <= 0)
                 {
                     References.RemoveAt(i);
                     EditingSessions.RemoveAt(i);
                     terminate = true;
                 }
                 break;
             }
         }
     }
     // if this was the last reference to the session terminate it
     if(terminate)
     {
         modelSystemEditingSession.SessionTerminated();
     }
 }
Esempio n. 32
0
 /// <summary>
 /// Start a new editing session for the given model system
 /// </summary>
 public ModelSystemEditingSession EditModelSystem(ModelSystem modelSystem)
 {
     if(modelSystem == null)
     {
         throw new ArgumentNullException("modelSystem");
     }
     lock (EditingLock)
     {
         for(int i = 0; i < EditingSessions.Count; i++)
         {
             if(EditingSessions[i].IsEditing(modelSystem))
             {
                 References[i]++;
                 return EditingSessions[i];
             }
         }
         var newSession = new ModelSystemEditingSession(Runtime, modelSystem);
         References.Add(1);
         EditingSessions.Add(newSession);
         return newSession;
     }
 }
Esempio n. 33
0
 private static List<ParameterModel> CreateParameterModels(ModelSystemStructureModel modelSystemStructure, ModelSystemEditingSession Session)
 {
     if(modelSystemStructure.RealModelSystemStructure.Parameters == null) return null;
     var realParameters = modelSystemStructure.RealModelSystemStructure.Parameters.Parameters;
     if(realParameters == null) return null;
     var ret = new List<ParameterModel>(realParameters.Count);
     for(int i = 0; i < realParameters.Count; i++)
     {
         ret.Add(new ParameterModel(realParameters[i] as ModuleParameter, Session));
     }
     return ret;
 }
Esempio n. 34
0
 public ParametersModel(ModelSystemStructureModel modelSystemStructure, ModelSystemEditingSession session)
 {
     Session = session;
     ModelSystemStructure = modelSystemStructure;
     Parameters           = CreateParameterModels(modelSystemStructure, Session);
 }
Esempio n. 35
0
        private static List <ParameterModel> CreateParameterModels(ModelSystemStructureModel modelSystemStructure, ModelSystemEditingSession Session)
        {
            if (modelSystemStructure.RealModelSystemStructure.Parameters == null)
            {
                return(null);
            }
            var realParameters = modelSystemStructure.RealModelSystemStructure.Parameters.Parameters;

            if (realParameters == null)
            {
                return(null);
            }
            var ret = new List <ParameterModel>(realParameters.Count);

            for (int i = 0; i < realParameters.Count; i++)
            {
                ret.Add(new ParameterModel(realParameters[i] as ModuleParameter, Session));
            }
            return(ret);
        }