/// <summary>
        /// Asigna los datos de origen para controles que dependen de otros
        /// </summary>
        /// <param name="controlName"></param>
        protected override void SetDependentControlSource(string controlName)
        {
            switch (controlName)
            {
            case "Plan_CB":
            {
                //moleQule.Library.Timer t = new moleQule.Library.Timer();
                if (Datos_Planes.Current != null && Plan_CB.SelectedItem != null)
                {
                    Datos_Promociones.DataSource = _combo_planes.GetFilteredChilds(((ComboBoxSource)Plan_CB.SelectedItem).Oid);
                    Generar_BT.Enabled           = true;
                }
                // t.Record("Plan_CB");
                //MessageBox.Show(t.GetCronos());
            } break;

            case "Promocion_CB":
            {
                //moleQule.Library.Timer t = new moleQule.Library.Timer();
                if (Datos_Promociones.Current != null)
                {
                    if (Promocion_CB.SelectedItem != null)
                    {
                        _entity.OidPromocion = ((ComboBoxSource)Promocion_CB.SelectedItem).Oid;
                    }
                    Generar_BT.Enabled = true;
                }
                //t.Record("Promocion_CB");
                //MessageBox.Show(t.GetCronos());
            } break;

            case "Semana_GB":
            {
                PromocionInfo promo = null;
                if (Promocion_CB.SelectedItem != null)
                {
                    promo = PromocionInfo.Get(((ComboBoxSource)Promocion_CB.SelectedItem).Oid, true);
                }

                if (promo != null)
                {
                    CLB_1.Items[0] = "08:00 - 9:00";
                    CLB_1.Items[1] = "09:00 - 10:00";
                    CLB_1.Items[2] = "10:00 - 11:00";
                    CLB_1.Items[3] = "11:00 - 12:00";
                    CLB_1.Items[4] = "12:00 - 13:00";
                    CLB_1.Items[5] = "13:00 - 14:00";
                    CLB_1.Items[6] = "14:00 - 15:00";
                    CLB_1.Items[7] = "15:00 - 16:00";
                    CLB_2.Items[0] = "16:00 - 17:00";
                    CLB_2.Items[1] = "17:00 - 18:00";
                    CLB_2.Items[2] = "18:00 - 19:00";
                    CLB_2.Items[3] = "19:00 - 20:00";
                    CLB_2.Items[4] = "20:00 - 21:00";
                    CLB_2.Items[5] = "21:00 - 22:00";

                    CLB_1.SetItemChecked(0, promo.H8AM);
                    CLB_1.SetItemChecked(1, promo.H0);
                    CLB_1.SetItemChecked(2, promo.H1);
                    CLB_1.SetItemChecked(3, promo.H2);
                    CLB_1.SetItemChecked(4, promo.H3);
                    CLB_1.SetItemChecked(5, promo.H4);
                    CLB_1.SetItemChecked(6, promo.H5);
                    CLB_1.SetItemChecked(7, promo.H6);
                    CLB_2.SetItemChecked(0, promo.H7);
                    CLB_2.SetItemChecked(1, promo.H8);
                    CLB_2.SetItemChecked(2, promo.H9);
                    CLB_2.SetItemChecked(3, promo.H10);
                    CLB_2.SetItemChecked(4, promo.H11);
                    CLB_2.SetItemChecked(5, promo.H12);

                    _entity.Configuracion = Sesiones_Promociones.NewChildList();

                    foreach (Sesion_PromocionInfo item in promo.Sesiones)
                    {
                        Sesion_Promocion copia_conf = Sesion_Promocion.NewChild(_entity);
                        copia_conf.HoraInicio = item.HoraInicio;
                        copia_conf.Sabado     = item.Sabado;
                        copia_conf.NHoras     = item.NHoras;
                        copia_conf.Hora       = item.Hora;
                        _entity.Configuracion.AddItem(copia_conf);
                    }

                    Datos_Sesiones.DataSource = _entity.Configuracion;
                }
            } break;

            case "Sabado_GB":
            {
                PromocionInfo promo = null;
                if (Promocion_CB.SelectedItem != null)
                {
                    promo = _promociones.GetItem(((ComboBoxSource)Promocion_CB.SelectedItem).Oid);
                }

                if (promo != null)
                {
                    CLB_3.Items[0] = "09:00 - 10:00";
                    CLB_3.Items[1] = "10:00 - 11:00";
                    CLB_3.Items[2] = "11:00 - 12:00";
                    CLB_3.Items[3] = "12:00 - 13:00";
                    CLB_3.Items[4] = "13:00 - 14:00";

                    CLB_3.SetItemChecked(0, promo.HS0);
                    CLB_3.SetItemChecked(1, promo.HS1);
                    CLB_3.SetItemChecked(2, promo.HS2);
                    CLB_3.SetItemChecked(3, promo.HS3);
                    CLB_3.SetItemChecked(4, promo.HS4);
                }
            } break;
            }
        }
        private void DoGeneraCronograma()
        {
            PgMng.Reset(10, 1, Resources.Messages.GENERANDO_CRONOGRAMA, this);

            try
            {
                int clases_dia    = 0;
                int clases_sabado = 0;
                int total_dias    = 5;
                PgMng.Grow();

                List <bool> activas_dia = new List <bool>();

                if (CLB_1.CheckedIndices.Contains(0))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_1.CheckedIndices.Contains(1))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_1.CheckedIndices.Contains(2))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_1.CheckedIndices.Contains(3))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_1.CheckedIndices.Contains(4))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_1.CheckedIndices.Contains(5))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_1.CheckedIndices.Contains(6))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_1.CheckedIndices.Contains(7))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_2.CheckedIndices.Contains(0))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_2.CheckedIndices.Contains(1))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_2.CheckedIndices.Contains(2))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_2.CheckedIndices.Contains(3))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_2.CheckedIndices.Contains(4))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                if (CLB_2.CheckedIndices.Contains(5))
                {
                    clases_dia++;
                    activas_dia.Add(true);
                }
                else
                {
                    activas_dia.Add(false);
                }
                PgMng.Grow();

                List <bool> activas_sabado = new List <bool>();

                if (CLB_3.CheckedIndices.Contains(0))
                {
                    clases_sabado++;
                    activas_sabado.Add(true);
                }
                else
                {
                    activas_sabado.Add(false);
                }
                if (CLB_3.CheckedIndices.Contains(1))
                {
                    clases_sabado++;
                    activas_sabado.Add(true);
                }
                else
                {
                    activas_sabado.Add(false);
                }
                if (CLB_3.CheckedIndices.Contains(2))
                {
                    clases_sabado++;
                    activas_sabado.Add(true);
                }
                else
                {
                    activas_sabado.Add(false);
                }
                if (CLB_3.CheckedIndices.Contains(3))
                {
                    clases_sabado++;
                    activas_sabado.Add(true);
                }
                else
                {
                    activas_sabado.Add(false);
                }
                if (CLB_3.CheckedIndices.Contains(4))
                {
                    clases_sabado++;
                    activas_sabado.Add(true);
                }
                else
                {
                    activas_sabado.Add(false);
                }
                PgMng.Grow();

                if (clases_sabado > 0)
                {
                    total_dias = 6;
                }

                _entity.Configuracion = Sesiones_Promociones.NewChildList();

                for (int row_index = 0; row_index < Datos_Sesiones.List.Count; row_index++)
                {
                    Sesion_Promocion sp     = Sesion_Promocion.NewChild(_entity);
                    Sesion_Promocion sp_row = ((Sesion_Promocion)Datos_Sesiones.List[row_index]);
                    sp.Hora       = sp_row.Hora;
                    sp.HoraInicio = sp_row.HoraInicio;
                    sp.NHoras     = sp_row.NHoras;
                    _entity.Configuracion.Add(sp);
                }

                moleQule.Library.Timer t = new moleQule.Library.Timer();
                //t.Start();
                //t.Record("inicio");
                PromocionInfo    promocion = PromocionInfo.Get(_entity.OidPromocion, false);
                PlanEstudiosInfo plan      = PlanEstudiosInfo.Get(_entity.OidPlan, false);
                if (promocion != null)
                {
                    if (_entity.GeneraCronograma(promocion.Oid != 0 ? promocion.FechaInicio : plan.Fecha, DateTime.MaxValue, (int)Semana_NUD.Value, clases_dia, clases_sabado, total_dias, (int)Practicas_NUD.Value, t, activas_dia, activas_sabado))
                    {
                        //t.Record("fin");
                        //MessageBox.Show(t.GetCronos());
                        //t.Record("GeneraCronograma");
                        //MessageBox.Show("Cronograma generado con éxito");
                        _generado = true;
                    }
                    else
                    {
                        MessageBox.Show("No se ha podido generar el cronograma.\n" +
                                        "Compruebe que no se hayan eliminado clases que ya estuvieran planificadas.");
                        _generado = false;
                    }
                }
                else
                {
                    MessageBox.Show("No se ha podido generar el cronograma.\n" +
                                    "Seleccione una promoción.");
                    _generado = false;
                }
                //Generar_BT.Enabled = false;
                PgMng.Grow();
            }
            finally { PgMng.FillUp(); }
            if (_generado)
            {
                PgMng.ShowInfoException(Resources.Messages.CRONOGRAMA_GENERADO_CON_EXITO);
                Submit_BT.PerformClick();
            }
        }