Пример #1
0
 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");
 }
Пример #2
0
        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;
        }
Пример #3
0
 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;
         }
     }
 }
Пример #4
0
 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;
         }
     }
 }
Пример #5
0
        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();
                }
            }
        }
Пример #6
0
 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;
     }
 }
Пример #7
0
 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();
 }
Пример #8
0
        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;
            }
        }