Esempio n. 1
0
 /// <summary>
 /// Implementa el Método de la Interfaz.
 /// Inicia el sistema de acuerdo al tipo de llamada entrante, en donde
 /// en principio puede ejecutarse el sistema en modo 'BATCH': sin UI y
 /// finalizando al terminar la ejecucion de los procesos batch; ó, en 
 /// cualquier otro modo, con UI y dejando 'fluir' la aplicación.
 /// </summary>
 public virtual void iniciarSistema(
     ENivelMensaje nivelEjecucion,
     IVistaCuadroInicio wininicio,
     IVistaVentanaPpal winppal,
     IControladorLogging log,
     IControladorSeguridad security)
 {
     if (nivelEjecucion == ENivelMensaje.BATCH)
         try {
             iniciarSistemaSinUI(nivelEjecucion, log, security);
             ejecutarProcesosBatch();
         } catch (Exception e) {
             logear("APP-NOINIT-ERROR", ENivelMensaje.FATAL, e.ToString());
         } finally {
             cerrarSistema();
         }
     else
         try {
             iniciarSistemaConUI(nivelEjecucion, null, null, null, null);
         } catch (Exception e) {
             mostrar("APP-NOINIT-ERROR", ENivelMensaje.FATAL, e.ToString(), true);
             cerrarSistema();
         }
 }
