/// <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); }
/// <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>(); }