private void BindProperty(PropiedadEscalar prop) { this.txTituloProp.DataBindings.Clear(); this.txDescProp.DataBindings.Clear(); this.txClaseProp.DataBindings.Clear(); this.txMetodoEscalarProp.DataBindings.Clear(); this.txMetodoDataSetProp.DataBindings.Clear(); this.txTituloDataSetProp.DataBindings.Clear(); this.txValorDefEscalarProp.DataBindings.Clear(); this.txFormatoEscalarProp.DataBindings.Clear(); this.txFormatoPresentacionProp.DataBindings.Clear(); this.cbGrupoProp.DataBindings.Clear(); this.cbComportamientoProp.DataBindings.Clear(); this.txTituloProp.DataBindings.Add("Text", prop, "Titulo"); this.txDescProp.DataBindings.Add("Text", prop, "Descripcion"); this.txClaseProp.DataBindings.Add("Text", prop, "Clase"); this.txMetodoEscalarProp.DataBindings.Add("Text", prop, "MetodoEscalar"); this.txMetodoDataSetProp.DataBindings.Add("Text", prop, "MetodoDataSet"); this.txTituloDataSetProp.DataBindings.Add("Text", prop, "TituloDataSet"); this.txValorDefEscalarProp.DataBindings.Add("Text", prop, "ValorDefectoEscalar"); this.txFormatoEscalarProp.DataBindings.Add("Text", prop, "FormatoEscalar"); this.txFormatoPresentacionProp.DataBindings.Add("Text", prop, "FormatoCadena"); this.cbGrupoProp.DropDownStyle = ComboBoxStyle.DropDownList; this.cbGrupoProp.DataSource = Enum.GetValues(typeof(PropiedadEscalar.TipoGrupo)); this.cbGrupoProp.DataBindings.Add("SelectedItem", prop, "Grupo"); this.cbComportamientoProp.DropDownStyle = ComboBoxStyle.DropDownList; this.cbComportamientoProp.DataSource = Enum.GetValues(typeof(PropiedadEscalar.TipoComportamiento)); this.cbComportamientoProp.DataBindings.Add("SelectedItem", prop, "Accion"); }
void TsbNuevaPropClick(object sender, System.EventArgs e) { PropiedadEscalar prop = new PropiedadEscalar(); prop.Titulo = "Nueva propiedad"; prop.Clase = "SIGUANETDesktop.ModeloExplotacion.Espacios.IUnidadGeoEstadistica"; this._puntoAcceso.Propiedades.Items.Add(prop); this.splitContainer1.Panel2.Enabled = true; this.BindProperty(prop); this.RefrescarLista(); this.lProps.SelectedItem = prop; }
void TsbBajarPropClick(object sender, System.EventArgs e) { if (this.lProps.SelectedItem != null) { int i = this.lProps.SelectedIndex; if ((i > -1) && (i < this.lProps.Items.Count - 1)) { PropiedadEscalar prop = (PropiedadEscalar)this.lProps.SelectedItem; this.ReOrdenar((PropiedadEscalar)this.lProps.SelectedItem, i, 1); this.lProps.SelectedItem = prop; } } }
void TsbSubirPropClick(object sender, System.EventArgs e) { if (this.lProps.SelectedItem != null) { int i = this.lProps.SelectedIndex; if (i > 0) { PropiedadEscalar prop = (PropiedadEscalar)this.lProps.SelectedItem; this.ReOrdenar((PropiedadEscalar)prop, i, -1); this.lProps.SelectedItem = prop; } } }
void TsbBorrarPropClick(object sender, System.EventArgs e) { if (this.lProps.SelectedItem != null) { PropiedadEscalar prop = (PropiedadEscalar)this.lProps.SelectedItem; this._puntoAcceso.Propiedades.Items.Remove(prop); if (this._puntoAcceso.Propiedades.Items.Count > 0) { PropiedadEscalar nextprop = this._puntoAcceso.Propiedades.Items[0]; this.splitContainer1.Panel2.Enabled = true; this.BindProperty(nextprop); this.RefrescarLista(); this.lProps.SelectedItem = nextprop; } else { this.splitContainer1.Panel2.Enabled = false; this.RefrescarLista(); } } }
void LPropsSelectedIndexChanged(object sender, System.EventArgs e) { if (this.lProps.SelectedIndex >= 0) { PropiedadEscalar prop = (PropiedadEscalar)this.lProps.Items[this.lProps.SelectedIndex]; if (this.txTituloProp.DataBindings.Count == 0) { this.splitContainer1.Panel2.Enabled = true; this.BindProperty(prop); } else { if (!this.txTituloProp.DataBindings[0].DataSource.Equals(prop)) { this.splitContainer1.Panel2.Enabled = true; this.BindProperty(prop); } } } else { this.splitContainer1.Panel2.Enabled = false; } }
private void ReOrdenar(PropiedadEscalar prop, int posInicial, int desplazamiento) { this._puntoAcceso.Propiedades.Items.RemoveAt(posInicial); this._puntoAcceso.Propiedades.Items.Insert(posInicial + desplazamiento, prop); this.RefrescarLista(); }
public void itemSeleccionado(object sender, EventArgs e) { try { this.Cursor = Cursors.WaitCursor; PropiedadEscalar prop = (PropiedadEscalar)this.lstPropiedades.SelectedItems[0].Tag; object[] args = null; object result = null; bool methodFound = false; frmArbolMapa formM = null; frmArbolDatos formD = null; Type tipo = Type.GetType(prop.Clase, true, true); //IsInstanceOfType permite comprobar la compatibilidad //(pertenencia o herencia) del //objeto _uge con el tipo (interfaz o clase) especificado if (tipo.IsInstanceOfType(this._uge)) { switch (prop.Accion) { case PropiedadEscalar.TipoComportamiento.Mostrar_Escalar_y_Cartografia: formM = new frmArbolMapa(null, null, prop.TituloDataSet, this._uge); break; case PropiedadEscalar.TipoComportamiento.Mostrar_Escalar_y_Datos: case PropiedadEscalar.TipoComportamiento.Mostrar_Escalar_Cartografia_y_Datos: MethodInfo[] methods = tipo.GetMethods(); foreach (MethodInfo m in methods) { if (m.Name.ToUpper() == prop.MetodoDataSet.Trim().ToUpper()) { int nparams = m.GetParameters().Length; if (this._restriccion == null) { if (nparams == 1) { ParameterInfo p = m.GetParameters()[0]; if ((p.IsOut) && (p.ParameterType.Name == "DataSet&")) { args = new object[] { null }; result = m.Invoke(this._uge, args); methodFound = true; break; } } } else { if (nparams == 2) { ParameterInfo pDataSet = m.GetParameters()[0]; ParameterInfo pRestriccion = m.GetParameters()[1]; if ((pDataSet.IsOut) && (pDataSet.ParameterType.Name == "DataSet&")) { //¡IMPORTANTE! Comparar con el tipo principal y con el tipo base //puesto que pueden existir métodos donde la restricción haga referencia //a una clase abstracta (i.e. GrupoActividad) if (pRestriccion.ParameterType == this._restriccion.GetType() || pRestriccion.ParameterType == this._restriccion.GetType().BaseType) { args = new object[] { null, this._restriccion }; result = m.Invoke(this._uge, args); methodFound = true; break; } } } } } } if (!methodFound) { throw new Exception(string.Format("No se encontró el método {0}(out DataSet ds) en la clase {1}", prop.MetodoDataSet, prop.Clase)); } else { string titulo = prop.TituloDataSet; if (this._restriccion != null) { if (this._restriccion is DepartamentoSIGUA) { titulo = string.Format(prop.TituloDataSet, (this._restriccion as DepartamentoSIGUA).Denominacion); } if (this._restriccion is ActividadSIGUA) { titulo = string.Format(prop.TituloDataSet, (this._restriccion as ActividadSIGUA).Denominacion); } if (this._restriccion is GrupoActividad) { titulo = string.Format(prop.TituloDataSet, (this._restriccion as GrupoActividad).DenominacionAlt); } } if (result is List <Estancia> ) { if (prop.Accion == PropiedadEscalar.TipoComportamiento.Mostrar_Escalar_y_Datos) { formD = new frmArbolDatos((List <Estancia>)result, (DataSet)args[0], titulo, this._uge); } else if (prop.Accion == PropiedadEscalar.TipoComportamiento.Mostrar_Escalar_Cartografia_y_Datos) { formM = new frmArbolMapa((List <Estancia>)result, (DataSet)args[0], titulo, this._uge); } } else if (result is List <Ubicacion> ) { if (prop.Accion == PropiedadEscalar.TipoComportamiento.Mostrar_Escalar_y_Datos) { formD = new frmArbolDatos((List <Ubicacion>)result, (DataSet)args[0], titulo, this._uge); } else if (prop.Accion == PropiedadEscalar.TipoComportamiento.Mostrar_Escalar_Cartografia_y_Datos) { formM = new frmArbolMapa((List <Ubicacion>)result, (DataSet)args[0], titulo, this._uge); } } else { throw new Exception(string.Format("El método {0}(out DataSet ds) de la clase {1} no devolvió un resultado compatible con el módulo de destino. El tipo devuelto es {2}", prop.MetodoDataSet, prop.Clase, result.GetType().Name)); } } break; default: break; } if (formD != null) { formD.EventoInicioModulo += this.IndicarInicioModulo; formD.EventoPasoModulo += this.IndicarProgresoModulo; formD.CargarDatos(); formD.Show(); } if (formM != null) { formM.EventoInicioModulo += this.IndicarInicioModulo; formM.EventoPasoModulo += this.IndicarProgresoModulo; formM.CargarDatos(); formM.Show(); } } else { throw new Exception(string.Format("La clase {0} no es compatible con la clase {1}", prop.Clase, this._uge.GetType().FullName)); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { this.Cursor = Cursors.Default; } }