public LinkedParameterModel(ILinkedParameter linkedParameter, ModelSystemEditingSession session, ModelSystemModel modelSystem) { Session = session; ModelSystem = modelSystem; ParameterModels = CreateInitialParameterModels(linkedParameter, ModelSystem); RealLinkedParameter = linkedParameter as LinkedParameter; }
public ModelSystemStructureModel(ModelSystemEditingSession session, ModelSystemStructure realModelSystemStructure) { Session = session; RealModelSystemStructure = realModelSystemStructure; Parameters = new ParametersModel(this, session); Children = CreateChildren(Session, RealModelSystemStructure); }
public LinkedParametersModel(ModelSystemEditingSession session, ModelSystemModel modelSystem, List<ILinkedParameter> realLinkedParameters) { Session = session; ModelSystem = modelSystem; RealLinkedParameters = realLinkedParameters; LinkedParameters = CreateLinkedParameters(RealLinkedParameters, Session, ModelSystem); }
/// <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(); } }
/// <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); } }
public LinkedParametersModel(ModelSystemEditingSession session, ModelSystemModel modelSystem, List <ILinkedParameter> realLinkedParameters) { _Session = session; _ModelSystem = modelSystem; _RealLinkedParameters = realLinkedParameters; LinkedParameters = CreateLinkedParameters(_RealLinkedParameters, _Session, _ModelSystem); }
/// <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; }
/// <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; }
/// <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); }
/// <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)); }
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; }
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); }
/// <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>()); }
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); }
/// <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); }
/// <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; }
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); }
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); }
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; } } } }
/// <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); } }
/// <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); }
public ParametersModel(ModelSystemStructureModel modelSystemStructure, ModelSystemEditingSession session) { Session = session; ModelSystemStructure = modelSystemStructure; Parameters = CreateParameterModels(modelSystemStructure, Session); }
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; } } } }
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); }
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); }
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; }
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; }
/// <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; }
/// <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(); } }
/// <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; } }
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; }
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); }