Click here to Skip to main content
15,894,825 members
Articles / Programming Languages / C#

Universal Framework for Science and Engineering - Part 2: Regression

Rate me:
Please Sign up or sign in to vote.
4.77/5 (19 votes)
11 Jul 20067 min read 51.2K   5K   76  
An article on universal scalable engineering framework applications.
using System;
using System.Drawing;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

using DiagramUI;
using FormulaEditor;
using ToolBox;
using DataPerformer;

namespace DataPerformerUI
{
	/// <summary>
	/// Summary description for FormRecursive.
	/// </summary>
	public class FormRecursive : System.Windows.Forms.Form, IUpdatableForm
	{
		private System.Windows.Forms.TabControl tabControlMain;
		private System.Windows.Forms.TabPage tabPageVariables;
		private System.Windows.Forms.TabPage tabPageEquations;
		private System.Windows.Forms.TabPage tabPageConstants;
		/// <summary>
		/// Required designer variable.
		/// </summary>
		private System.ComponentModel.Container components = null;

		private Hashtable variableCombo = new Hashtable();
		private IObjectLabel label;
		private System.Windows.Forms.Panel panelVariables;
		private System.Windows.Forms.Panel panelFormula;
		private Recursive recursive;
		private System.Windows.Forms.Button buttonPar;
		private System.Windows.Forms.Button buttonArgs;
		private System.Windows.Forms.Button buttonAccept;
		private System.Windows.Forms.CheckedListBox checkedListBoxP;
		private System.Windows.Forms.Label label4;
		private System.Windows.Forms.Label label1;
		private System.Windows.Forms.Panel panelMea;
		private System.Windows.Forms.Button buttonAcceptAliases;
		private System.Windows.Forms.Panel panelComboAlias;
		private System.Windows.Forms.Button buttonAcceptInitial;
		private System.Windows.Forms.DataGrid dataGridP;
		private System.Data.DataTable dataTableP;
		private System.Data.DataColumn dataColumnP;
		private System.Data.DataColumn dataColumnVal;
		private System.Windows.Forms.DataGrid dataGridInitial;
		private System.Data.DataTable dataTableInitial;
		private System.Data.DataColumn dataColumnV;
		private System.Data.DataColumn dataColumnValue;
		private System.Data.DataSet dataSetP;
		private System.Data.DataSet dataSetInitial;
		private System.Windows.Forms.Label labelInitial;
		private Hashtable formulaPanels = new Hashtable();
		private System.Windows.Forms.Button buttonVar;
		private Hashtable aliasCombo = new Hashtable();
		private System.Windows.Forms.Panel panelComments;
		private System.Windows.Forms.Button buttonAcceptComments;
		private System.Windows.Forms.MainMenu mainMenuConsumer;
		private System.Windows.Forms.MenuItem menuItem1;
		private System.Windows.Forms.MenuItem menuItemFont;
		private System.Windows.Forms.Label label2;
		private Hashtable formulaHash = new Hashtable();

		public FormRecursive()
		{
			//
			// Required for Windows Form Designer support
			//
			InitializeComponent();

			//
			// TODO: Add any constructor code after InitializeComponent call
			//
		}

		public FormRecursive(IObjectLabel label)
		{
			InitializeComponent();
			ResourceService.Resources.LoadControlResources(this);
			EditorReceiver.AddEditorDrag(panelComments);
			PictureReceiver.AddImageDrag(panelComments);
			this.label = label;
			recursive = label.Object as Recursive;
			ArrayList comments = recursive.Comments;
			ControlPanel.LoadControls(panelComments, comments);
			UpdateFormUI();
			fillVariables();
			fillFormulas();
			fillConstants();
			fillMeasurements();
			createAndFillAliasComboBox();
		}


		#region IUpdatableForm Members

		public void UpdateFormUI()
		{
			Text = label.RootName;//NamedComponent.GetText(label);
		}

		#endregion


