package capitulo06.bloque01.ejercicio02;

import java.util.ArrayList;
import java.util.List;

import static capitulo04.utils.Utils.*;

public class Main {
    public static void main(String[] args) {

        List<String> archivo = new ArrayList<String>();
        List<String> portapapeles = new ArrayList<String>();

        int opcion = 0;
        do {
            System.out.println("\nSeleccione un opción: \n" +
                    "0 - Abandonar el programa\n" +
                    "1 - Agregar una línea al texto\n" +
                    "2 - Insertar una línea en cualquier posición del texto\n" +
                    "3 - Editar una línea (reescribir su contenido)\n" +
                    "4 - Borrar una lína\n" +
                    "5 - Cortar un conjunto de líneas\n" +
                    "6 - Pegar un conjunto de líneas cortadas en una determinada posición\n" +
                    "7 - Imprimir el fichero");
            opcion = solicitarIntScannerInline("Elija opción: ");

            switch (opcion) {
                case 1:
                    String nuevaLinea = solicitarStringScannerInline("> ");
                    archivo.add(nuevaLinea);
                    break;
                case 2:
                    String lineaEnMitad = solicitarStringScannerInline("> ");
                    int posicion = solicitarIntScannerInline("Insertar en línea: ");
                    archivo.add(posicion, lineaEnMitad);
                    break;
                case 3:
                    int lineaAReescribir = solicitarIntScannerInline("Elija línea para reescribir: ");
                    System.out.println(lineaAReescribir + " | " + archivo.get(lineaAReescribir));
                    String lineaReescrita = solicitarStringScannerInline("> ");

                    archivo.remove(lineaAReescribir);
                    archivo.add(lineaAReescribir,lineaReescrita);

                    break;
                case 4:
                    int lineaABorrar = solicitarIntScannerInline("Elija línea para borrar: ");
                    archivo.remove(lineaABorrar);
                    break;
                case 5:
                    int lineaInicialCortar = solicitarIntScannerInline("Elija la línea desde donde comenzar a cortar: ");
                    int lineaFinalCortar = solicitarIntScannerInline("Elija la línea desde donde terminar de cortar: ");

                    portapapeles.clear();
                    for (; lineaInicialCortar <= lineaFinalCortar; lineaInicialCortar++) portapapeles.add(archivo.get(lineaInicialCortar));

                    archivo.removeAll(portapapeles);
                    break;
                case 6:
                    int lineaDondePegar = solicitarIntScannerInline("Elija la línea donde pegar el portapapeles: ");
                    archivo.addAll(lineaDondePegar, portapapeles);
                    break;
                case 7:
                    for (int i = 0; i < archivo.size(); i++) System.out.println(i + " | " + archivo.get(i));

            }
        } while (opcion != 0);
    }
}
