import javax.swing.JOptionPane;
public class CuentaGUI {
        private AdministradorCuenta admin;
        public void setAdmin(AdministradorCuenta elAdministrador) {
		admin=elAdministrador;
        }
        public AdministradorCuenta getAdmin() { return admin;}	
	
	public AdministradorCuenta iniciar(int a) {
		admin = new AdministradorCuenta(a);
		for(int y=0;y<a;y++){
			admin.setCuenta(new CuentaBancariaImpl(), y);
		}
		return admin;
	}
	public void mensaje(String texto) {
		JOptionPane.showMessageDialog(null, texto);
	}
	public int preguntarIndice() {
		int indice=-1;
		boolean capturado=false,cancelado=false;
		do {
			String sNumero=
			 JOptionPane.showInputDialog(null, "Dame numero de cuentas a crear");
			if (sNumero != null)
				try {
					indice = Integer.parseInt(sNumero);
					capturado=true;
				} catch (NumberFormatException excepcion) {
					mensaje("El numero capturado no esta en formato correcto");
				}
			else cancelado =true;
		} while (!capturado && !cancelado);
		return indice;
	}
	public int preguntarcuenta() {
		int indice=-1;
		boolean capturado=false,cancelado=false;
		do {
			String sNumero=
			 JOptionPane.showInputDialog(null, "Dame numero de cuenta a utilizar");
			if (sNumero != null)
				try {
					indice = Integer.parseInt(sNumero);
					capturado=true;
				} catch (NumberFormatException excepcion) {
					mensaje("El numero capturado no esta en formato correcto");
				}
			else cancelado =true;
		} while (!capturado && !cancelado);
		return indice;
	}
	public double preguntarcantidad() {
		double indice=-1;
		boolean capturado=false,cancelado=false;
		do {
			String sNumero=
			 JOptionPane.showInputDialog(null, "Dame cantidad");
			if (sNumero != null)
				try {
					indice = Double.parseDouble(sNumero);
					capturado=true;
				} catch (NumberFormatException excepcion) {
					mensaje("El numero capturado no esta en formato correcto");
				}
			else cancelado =true;
		} while (!capturado && !cancelado);
		return indice;
	}
	public int preguntarop() {
		int indice=-1;
		boolean capturado=false,cancelado=false;
		do {
			String sNumero=
			 JOptionPane.showInputDialog(null, "Que Operacion deseas realizar?\n1.Abonar\n2.retirar");
			if (sNumero != null)
				try {
					indice = Integer.parseInt(sNumero);
					if((indice==1)||(indice==2)){
						capturado=true;
					}
					else {
						mensaje("No has dado una opcion correcta");
					}
				} catch (NumberFormatException excepcion) {
					mensaje("El numero capturado no esta en formato correcto");
				}
			else cancelado =true;
		} while (!capturado && !cancelado);
		return indice;
	}
	public CuentaBancaria buscar(int indice) {return admin.getCuenta(indice);}
	public void imprimir(CuentaBancaria laCuenta) {
		String mensaje = laCuenta.toString();;
		mensaje(mensaje);
	}
	public boolean confirmar (String mensaje) {
		int opcion =JOptionPane.showConfirmDialog(null,mensaje);
		return opcion==JOptionPane.YES_OPTION;
	}
	public boolean continuar() {
		return confirmar("¿Continuar trabajando con el sistema?");
	}
	public void sesion() {
		do {
			int indice = preguntarcuenta();
			CuentaBancaria laCuenta = buscar(indice);
			if (laCuenta!=null) {
				imprimir (laCuenta);
				int h;
				h=preguntarop();
				if (h!=-1){
					if(h==1){
						double n=preguntarcantidad();
						laCuenta.abonar(n);
					}
					else {
						double n=preguntarcantidad();
						laCuenta.retirar(n);
					}
				}
			} else mensaje("Cuenta no encontrada");
		} while (continuar());
	}

}