private void OnButton1Click(object sender, EventArgs e) /// El botón "crear" es pulsado { Area area = null; Area otra; Database bd = MainForm.mainForm.Db; // id y nombre requeridos if (textBox1.Text.Length == 0 || textBox2.Text.Length == 0) { MessageBox.Show( "El nombre y el ID son obligatorios", "Error", MessageBoxButtons.OK ); goto fin; } // nombre e id deben ser únicos textBox2.Text = Area.NormalizeName(textBox2.Text); textBox1.Text = Area.NormalizeName(textBox1.Text); Application.DoEvents(); if ((otra = bd.GetAreaById(textBox2.Text)) != null || (otra = bd.GetAreaByName(textBox1.Text)) != null) { MessageBox.Show( "Otra área (" + otra + ") ya existe con ese id y/o nombre", "Error" ); goto fin; } // Prepare the place -- maybe is a real estate Area elLugar = xpLugares.SelectedArea; if (elLugar == null) { MessageBox.Show( "Debe seleccionar un área.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error ); } if (elLugar is Estate) { elLugar = ((Estate)elLugar).Parent; } // No crear fincas en toplevel if (esFinca && elLugar == bd.Root) { MessageBox.Show( "No es posible crear fincas en el tope de la jerarquía", "Atención" ); goto fin; } try { // Crear el área adecuada if (!esFinca) { area = new Place((Place)elLugar, textBox2.Text, textBox1.Text); // Copiar archivos a imágenes if (textBox9.Text.Length > 0) { SaveImage(textBox9.Text, (( Place )area).GetImageName() ); } } else { double superficie; // Preparar la superficie try { superficie = textBox4.Text.DoubleFromString(); } catch (Exception) { superficie = 0; } // Crear la nueva área Estate f = new Estate( textBox2.Text, textBox1.Text, ( Place )elLugar, superficie ); area = f; // ¿Es urbana? f.IsUrban = checkBox1.Checked; // Copiar archivos a imágenes if (textBox5.Text.Length > 0) { SaveImage(textBox5.Text, f.GetImageName()); } if (textBox6.Text.Length > 0) { SaveImage(textBox6.Text, f.getNombreImagenZona()); } } } catch (System.IO.IOException err) { MessageBox.Show("Se produjo un error al copiar archivos: " + err.ToString() ); } catch (Exception err) { MessageBox.Show("Error creando área: " + err.ToString() ); } area.Remarks = textBox3.Text; // Cerrar esta ventana Close(); // Insertarla en la base de datos bd.InsertArea((Place)elLugar, area); bd.Sync(); // Crear un visor para la nueva área PlaceExplorerEngine.LaunchExplorerFor(area); fin: return; }