Esempio n. 1
0
        /// <summary>
        /// Show the simulation setting dialog with the set ID.
        /// </summary>
        /// <param name="viewParamID">the simulation parameter ID.</param>
        private void ShowSetupSimulationDialog(string viewParamID)
        {
            Dictionary<string, SimulationParameterSet> sim = new Dictionary<string, SimulationParameterSet>();
            foreach (string paramID in m_dManager.GetSimulationParameterIDs())
            {
                SimulationParameterSet sps = new SimulationParameterSet(paramID);
                foreach (string modelID in m_dManager.GetModelList())
                {
                    PerModelSimulationParameter pmsp = new PerModelSimulationParameter(modelID);
                    foreach (KeyValuePair<string, double> pair in
                        m_dManager.GetInitialCondition(paramID, modelID))
                    {
                        pmsp.InitialConditions.Add(
                            KeyValuePairConverter<string, double>.Convert(pair));
                    }

                    sps.PerModelSimulationParameters.Add(pmsp);
                }
                sps.LoggerPolicy = (LoggerPolicy)m_dManager.GetLoggerPolicy(paramID).Clone();
                sim.Add(sps.Name, sps);
            }

            string currentParameterID = m_dManager.CurrentProject.Info.SimulationParam;

            SimulationConfigurationDialog win = new SimulationConfigurationDialog(this, sim.Values);
            if (viewParamID != null)
                win.ChangeParameterID(sim[viewParamID]);
            using (win)
            {
                List<string> delList = new List<string>();
                DialogResult r = win.ShowDialog();
                if (r != DialogResult.OK)
                    return;
                foreach (SimulationParameterSet sps in sim.Values)
                {
                    bool deleted = true;
                    foreach (SimulationParameterSet newSps in win.Result)
                    {
                        if (newSps.Name == sps.Name)
                        {
                            deleted = false;
                            break;
                        }
                    }

                    if (deleted)
                    {
                        delList.Add(sps.Name);
            //                        m_dManager.DeleteSimulationParameter(sps.Name);
                    }
                }

                try
                {
                    foreach (SimulationParameterSet sps in win.Result)
                    {
                        if (!sim.ContainsKey(sps.Name))
                            m_dManager.CreateSimulationParameter(sps.Name);

                        m_dManager.SetLoggerPolicy(sps.Name, sps.LoggerPolicy);

                        List<EcellObject> steppers = new List<EcellObject>();
                        foreach (PerModelSimulationParameter pmsp in sps.PerModelSimulationParameters)
                        {
                            {
                                Dictionary<string, double> pairs = new Dictionary<string, double>(pmsp.InitialConditions.Count);
                                foreach (MutableKeyValuePair<string, double> pair in pmsp.InitialConditions)
                                    pairs.Add(pair.Key, pair.Value);
                                if (sps.Name.Equals(Constants.defaultSimParam))
                                    m_dManager.ImportSimulationParameter(pmsp.ModelID, sps.Name, pairs);
                                else
                                    m_dManager.UpdateInitialCondition(sps.Name, pmsp.ModelID, pairs);
                            }
                        }

                        foreach (String key in delList)
                        {
                            m_dManager.DeleteSimulationParameter(key);
                        }

                        m_env.PluginManager.ParameterUpdate(
                            m_env.DataManager.CurrentProjectID, sps.Name);
                    }
                    if (!currentParameterID.Equals(win.CurrentParameterID))
                        m_env.DataManager.SetSimulationParameter(win.CurrentParameterID);
                }
                catch (Exception ex)
                {
                    Util.ShowErrorDialog(ex.Message);
                }
            }
        }
        /// <summary>
        /// The action of clicking new button in SimulationSetupWindow.
        /// </summary>
        /// <param name="sender">object(Button)</param>
        /// <param name="e">EventArgs</param>
        public void NewButtonClick(object sender, EventArgs e)
        {
            List<string> list = new List<string>();
            foreach (SimulationParameterSet s in m_simParamSets)
            {
                list.Add(s.Name);
            }
            InputParameterNameDialog newwin = new InputParameterNameDialog(this);
            newwin.AlreadyList = list;

            using (newwin)
            {
                if (newwin.ShowDialog() != DialogResult.OK)
                    return;
                SimulationParameterSet sps = new SimulationParameterSet(newwin.InputText);
                SimulationParameterSet sp = (SimulationParameterSet)m_simParamSets.Current;
                for (int i = 0; i < sp.PerModelSimulationParameters.Count; i++)
                {
                    sps.PerModelSimulationParameters.Add(new PerModelSimulationParameter(sp.PerModelSimulationParameters[i]));
                }
                m_simParamSets.Add(sps);
            }
        }
        /// <summary>
        /// Import the data of simulation parameter from the file.
        /// </summary>
        /// <param name="sender">Button</param>
        /// <param name="e">EventArgs</param>
        private void ImportSimulationParameterClicked(object sender, EventArgs e)
        {
            if (m_owner.DataManager.CurrentProject == null)
                return;

            SSOpenFileDialog.Filter = Constants.FilterCSVFile;
            SSOpenFileDialog.FileName = "";
            if (SSOpenFileDialog.ShowDialog() == DialogResult.OK)
            {
                string parameterID = System.IO.Path.GetFileNameWithoutExtension(SSOpenFileDialog.FileName);
                if (parameterID.Equals(Constants.defaultSimParam))
                {
                    Util.ShowErrorDialog(MessageResources.ErrorImportDefault);
                    return;
                }
                try
                {
                    SimulationParameterSet sps = null;
                    bool isHit = false;
                    foreach (SimulationParameterSet s in m_simParamSets)
                    {
                        if (s.Name.Equals(parameterID))
                        {
                            sps = s;
                            isHit = true;
                        }
                    }
                    if (isHit == false)
                    {
                        sps = new SimulationParameterSet(parameterID);
                        SimulationParameterSet sp = (SimulationParameterSet)m_simParamSets.Current;
                        for (int i = 0; i < sp.PerModelSimulationParameters.Count; i++)
                        {
                            sps.PerModelSimulationParameters.Add(new PerModelSimulationParameter(sp.PerModelSimulationParameters[i]));
                        }
                        m_simParamSets.Add(sps);
                    }
                    else
                    {
                        if (Util.ShowYesNoDialog(String.Format(MessageResources.ConfirmOverride, parameterID)) == false)
                            return;
                    }

                    int index = m_simParamSets.IndexOf(sps);
                    m_simParamSets.Position = index;

                    foreach (KeyValuePair<string, double> pair in
                            SimulationParameter.ConvertSimulationParameter(SSOpenFileDialog.FileName))
                    {
                        PerModelSimulationParameter p = ((SimulationParameterSet)m_simParamSets.Current).PerModelSimulationParameters[0];
                        bool isHitParam = false;
                        foreach (MutableKeyValuePair<string, double> delData in p.InitialConditions)
                        {
                            if (delData.Key.Equals(pair.Key))
                            {
                                if (delData.Value == pair.Value)
                                    isHitParam = true;
                                else
                                    p.InitialConditions.Remove(delData);
                                break;
                            }
                        }

                        string ptype, pkey, pname;
                        Util.ParseFullPN(pair.Key, out ptype, out pkey, out pname);

                        string modelID = m_owner.DataManager.CurrentProject.Model.ModelID;
                        EcellObject pobj = m_owner.DataManager.GetEcellObject(modelID, pkey, ptype);
                        if (pobj == null)
                        {
                            isHitParam = true;
                            continue;
                        }
                        if (pobj.LocalID.Equals(EcellSystem.SIZE))
                        {
                            isHitParam = true;
                            continue;
                        }

                        EcellData pd = pobj.GetEcellData(pname);
                        if (!pd.Settable || !pd.Value.IsDouble)
                        {
                            isHitParam = true;
                            continue;
                        }

                        if (pair.Value == Convert.ToDouble(pd.Value.ToString()))
                        {
                            isHitParam = true;
                            continue;
                        }

                        if (!isHitParam)
                        {
                            initialConditionsBindingSource.Add(
                                KeyValuePairConverter<string, double>.Convert(pair));
                        }
                    }
                    initialParameters.Refresh();
                }
                catch (Exception)
                {
                    Util.ShowErrorDialog(String.Format(MessageResources.ErrImportSim, parameterID));
                    return;
                }
                Util.ShowNoticeDialog(String.Format(MessageResources.InfoImportSim, parameterID));
            }
        }
 /// <summary>
 /// Redraw simulation setup window on changing parameter ID.
 /// </summary>
 /// <param name="paramSet">parameter ID</param>
 public void ChangeParameterID(SimulationParameterSet paramSet)
 {
     m_simParamSets.CurrencyManager.Position = m_simParamSets.IndexOf(paramSet);
 }