void Initialize() { container.CreateAndAddLabelRow("Reaction ID"); container.CreateAndAddStringEditorRow2("Name", "", rx.Name, (sender, e) => { rx.Name = sender.Text; }); container.CreateAndAddLabelRow("Compounds and Stoichiometry (Include / Name / Stoich. Coeff.)"); var compcontainer = new DynamicLayout(); compcontainer.BackgroundColor = Colors.White; Double val; foreach (ICompoundConstantProperties comp in flowsheet.SelectedCompounds.Values) { var chk = new CheckBox() { Text = comp.Name, Checked = (rx.Components.ContainsKey(comp.Name) ? true : false) }; chk.CheckedChanged += (sender, e) => { if (!rx.Components.ContainsKey(comp.Name)) { rx.Components.Add(comp.Name, new DWSIM.Thermodynamics.BaseClasses.ReactionStoichBase(comp.Name, 0, false, 0, 0)); } else { rx.Components.Remove(comp.Name); } UpdateEquation(); }; var sc = new TextBox() { Width = 50, Text = (rx.Components.ContainsKey(comp.Name) ? rx.Components[comp.Name].StoichCoeff.ToString() : 0.0f.ToString()) }; sc.TextChanged += (sender, e) => { if (Double.TryParse(sc.Text.ToString(), out val)) { sc.TextColor = SystemColors.ControlText; if (!rx.Components.ContainsKey(comp.Name)) { rx.Components.Add(comp.Name, new DWSIM.Thermodynamics.BaseClasses.ReactionStoichBase(comp.Name, Double.Parse(sc.Text), false, 0, 0)); } else { rx.Components[comp.Name].StoichCoeff = double.Parse(sc.Text); } UpdateEquation(); } else { sc.TextColor = Colors.Red; } }; compcontainer.Add(new TableRow(chk, null, sc)); } container.CreateAndAddControlRow(compcontainer); container.CreateAndAddEmptySpace(); var comps = flowsheet.SelectedCompounds.Values.Select((x) => x.Name).ToList(); comps.Insert(0, ""); container.CreateAndAddLabelRow("Base Compound"); var basecompselector = container.CreateAndAddDropDownRow("Base Compound", comps, 0, null); var basecomp = rx.Components.Values.Where((x) => x.IsBaseReactant).FirstOrDefault(); if (basecomp != null) { basecompselector.SelectedIndex = comps.IndexOf(basecomp.CompName); } else { basecompselector.SelectedIndex = 0; } basecompselector.SelectedIndexChanged += (sender, e) => { if (rx.Components.ContainsKey(comps[basecompselector.SelectedIndex])) { foreach (var rxc in rx.Components.Values) { rxc.IsBaseReactant = false; } rx.Components[comps[basecompselector.SelectedIndex]].IsBaseReactant = true; rx.BaseReactant = comps[basecompselector.SelectedIndex]; } }; container.CreateAndAddLabelRow("Reaction Balance"); txtEquation = container.CreateAndAddLabelRow2(""); container.CreateAndAddLabelRow("Reaction Phase"); var rxphaseselector = container.CreateAndAddDropDownRow("Reaction Phase", Shared.StringArrays.reactionphase().ToList(), 0, null); switch (rx.ReactionPhase) { case Interfaces.Enums.PhaseName.Vapor: rxphaseselector.SelectedIndex = (0); break; case Interfaces.Enums.PhaseName.Liquid: rxphaseselector.SelectedIndex = (1); break; case Interfaces.Enums.PhaseName.Mixture: rxphaseselector.SelectedIndex = (2); break; } rxphaseselector.SelectedIndexChanged += (sender, e) => { switch (rxphaseselector.SelectedIndex) { case 0: rx.ReactionPhase = Interfaces.Enums.PhaseName.Vapor; break; case 1: rx.ReactionPhase = Interfaces.Enums.PhaseName.Liquid; break; case 2: rx.ReactionPhase = Interfaces.Enums.PhaseName.Mixture; break; } }; container.CreateAndAddLabelRow("Conversion Expression"); container.CreateAndAddLabelRow2("Conversion Expression, % conv = f(T), T in K"); container.CreateAndAddFullTextBoxRow(rx.Expression, (sender, e) => rx.Expression = sender.Text); UpdateEquation(); }