Beispiel #1
0
        /// <summary>
        /// Realiza la función redo y devuelve un array con las posiciones que ocupaban los elementos en el caso de haberse realizado una operación de eliminado
        /// </summary>
        /// <returns>Conjunto de índices que ocupaban los elementos después de la operación</returns>
        public int[] Adelante(out TOperacion operacion)
        {
            int[] indices = null;
            operacion = TOperacion.Crear;
            if (rehacer.Count > 0)
            {
                Operacion op = rehacer.Pop();
                operacion = op.TOperacion;
                switch (op.TOperacion)
                {
                case TOperacion.AsignarAlumno:
                    foreach (ProyectoIndice proyecto in op.ListaProyectosDespues)
                    {
                        MListaProyectos.getMListaProyectos.getMProyectos.getProyectos[proyecto.Indice].AsignarAlumno(proyecto.Proyecto.Alumno);
                    }
                    break;

                case TOperacion.Crear:
                    foreach (ProyectoIndice proyecto in op.ListaProyectosDespues)
                    {
                        MListaProyectos.getMListaProyectos.getMProyectos.AñadirEn(proyecto.Proyecto, proyecto.Indice);
                    }
                    break;

                case TOperacion.EliminarAlumno:
                    foreach (ProyectoIndice proyecto in op.ListaProyectosAntes)
                    {
                        MListaProyectos.getMListaProyectos.getMProyectos.getProyectos[proyecto.Indice].EliminarAlumno();
                    }
                    break;

                case TOperacion.EliminarTFG:
                    for (int i = op.ListaProyectosAntes.Count - 1; i > -1; i--)
                    {
                        MListaProyectos.getMListaProyectos.getMProyectos.getProyectos[op.ListaProyectosAntes[i].Indice].Borrar();
                    }
                    break;

                case TOperacion.Modificar:
                    MListaProyectos.getMListaProyectos.getMProyectos.getProyectos[op.ListaProyectosAntes[0].Indice] = op.ListaProyectosDespues[0].Proyecto;
                    break;

                case TOperacion.FinalizarTFG:
                    MListaProyectos.getMListaProyectos.getMProyectos.getProyectos[op.ListaProyectosAntes[0].Indice].getMTFG.Finalizar(op.ListaProyectosDespues[0].Proyecto.getMTFG.getMFinalizado);
                    break;
                }
                indices = new int[op.ListaProyectosDespues.Count];
                for (int i = 0; i < indices.Length; i++)
                {
                    indices[i] = op.ListaProyectosDespues[i].Indice;
                }
                deshacer.Push(op);
            }
            return(indices);
        }
Beispiel #2
0
 /// <summary>
 /// Crea una nueva operación
 /// </summary>
 /// <param name="tipoOperacion">Tipo de operación</param>
 /// <param name="proyectosModificados">Proyectos antes de modificar</param>
 public Operacion(TOperacion tipoOperacion, params ProyectoIndice[] proyectosModificados)
 {
     this.tipoOperacion               = tipoOperacion;
     listaProyectosAntesdeOperacion   = new List <ProyectoIndice>(proyectosModificados);
     listaProyectosDespuesdeOperacion = new List <ProyectoIndice>();
 }