private void UpdateTopologyParameters() { ITopologyUpdater oldTopologyUpdater = TopologyUpdater; TopologyUpdaterParameter.ValidValues.Clear(); if (Problem != null) { if (TopologyInitializerParameter.Value != null) { foreach (ITopologyUpdater topologyUpdater in ApplicationManager.Manager.GetInstances <ITopologyUpdater>()) { TopologyUpdaterParameter.ValidValues.Add(topologyUpdater); } if (oldTopologyUpdater != null) { ITopologyUpdater newTopologyUpdater = TopologyUpdaterParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldTopologyUpdater.GetType()); if (newTopologyUpdater != null) { TopologyUpdater = newTopologyUpdater; } } ParameterizeTopologyUpdaters(); } } }
private void UpdateTopologyParameters() { ITopologyUpdater oldTopologyUpdater = TopologyUpdater; IParticleUpdater oldParticleUpdater = ParticleUpdater; ClearTopologyParameters(); if (Problem != null) { IParticleUpdater defaultParticleUpdater = null; if (TopologyInitializer != null) { foreach (ITopologyUpdater topologyUpdater in ApplicationManager.Manager.GetInstances <ITopologyUpdater>()) { TopologyUpdaterParameter.ValidValues.Add(topologyUpdater); } defaultParticleUpdater = Problem.Operators.OfType <ILocalParticleUpdater>().FirstOrDefault(); foreach (IParticleUpdater particleUpdater in Problem.Operators.OfType <ILocalParticleUpdater>().OrderBy(x => x.Name)) { ParticleUpdaterParameter.ValidValues.Add(particleUpdater); } } else { defaultParticleUpdater = Problem.Operators.OfType <IGlobalParticleUpdater>().FirstOrDefault(); foreach (IParticleUpdater particleUpdater in Problem.Operators.OfType <IGlobalParticleUpdater>().OrderBy(x => x.Name)) { ParticleUpdaterParameter.ValidValues.Add(particleUpdater); } } if (oldTopologyUpdater != null) { ITopologyUpdater newTopologyUpdater = TopologyUpdaterParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldParticleUpdater.GetType()); if (newTopologyUpdater != null) { TopologyUpdater = newTopologyUpdater; } } if (oldParticleUpdater != null) { IParticleUpdater newParticleUpdater = ParticleUpdaterParameter.ValidValues.FirstOrDefault(x => x.GetType() == oldParticleUpdater.GetType()); if (newParticleUpdater != null) { ParticleUpdater = newParticleUpdater; } else { oldParticleUpdater = null; } } if (oldParticleUpdater == null && defaultParticleUpdater != null) { ParticleUpdater = defaultParticleUpdater; } ParameterizeTopologyUpdaters(); } }