		/// <summary>
		/// Clean up any resources being used.
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if(components != null)
				{
					components.Dispose();
				}
			}
			//NamedComponent.RemoveForm(label);
			base.Dispose( disposing );
		}

		#region Windows Form Designer generated code
		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
			this.tabControlMain = new System.Windows.Forms.TabControl();
			this.tabPageVariables = new System.Windows.Forms.TabPage();
			this.buttonAcceptComments = new System.Windows.Forms.Button();
			this.buttonVar = new System.Windows.Forms.Button();
			this.panelVariables = new System.Windows.Forms.Panel();
			this.panelComments = new System.Windows.Forms.Panel();
			this.tabPageEquations = new System.Windows.Forms.TabPage();
			this.buttonPar = new System.Windows.Forms.Button();
			this.buttonArgs = new System.Windows.Forms.Button();
			this.buttonAccept = new System.Windows.Forms.Button();
			this.checkedListBoxP = new System.Windows.Forms.CheckedListBox();
			this.label4 = new System.Windows.Forms.Label();
			this.label1 = new System.Windows.Forms.Label();
			this.panelMea = new System.Windows.Forms.Panel();
			this.panelFormula = new System.Windows.Forms.Panel();
			this.tabPageConstants = new System.Windows.Forms.TabPage();
			this.label2 = new System.Windows.Forms.Label();
			this.buttonAcceptInitial = new System.Windows.Forms.Button();
			this.dataGridP = new System.Windows.Forms.DataGrid();
			this.dataTableP = new System.Data.DataTable();
			this.dataColumnP = new System.Data.DataColumn();
			this.dataColumnVal = new System.Data.DataColumn();
			this.dataGridInitial = new System.Windows.Forms.DataGrid();
			this.dataTableInitial = new System.Data.DataTable();
			this.dataColumnV = new System.Data.DataColumn();
			this.dataColumnValue = new System.Data.DataColumn();
			this.labelInitial = new System.Windows.Forms.Label();
			this.buttonAcceptAliases = new System.Windows.Forms.Button();
			this.panelComboAlias = new System.Windows.Forms.Panel();
			this.dataSetP = new System.Data.DataSet();
			this.dataSetInitial = new System.Data.DataSet();
			this.mainMenuConsumer = new System.Windows.Forms.MainMenu();
			this.menuItem1 = new System.Windows.Forms.MenuItem();
			this.menuItemFont = new System.Windows.Forms.MenuItem();
			this.tabControlMain.SuspendLayout();
			this.tabPageVariables.SuspendLayout();
			this.tabPageEquations.SuspendLayout();
			this.tabPageConstants.SuspendLayout();
			((System.ComponentModel.ISupportInitialize)(this.dataGridP)).BeginInit();
			((System.ComponentModel.ISupportInitialize)(this.dataTableP)).BeginInit();
			((System.ComponentModel.ISupportInitialize)(this.dataGridInitial)).BeginInit();
			((System.ComponentModel.ISupportInitialize)(this.dataTableInitial)).BeginInit();
			((System.ComponentModel.ISupportInitialize)(this.dataSetP)).BeginInit();
			((System.ComponentModel.ISupportInitialize)(this.dataSetInitial)).BeginInit();
			this.SuspendLayout();
			// 
			// tabControlMain
			// 
			this.tabControlMain.Controls.Add(this.tabPageVariables);
			this.tabControlMain.Controls.Add(this.tabPageEquations);
			this.tabControlMain.Controls.Add(this.tabPageConstants);
			this.tabControlMain.Location = new System.Drawing.Point(48, 56);
			this.tabControlMain.Name = "tabControlMain";
			this.tabControlMain.SelectedIndex = 0;
			this.tabControlMain.Size = new System.Drawing.Size(1080, 648);
			this.tabControlMain.TabIndex = 0;
			// 
			// tabPageVariables
			// 
			this.tabPageVariables.Controls.Add(this.buttonAcceptComments);
			this.tabPageVariables.Controls.Add(this.buttonVar);
			this.tabPageVariables.Controls.Add(this.panelVariables);
			this.tabPageVariables.Controls.Add(this.panelComments);
			this.tabPageVariables.Location = new System.Drawing.Point(4, 22);
			this.tabPageVariables.Name = "tabPageVariables";
			this.tabPageVariables.Size = new System.Drawing.Size(1072, 622);
			this.tabPageVariables.TabIndex = 0;
			this.tabPageVariables.Text = "Variables";
			// 
			// buttonAcceptComments
			// 
			this.buttonAcceptComments.Location = new System.Drawing.Point(384, 24);
			this.buttonAcceptComments.Name = "buttonAcceptComments";
			this.buttonAcceptComments.Size = new System.Drawing.Size(224, 23);
			this.buttonAcceptComments.TabIndex = 22;
			this.buttonAcceptComments.Text = "Accept comments";
			this.buttonAcceptComments.Click += new System.EventHandler(this.buttonAcceptComments_Click);
			// 
			// buttonVar
			// 
			this.buttonVar.Location = new System.Drawing.Point(720, 536);
			this.buttonVar.Name = "buttonVar";
			this.buttonVar.Size = new System.Drawing.Size(192, 23);
			this.buttonVar.TabIndex = 2;
			this.buttonVar.Text = "Accept variables";
			this.buttonVar.Click += new System.EventHandler(this.buttonVar_Click);
			// 
			// panelVariables
			// 
			this.panelVariables.AutoScroll = true;
			this.panelVariables.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
			this.panelVariables.Location = new System.Drawing.Point(720, 56);
			this.panelVariables.Name = "panelVariables";
			this.panelVariables.Size = new System.Drawing.Size(296, 424);
			this.panelVariables.TabIndex = 0;
			// 
			// panelComments
			// 
			this.panelComments.BackColor = System.Drawing.Color.White;
			this.panelComments.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
			this.panelComments.Location = new System.Drawing.Point(24, 64);
			this.panelComments.Name = "panelComments";
			this.panelComments.Size = new System.Drawing.Size(664, 544);
			this.panelComments.TabIndex = 23;
			// 
			// tabPageEquations
			// 
			this.tabPageEquations.Controls.Add(this.buttonPar);
			this.tabPageEquations.Controls.Add(this.buttonArgs);
			this.tabPageEquations.Controls.Add(this.buttonAccept);
			this.tabPageEquations.Controls.Add(this.checkedListBoxP);
			this.tabPageEquations.Controls.Add(this.label4);
			this.tabPageEquations.Controls.Add(this.label1);
			this.tabPageEquations.Controls.Add(this.panelMea);
			this.tabPageEquations.Controls.Add(this.panelFormula);
			this.tabPageEquations.Location = new System.Drawing.Point(4, 22);
			this.tabPageEquations.Name = "tabPageEquations";
			this.tabPageEquations.Size = new System.Drawing.Size(1072, 622);
			this.tabPageEquations.TabIndex = 1;
			this.tabPageEquations.Text = "Recursive relations";
			// 
			// buttonPar
			// 
			this.buttonPar.Location = new System.Drawing.Point(288, 576);
			this.buttonPar.Name = "buttonPar";
			this.buttonPar.Size = new System.Drawing.Size(248, 23);
			this.buttonPar.TabIndex = 28;
			this.buttonPar.Text = "Accept constants";
			this.buttonPar.Click += new System.EventHandler(this.buttonPar_Click);
			// 
			// buttonArgs
			// 
			this.buttonArgs.Location = new System.Drawing.Point(576, 584);
			this.buttonArgs.Name = "buttonArgs";
			this.buttonArgs.Size = new System.Drawing.Size(280, 23);
			this.buttonArgs.TabIndex = 27;
			this.buttonArgs.Text = "Accept input parameters";
			this.buttonArgs.Click += new System.EventHandler(this.buttonArgs_Click);
			// 
			// buttonAccept
			// 
			this.buttonAccept.Location = new System.Drawing.Point(32, 576);
			this.buttonAccept.Name = "buttonAccept";
			this.buttonAccept.Size = new System.Drawing.Size(232, 23);
			this.buttonAccept.TabIndex = 26;
			this.buttonAccept.Text = "Accept equations";
			this.buttonAccept.Click += new System.EventHandler(this.buttonAccept_Click);
			// 
			// checkedListBoxP
			// 
			this.checkedListBoxP.Location = new System.Drawing.Point(680, 72);
			this.checkedListBoxP.Name = "checkedListBoxP";
			this.checkedListBoxP.Size = new System.Drawing.Size(120, 469);
			this.checkedListBoxP.TabIndex = 24;
			// 
			// label4
			// 
			this.label4.Location = new System.Drawing.Point(696, 32);
			this.label4.Name = "label4";
			this.label4.TabIndex = 25;
			this.label4.Text = "Constants";
			// 
			// label1
			// 
			this.label1.Location = new System.Drawing.Point(872, 24);
			this.label1.Name = "label1";
			this.label1.Size = new System.Drawing.Size(168, 23);
			this.label1.TabIndex = 23;
			this.label1.Text = "Data sources";
			// 
			// panelMea
			// 
			this.panelMea.AutoScroll = true;
			this.panelMea.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
			this.panelMea.Location = new System.Drawing.Point(816, 72);
			this.panelMea.Name = "panelMea";
			this.panelMea.Size = new System.Drawing.Size(248, 464);
			this.panelMea.TabIndex = 22;
			// 
			// panelFormula
			// 
			this.panelFormula.AutoScroll = true;
			this.panelFormula.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
			this.panelFormula.Location = new System.Drawing.Point(32, 72);
			this.panelFormula.Name = "panelFormula";
			this.panelFormula.Size = new System.Drawing.Size(616, 472);
			this.panelFormula.TabIndex = 12;
			// 
			// tabPageConstants
			// 
			this.tabPageConstants.Controls.Add(this.label2);
			this.tabPageConstants.Controls.Add(this.buttonAcceptInitial);
			this.tabPageConstants.Controls.Add(this.dataGridP);
			this.tabPageConstants.Controls.Add(this.dataGridInitial);
			this.tabPageConstants.Controls.Add(this.labelInitial);
			this.tabPageConstants.Controls.Add(this.buttonAcceptAliases);
			this.tabPageConstants.Controls.Add(this.panelComboAlias);
			this.tabPageConstants.Location = new System.Drawing.Point(4, 22);
			this.tabPageConstants.Name = "tabPageConstants";
			this.tabPageConstants.Size = new System.Drawing.Size(1072, 622);
			this.tabPageConstants.TabIndex = 2;
			this.tabPageConstants.Text = "Constants";
			// 
			// label2
			// 
			this.label2.Location = new System.Drawing.Point(744, 24);
			this.label2.Name = "label2";
			this.label2.Size = new System.Drawing.Size(184, 23);
			this.label2.TabIndex = 36;
			this.label2.Text = "External aliases";
			// 
			// buttonAcceptInitial
			// 
			this.buttonAcceptInitial.Location = new System.Drawing.Point(280, 536);
			this.buttonAcceptInitial.Name = "buttonAcceptInitial";
			this.buttonAcceptInitial.TabIndex = 33;
			this.buttonAcceptInitial.Text = "Accept";
			this.buttonAcceptInitial.Click += new System.EventHandler(this.buttonAcceptInitial_Click);
			// 
			// dataGridP
			// 
			this.dataGridP.DataMember = "";
			this.dataGridP.DataSource = this.dataTableP;
			this.dataGridP.HeaderForeColor = System.Drawing.SystemColors.ControlText;
			this.dataGridP.Location = new System.Drawing.Point(368, 80);
			this.dataGridP.Name = "dataGridP";
			this.dataGridP.Size = new System.Drawing.Size(296, 416);
			this.dataGridP.TabIndex = 32;
			// 
			// dataTableP
			// 
			this.dataTableP.Columns.AddRange(new System.Data.DataColumn[] {
																			  this.dataColumnP,
																			  this.dataColumnVal});
			this.dataTableP.TableName = "TableP";
			// 
			// dataColumnP
			// 
			this.dataColumnP.ColumnName = "Parameter";
			this.dataColumnP.ReadOnly = true;
			// 
			// dataColumnVal
			// 
			this.dataColumnVal.ColumnName = "Value";
			this.dataColumnVal.DataType = typeof(System.Double);
			// 
			// dataGridInitial
			// 
			this.dataGridInitial.DataMember = "";
			this.dataGridInitial.DataSource = this.dataTableInitial;
			this.dataGridInitial.HeaderForeColor = System.Drawing.SystemColors.ControlText;
			this.dataGridInitial.Location = new System.Drawing.Point(56, 80);
			this.dataGridInitial.Name = "dataGridInitial";
			this.dataGridInitial.Size = new System.Drawing.Size(296, 416);
			this.dataGridInitial.TabIndex = 31;
			// 
			// dataTableInitial
			// 
			this.dataTableInitial.Columns.AddRange(new System.Data.DataColumn[] {
																					this.dataColumnV,
																					this.dataColumnValue});
			this.dataTableInitial.TableName = "TableInitial";
			// 
			// dataColumnV
			// 
			this.dataColumnV.ColumnName = "Variable";
			this.dataColumnV.ReadOnly = true;
			// 
			// dataColumnValue
			// 
			this.dataColumnValue.ColumnName = "Value";
			this.dataColumnValue.DataType = typeof(System.Double);
			// 
			// labelInitial
			// 
			this.labelInitial.Location = new System.Drawing.Point(128, 32);
			this.labelInitial.Name = "labelInitial";
			this.labelInitial.Size = new System.Drawing.Size(184, 23);
			this.labelInitial.TabIndex = 30;
			this.labelInitial.Text = "Initial values";
			// 
			// buttonAcceptAliases
			// 
			this.buttonAcceptAliases.Location = new System.Drawing.Point(752, 504);
			this.buttonAcceptAliases.Name = "buttonAcceptAliases";
			this.buttonAcceptAliases.TabIndex = 35;
			this.buttonAcceptAliases.Text = "Accept";
			this.buttonAcceptAliases.Click += new System.EventHandler(this.buttonAcceptAliases_Click);
			// 
			// panelComboAlias
			// 
			this.panelComboAlias.AutoScroll = true;
			this.panelComboAlias.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
			this.panelComboAlias.Location = new System.Drawing.Point(680, 56);
			this.panelComboAlias.Name = "panelComboAlias";
			this.panelComboAlias.Size = new System.Drawing.Size(352, 440);
			this.panelComboAlias.TabIndex = 34;
			// 
			// dataSetP
			// 
			this.dataSetP.DataSetName = "NewDataSet";
			this.dataSetP.Locale = new System.Globalization.CultureInfo("ru-RU");
			this.dataSetP.Tables.AddRange(new System.Data.DataTable[] {
																		  this.dataTableP});
			// 
			// dataSetInitial
			// 
			this.dataSetInitial.DataSetName = "NewDataSet";
			this.dataSetInitial.Locale = new System.Globalization.CultureInfo("ru-RU");
			this.dataSetInitial.Tables.AddRange(new System.Data.DataTable[] {
																				this.dataTableInitial});
			// 
			// mainMenuConsumer
			// 
			this.mainMenuConsumer.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
																							 this.menuItem1});
			// 
			// menuItem1
			// 
			this.menuItem1.Index = 0;
			this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
																					  this.menuItemFont});
			this.menuItem1.Text = "Format";
			// 
			// menuItemFont
			// 
			this.menuItemFont.Index = 0;
			this.menuItemFont.Text = "Font";
			this.menuItemFont.Click += new System.EventHandler(this.menuItemFont_Click);
			// 
			// FormRecursive
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
			this.ClientSize = new System.Drawing.Size(1144, 741);
			this.Controls.Add(this.tabControlMain);
			this.Menu = this.mainMenuConsumer;
			this.Name = "FormRecursive";
			this.Text = "FormRecursive";
			this.tabControlMain.ResumeLayout(false);
			this.tabPageVariables.ResumeLayout(false);
			this.tabPageEquations.ResumeLayout(false);
			this.tabPageConstants.ResumeLayout(false);
			((System.ComponentModel.ISupportInitialize)(this.dataGridP)).EndInit();
			((System.ComponentModel.ISupportInitialize)(this.dataTableP)).EndInit();
			((System.ComponentModel.ISupportInitialize)(this.dataGridInitial)).EndInit();
			((System.ComponentModel.ISupportInitialize)(this.dataTableInitial)).EndInit();
			((System.ComponentModel.ISupportInitialize)(this.dataSetP)).EndInit();
			((System.ComponentModel.ISupportInitialize)(this.dataSetInitial)).EndInit();
			this.ResumeLayout(false);

		}
		#endregion

		private void fillVariables()
		{
			string var = FormDiffEquation.Variables;
			int y = 40;
			foreach (char c in var)
			{
				Label l = new Label();
				l.Text = c + "";
				l.Left = 20;
				l.Width = 40;
				l.Top = y;
				panelVariables.Controls.Add(l);
				ComboBox cb = new ComboBox();
				cb.Top = y;
				cb.Left = l.Left + l.Width + 10;
				y += cb.Height + 10;
				variableCombo[c] = cb;
				foreach (string s in Measure.TypeNames)
				{
					cb.Items.Add(s);
				}
				panelVariables.Controls.Add(cb);
			}
			Hashtable variables = recursive.Variables;
			foreach (char c in variables.Keys)
			{
				object[] o = variables[c] as object[];
				ComboBox combo = variableCombo[c] as ComboBox;
				string type = Measure.GetTypeName(o[2]);
				for (int i = 0; i < combo.Items.Count; i++)
				{
					if (type.Equals(combo.Items[i].ToString()))
					{
						combo.SelectedIndex = i;
						break;
					}
				}
			}
		}

		private void fillFormulas()
		{
			Hashtable variables = recursive.Variables;
			formulaHash.Clear();
			formulaPanels.Clear();
			panelFormula.Controls.Clear();
			int top = 0;
			foreach (char c in variables.Keys)
			{
				PanelFormula p = new PanelFormula("" + c, this, panelFormula.Width, 200, FormDiffEquation.Variables, false, null, null);
				p.Left = 0;
				p.Top = top;
				top += p.Height;
				object[] o = variables[c] as object[];
				if (o[1] != null)
				{
					string f = o[1] as string;
					p.Formula = f;
				}
				panelFormula.Controls.Add(p);
				formulaHash[c] = p;
			}
		}

		private void fillConstants()
		{
			string st = recursive.AllExternalVariables;
			string str = recursive.AliasesString;
			Hashtable vars = recursive.Variables;
			checkedListBoxP.Items.Clear();
			foreach (char c in st)
			{
				if (vars.ContainsKey(c))
				{
					continue;
				}
				if (str.IndexOf(c) < 0)
				{
					checkedListBoxP.Items.Add(c + "", CheckState.Unchecked);
				}
				else
				{
					checkedListBoxP.Items.Add(c + "", CheckState.Checked);
				}

			}
			dataTableInitial.Clear();
			Hashtable var = recursive.Variables;
			foreach (char c in var.Keys)
			{
				object[] o = var[c] as object[];
				double a = ElementaryIntegerOperation.ToDouble(o[2]);
				dataTableInitial.Rows.Add(new object[]{c + "", a});
			}
			IAlias al = recursive;
			List<string> list = al.AliasNames;
			dataTableP.Clear();
			foreach (string s in list)
			{
				if (var.ContainsKey(s[0]))
				{
					continue;
				}
				dataTableP.Rows.Add(new object[]{s, ElementaryIntegerOperation.ToDouble(al[s])});
			}
		}


		private void fillMeasurements()
		{
			string s = "";
			Hashtable table = recursive.Arguments;
			foreach (char ch in table.Keys)
			{
				s += ch;
			}
			IDataConsumer c = recursive;
			int y = 0;
			for (int i = 0; i < c.Count; i++)
			{
				IMeasurements arrow = c[i];
				PanelMeasureFormula panel = new PanelMeasureFormula(arrow, s, recursive);
				panel.Width = 300;
				Panel pan = new Panel();
				pan.Width = panel.Width;
				pan.BackColor = Color.Black;
				pan.Top = y;
				pan.Height = 2;
				panelMea.Controls.Add(pan);
				y += pan.Height;
				panelMea.Controls.Add(panel);
				panel.Left = 0;
				panel.Top = y;
				y += panel.Height + 1;
			}
	/*		foreach (string str in solver.Arguments)
			{
				comboBoxTime.Items.Add(str[0] + "");
			}
			foreach (string str in solver.Arguments)
			{
				string s = str;
				int n = str.Length;
				if (s.Substring(n - 4, 4).Equals("Time"))
				{
					for (int i = 0; i < variables.Length; i++)
					{
						if (variables[i] == str[0])
						{
							this.comboBoxTime.SelectedIndex = i;
							return;
						}
					}
				}
			}*/
			

		}

		private void fillMeaCombo()
		{
			string s = "";
			Hashtable table = recursive.Arguments;
			foreach (char ch in table.Keys)
			{
				s += ch;
			}
			foreach (Control c in panelMea.Controls)
			{
				if (!(c is PanelMeasureFormula))
				{
					continue;
				}
				PanelMeasureFormula p = c as PanelMeasureFormula;
				p.FillComboboxes(s);
			}
		}

		private void createAndFillAliasComboBox()
		{
			IMeasurements m = recursive;
			Panel panelComboAliasInner = new Panel();
			panelComboAliasInner.Width = panelComboAlias.Width;
			panelComboAliasInner.Height = 5;
			panelComboAlias.Controls.Add(panelComboAliasInner);
			int y = 0;
            List<string> al = new List<string>();
			DataConsumer.GetAliases(recursive, al);
			Hashtable ea = recursive.ExternalAliases;
			for (int i = 0; i < m.Count; i++)
			{
				IMeasure mea = m[i];
				char c = mea.Name[0];
				ComboBox cb = new ComboBox();
				panelComboAliasInner.Controls.Add(cb);
				aliasCombo[c] = cb;
				cb.Width = 121;
				cb.Height = 21;
				cb.Top = 10 + y;
				cb.Left = 10;
				Label l = new Label();
				panelComboAliasInner.Controls.Add(l);
				l.Text = c + "";
				l.Top = cb.Top;
				l.Left = cb.Left + cb.Width + 10;
				foreach (string s in al)
				{
					cb.Items.Add(s);
				}
				y += cb.Height + 10;
				if (ea == null)
				{
					continue;
				}
				if (ea.ContainsKey(c))
				{
					string str = ea[c] as string;
					for (int j = 0; j < cb.Items.Count; j++)
					{
						if (str.Equals(cb.Items[j].ToString()))
						{
							cb.SelectedIndex = j;
							break;
						}
					}
				}
			}
			panelComboAliasInner.Height = y;
			
		}

		private void buttonVar_Click(object sender, System.EventArgs e)
		{
			try
			{
				Hashtable table = new Hashtable();
				foreach (char c in variableCombo.Keys)
				{
					ComboBox cb = variableCombo[c] as ComboBox;
					if (cb.SelectedIndex < 0)
					{
						continue;
					}
					string s = cb.SelectedItem.ToString();
					object[] o = new object[3];
					double a = 0;
					o[0] = a;
					o[2] = Measure.GetType(s);
					table[c] = o;
				}
				recursive.Variables = table;
				fillFormulas();
			}
			catch (Exception ex)
			{
				DefaultForm.ShowError(this, ex);
			}
		}

		private void buttonAccept_Click(object sender, System.EventArgs e)
		{
			try
			{
				Hashtable table = new Hashtable();
				foreach (char c in formulaHash.Keys)
				{
					PanelFormula p = formulaHash[c] as PanelFormula;
					table[c] = p.Formula;
				}
				recursive.Formulas = table;
				fillConstants();
			}
			catch (Exception ex)
			{
				DefaultForm.ShowError(this, ex);
			}
		}

		private void buttonPar_Click(object sender, System.EventArgs e)
		{
			try
			{
				string s = "";
				foreach (string str in checkedListBoxP.CheckedItems)
				{
					s += str[0];
				}
				recursive.AliasesString = s;
				fillMeaCombo();
			}
			catch (Exception ex)
			{
				DefaultForm.ShowError(this, ex);
			}

		}


		private void buttonArgs_Click(object sender, System.EventArgs e)
		{
			try
			{
				ArrayList arg = arguments;
				Hashtable table = new Hashtable();
				foreach (string s in arg)
				{
					table[s[0]] = s.Substring(4);
				}
				recursive.Arguments = table;
				fillConstants();
				createAndFillAliasComboBox();
			}
			catch (Exception ex)
			{
				DefaultForm.ShowError(this, ex);
			}
		}

		private void buttonAcceptInitial_Click(object sender, System.EventArgs e)
		{
			IAlias al = recursive;
			try
			{
				foreach (DataRow row in dataTableP.Rows)
				{
					string s = row[0] as string;
					double a = (double)row[1];

					al[s] = a;
				}
				Hashtable var = recursive.Variables;
				foreach (DataRow row in dataTableInitial.Rows)
				{
					string st = row[0] as string;
					double at = (double)row[1];
					object[] o = var[st[0]] as object[];
					o[0] = ElementaryBinaryOperation.Convert(o[2], at);
				}
			}
			catch (Exception ex)
			{
				DefaultForm.ShowError(this, ex);
			}

		}

		private void buttonAcceptAliases_Click(object sender, System.EventArgs e)
		{
			try
			{
				Hashtable table = new Hashtable();
				foreach (char c in aliasCombo.Keys)
				{
					ComboBox cb = aliasCombo[c] as ComboBox;
					if (cb.SelectedIndex < 0)
					{
						continue;
					}
					table[c] = cb.SelectedItem.ToString();
				}
				recursive.ExternalAliases = table;
			}
			catch (Exception ex)
			{
				DefaultForm.ShowError(this, ex);
			}
		
		}

		private void buttonAcceptComments_Click(object sender, System.EventArgs e)
		{
			ArrayList comments = ToolBox.ControlPanel.GetControls(panelComments);
			recursive.Comments = comments;
		}

		private void menuItemFont_Click(object sender, System.EventArgs e)
		{
			try
			{
				TextBox box = ToolBox.ControlPanel.GetActiveTextBox(panelComments);
				if (box == null)
				{
					return;
				}
				FontDialog dlg = new FontDialog();
				dlg.ShowDialog(this);
				Font font = dlg.Font;
				box.Font = font;
			}
			catch (Exception ex)
			{
				DefaultForm.ShowError(this, ex);
			}

		}

		private ArrayList arguments
		{
			get
			{
				ArrayList list = new ArrayList();
				foreach (Control c in panelMea.Controls)
				{
					if (!(c is PanelMeasureFormula))
					{
						continue;
					}
					PanelMeasureFormula p = c as PanelMeasureFormula;
					p.AddArgumentLabels(list);
				}
/*				object ob = comboBoxTime.SelectedItem;
				if (ob != null)
				{
					string sn = comboBoxTime.SelectedItem.ToString();
					if (sn.Length != 0)
					{
						list.Add(sn + " = Time");
					}
				}*/
				return list;
			}
		}

	}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Architect
Russian Federation Russian Federation
Ph. D. Petr Ivankov worked as scientific researcher at Russian Mission Control Centre since 1978 up to 2000. Now he is engaged by Aviation training simulators http://dinamika-avia.com/ . His additional interests are:

1) Noncommutative geometry

http://front.math.ucdavis.edu/author/P.Ivankov

2) Literary work (Russian only)

http://zhurnal.lib.ru/editors/3/3d_m/

3) Scientific articles
http://arxiv.org/find/all/1/au:+Ivankov_Petr/0/1/0/all/0/1

Comments and Discussions