Ejemplo n.º 1
0
        /// <summary>
        /// Este método se ejecuta cuando se hace doble-click (y enter?)
        /// sobre un item del árbol de opciones de la ventana. Debería 
        /// 'mostrar' cualquier error que pudiese ocurrir y no propagar 
        /// ninguna excepción. Cada nodo del árbol que puede lanzar un
        /// caso de uso debería tener, en su atributo Tag, un texto con
        /// el nombre de dicho caso (aplicando el esquema dll.caso-de-uso
        /// de ser necesario) y si se desea pasar algún parametro (solo 
        /// puede ser una cadena), se puede pasar separando el mismo por
        /// dos puntos ':', por ejemplo: 
        ///     TAG: cuAbmGestion.cuListGestiones:TELEFONICA
        /// </summary>
        /// <param name="sender">
        /// El componente que lanza el evento (envía el mensaje).
        /// </param>
        /// <param name="e">
        /// Los argumentos del evento lanzado por el componente.
        /// </param>
        private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            TreeNode nodo = e.Node;

            // Si el nodo seleccionado no tiene info extra se vuelve
            if (nodo == null || nodo.Tag == null)
                return;

            // Se separa la cadena asociada al nodo seleccionado
            string[] textosNodo = nodo.Tag.ToString().Split(':');
            if (textosNodo[0] != null && textosNodo[0].StartsWith("cu"))
                try {
                    // Se obtiene cualquier cadena extra para pasar al listado
                    string llamado = (textosNodo.Length > 1)
                                         ? textosNodo[1]
                                         : "";

                    // Se avisa al controlador que se está por ejecutar un nodo
                    _controladorTree.alEjecutarNodo(nodo);

                    // Por las dudas avisa que va a ocultar los paneles que ya existan
                    if (_controladorListado != null)
                        _controladorListado.alOcultar();

                    // Se lanza el caso de uso de control del listado
                    _controladorListado =
                        (IControladorListTree)
                        (CUCaller.CallCU(textosNodo[0], this, new object[] {EModoVentana.FULL, llamado}));

                    // Actualiza la imagen del seleccionado
                    if (_nodoPrevio != null) {
                        _nodoPrevio.SelectedImageIndex = _imagenSPrevia;
                        _nodoPrevio.ImageIndex = _imagenNsPrevia;
                    }
                    _imagenSPrevia = nodo.SelectedImageIndex;
                    _imagenNsPrevia = nodo.ImageIndex;
                    _nodoPrevio = nodo;
                    nodo.SelectedImageIndex = _controladorTree.getImagenSeleccionado();
                    nodo.ImageIndex = _controladorTree.getImagenSeleccionado();
                    treeView1.Refresh();

                    // Se actualizan los paneles asociados al nodo actual
                    actualizarListado();

                    // Por las dudas avisa que acaba de mostrar los paneles
                    _controladorListado.alMostrar();
                } catch (Exception ex) {
                    Sistema.Controlador.mostrar("TREE-NOK", ENivelMensaje.ERROR, ex.ToString(), true);
                }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Este método obtiene un nuevo controlador del listado en base
        /// al texto que se pasa como argumento (que debería obtenerse 
        /// del texto asociado al nodo seleccionado.
        /// </summary>
        /// <param name="nodo">
        /// El nodo seleccionado.
        /// </param>
        private void actualizarControladorList(TreeNode nodo)
        {
            // Si ya fue creado lo reutiliza
            foreach (KeyValuePair<TreeNode, IControladorListTree> ctrl in _controladores)
                if (ctrl.Key.Equals(nodo)) {
                    if (ctrl.Value != null)
                        _controladorListado = ctrl.Value;
                    return;
                }

            // Si no fue creado lo crea ahora
            string[] textosNodo = nodo.Tag.ToString().Split(':');
            _controladorListado = (IControladorListTree)
                                  (CUCaller.CallCU(textosNodo[0],
                                      this,
                                      new object[] {
                                          _controladorTree.getModoVista(nodo),
                                          (textosNodo.Length > 1)
                                              ? textosNodo[1]
                                              : ""
                                      }));

            // Finalmente guarda el creado en la lista
            _controladores.Add(nodo, _controladorListado);
        }