Example #1
0
        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();
            }
        }