Esempio n. 2
0
        /// <summary>
        /// Implementa el Método de la Interfaz.
        /// </summary>
        protected virtual void iniciarSistemaConUI(
            ENivelMensaje nivelEjecucion,
            IVistaCuadroInicio wininicio,
            IVistaVentanaPpal winppal,
            IControladorLogging log,
            IControladorSeguridad security)
        {
            try {
                // Inicializa los componentes internos necesarios
                _nivelEjecucion = nivelEjecucion;
                AppPath = Application.StartupPath;

                // Inicializa los parametros del mismo.
                iniciarParametros();

                // Establece componentes usados en la ejecución del sistema
                _log = log ?? new LogSistema(nivelEjecucion);
                _seguridad = security ?? new SecureService();

                // Inicia las interfaces gráficas
                _wininicio = wininicio ?? new WinInicio(this);
                _vista = winppal ?? new WinPrincipal(this);

                // Arranca la ventana de inicio que se encarga de
                // realizar el inicio efectivo de este sistema.
                _wininicio.abrir();
                _wininicio.iniciarSistema();

                // Inicia la vista (ventana) principal del sistema.
                iniciarUi();
            } catch (Exception e) {
                MessageBox.Show(string.Format("ERROR FATAL DEL SISTEMA!\r\n{0}\r\n{1}",
                        Mensaje.TextoMensaje("APP-NOINIT-ERROR"),
                        e),
                    Mensaje.TextoMensaje("TITULO-SHOW"),
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Stop);
                cerrarSistema();
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Implementa el Método de la Interfaz.
        /// </summary>
        public virtual void generarMenu(IVistaVentanaPpal vistaVentana, MenuStrip menu, ToolStrip toolbar)
        {
            ToolStripMenuItem item, subitem, tritem;
            ToolStripButton subuton, tributon;
            bool agregarSeparador = false;

            // Primero borra todos los que tiene actualmente el menu
            menu.Items.Clear();
            toolbar.Items.Clear();

            Usuario usuario = (_seguridad.haySesionActiva()) ? _seguridad.getUsuario() : null;
            logear("MENU-BASE", ENivelMensaje.INFORMACION, Mensaje.TextoMensaje("USUARIO-PRE") + usuario);

            // Arranca recorriendo las listas de primer nivel (según atributo 'orden' de PARAMETRO)
            try {
                IList<Parametro> listaMenus = Parametros.GetByTipoClaveLike(ETipoParametro.MENU, "MENU.");
                if (listaMenus.Count > 0)
                    foreach (Parametro p in listaMenus) {
                        // Primero controla su debe colocar el menu (solo si usuario no es nulo
                        // ó si el parametro, asociado al menu, tiene el campo valorbool = true)
                        if (usuario == null && !p.Valorbool)
                            continue;

                        // Crea la opción de menu de primer nivel
                        item = new ToolStripMenuItem(p.Nombre);
                        bool agregarMenu = false;

                        // Para cada una obtiene las opciones de 2do nivel (SUBMENU, según 'orden')
                        IList<Parametro> listaSubMenus = Parametros.GetByTipoClaveLike(ETipoParametro.SUBMENU, p.Clave);
                        if (listaSubMenus.Count > 0)
                            foreach (Parametro ps in listaSubMenus)
                                // Verifica si se trata de un separador o un menu real
                                // (si es separador lo guarda y solo lo agrega si hay
                                // alguna otra opcion de menú real que venga despues)
                                if (ps.Clave.EndsWith("$LINEA$"))
                                    agregarSeparador = true;
                                else if (ps.Clave.Equals("MENU.SISTEMA.INICIARSESION") && usuario != null)
                                    continue;
                                else if (ps.Clave.Equals("MENU.SISTEMA.CERRARSESION") && usuario == null)
                                    continue;
                                else {
                                    // Crea la opción de menu de segundo nivel (aqui se
                                    // agrega en la propiedad TAG el nombre del caso de
                                    // uso a dispararse en caso de seleccionar el mismo)
                                    subitem = new ToolStripMenuItem(ps.Nombre) {Tag = ps.Valorstring};

                                    // Para el submenu obtiene opciones de 3er orden (TRIMENU, según 'orden')
                                    IList<Parametro> listaTriMenus =
                                        Parametros.GetByTipoClaveLike(ETipoParametro.TRIMENU, ps.Clave);
                                    if (listaTriMenus.Count > 0)
                                        foreach (Parametro pt in listaTriMenus) {
                                            // Verifica si debe validar el permiso y solo agrega
                                            // la opción de trimenu si se pasan las validaciones
                                            if (!pt.Valorbool &&
                                                (usuario == null || !usuario.poseePermiso(pt, ETipoPermiso.EJECUTAR)))
                                                continue;

                                            // Crea el trimenu y asigna un delegado para el click
                                            tritem = new ToolStripMenuItem(pt.Nombre) {Tag = pt.Valorstring};
                                            tritem.Click += vistaVentana.subMenuClick;
                                            subitem.DropDownItems.Add(tritem);

                                            // verifica si debe agregar un boton en la barra
                                            if (pt.Valorchar == 'B') {
                                                tributon = new ToolStripButton(
                                                    pt.Nombre
                                                        .Replace("...", string.Empty)
                                                        .Replace("&", string.Empty)
                                                        .Replace("Gestión de", string.Empty)
                                                        .Replace("Administración de", string.Empty)
                                                        .Replace("Registros de", string.Empty).ToUpper())
                                                           {Tag = pt.Valorstring};
                                                tributon.Click += vistaVentana.subMenuClick;
                                                toolbar.Items.Add(tributon);
                                            }
                                        }

                                    // Primero verifica si el usuario actual posee el permiso necesario
                                    if (!ps.Valorbool &&
                                        (usuario == null || !usuario.poseePermiso(ps, ETipoPermiso.EJECUTAR)))
                                        continue;

                                    // Si tiene permiso asigna el submenu y el delegado para el click
                                    string icomenu = ps.Valorstring.Replace('.', '_');
                                    Image img = ((Image)(Resources.ResourceManager.GetObject(icomenu)));
                                    subitem.Image = img;
                                    subitem.Click += vistaVentana.subMenuClick;

                                    if (agregarSeparador) {
                                        item.DropDownItems.Add(new ToolStripSeparator());
                                        agregarSeparador = false;
                                    }
                                    item.DropDownItems.Add(subitem);
                                    agregarMenu = true;

                                    // verifica si debe agregar un boton en la barra
                                    if (ps.Valorchar == 'B') {
                                        subuton = new ToolStripButton(
                                            ps.Nombre
                                                .Replace("...", string.Empty)
                                                .Replace("&", string.Empty)
                                                .Replace("Gestión de", string.Empty)
                                                .Replace("Administración de", string.Empty)
                                                .Replace("Registros de", string.Empty).ToUpper())
                                                  {Tag = ps.Valorstring};
                                        subuton.Click += vistaVentana.subMenuClick;
                                        subuton.Image = img;
                                        subuton.ImageAlign = ContentAlignment.TopCenter;
                                        subuton.TextAlign = ContentAlignment.BottomCenter;
                                        subuton.TextImageRelation = TextImageRelation.ImageAboveText;
                                        subuton.ToolTipText = ps.Nombre.Replace("&", string.Empty);
                                        toolbar.Items.Add(subuton);
                                    }
                                }

                        // Si el menu tiene algo se agrega, pero verifica
                        // primero si hay separador, para agregar al menu
                        if (agregarMenu)
                            menu.Items.Add(item);
                    }
            } catch (Exception e) {
                throw new AppErrorException("MENU-NOK", e.ToString());
            }
        }