public static List <AstronomicalObject> ReadDataFile() { dataAlreadySaved = new List <AstronomicalObject>(); List <AstronomicalObject> storedCelestialObjects = new List <AstronomicalObject>(); try { StreamReader dataFile; string line; AstronomicalObject celesitalBody;// = new AstronomicalObject("", new ExponentionalValues(), new ExponentionalValues()); char delimiter = ','; dataFile = File.OpenText(dataFilePath); while (!dataFile.EndOfStream) { line = dataFile.ReadLine(); string[] tokens = line.Split(delimiter); celesitalBody = new AstronomicalObject( tokens[0], new ExponentionalValues( float.Parse(tokens[1]), int.Parse(tokens[2]), (SIUnit)Enum.Parse(typeof(SIUnit), tokens[3])), new ExponentionalValues( float.Parse(tokens[4]), int.Parse(tokens[5]), (SIUnit)Enum.Parse(typeof(SIUnit), tokens[6])) ); storedCelestialObjects.Add(celesitalBody); dataAlreadySaved.Add(celesitalBody); } dataFile.Close(); } catch (Exception ex) { storedCelestialObjects.Add(new AstronomicalObject( "Pheonix Cluster Black Hole", new ExponentionalValues(2, 10, SIUnit.SolarMass), new ExponentionalValues(5.9f, 10, SIUnit.km))); storedCelestialObjects.Add(new AstronomicalObject( "Earth", new ExponentionalValues(5.972f, 24, SIUnit.kg), new ExponentionalValues(6.371f, 3, SIUnit.km))); System.Windows.Forms.MessageBox.Show(ex.Message); } return(storedCelestialObjects); }
/// <summary> /// If the "save" check box is clicked; create a new entry in the list of Astronomical Objects /// Given the user input. /// Will calculate the Intesity of Gravity regardless if the object is being saved. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void add_CalculateButton_Click(object sender, EventArgs e) { string[] celestialBodyDescriptors = new string[] { add_NameTextBox.Text, add_MassTextBox.Text, add_MassExponentTextBox.Text, add_MassUnitComboBox.SelectedItem.ToString(), add_RadiusTextBox.Text, add_RadiusExponentTextBox.Text, add_RadiusUnitComboBox.SelectedItem.ToString() }; _CreatedAstronomicalObject = new AstronomicalObject(celestialBodyDescriptors); if (saveCheckBox.Checked && !_AstronomicalObjectData.Contains(_CreatedAstronomicalObject)) { _AstronomicalObjectData.Add(_CreatedAstronomicalObject); UpdateExistingData(); } Add_DisplayDistance(1); //add_GravityOutputTextBox.Text = _CreatedAstronomicalObject.SurfaceGravityToString(); }
/// <summary> /// Display the corresponding information in the corresponding fields /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void loadedObjectsCombo_SelectedIndexChanged(object sender, EventArgs e) { //Get the selected Astronomical Object _SelectedAstronomicalObject = _AstronomicalObjectData[loadedObjectsCombo.SelectedIndex]; nameTextBox.Text = _SelectedAstronomicalObject.Name; //Mass ExponentionalValues mass = _SelectedAstronomicalObject.Mass; massTextBox.Text = mass.value.ToString(); massExponentTextBox.Text = mass.exponent.ToString(); massUnitsCombo.SelectedItem = (mass.units.Equals(SIUnit.kg)) ? "kilograms" : "Solar Masses"; //Radius ExponentionalValues radius = _SelectedAstronomicalObject.Radius; radiusTextBox.Text = radius.value.ToString(); radiusExponentTextBox.Text = radius.exponent.ToString(); radiusUnitsCombo.SelectedItem = (radius.units.Equals(SIUnit.m)) ? "meters" : "kilometers"; gravityOutputTextBox.Text = _SelectedAstronomicalObject.SurfaceGravityToString(); DisplayDistance(distanceTrackBar.Value); }