import javabook.*;
public class Raiz2{
    private MainWindow vta;
    private IRaiz raiz=null;
    public Raiz2(int modo, int procesamiento) {
        this.modo = modo;
        if (modo==GUI) vta = new MainWindow();
        if (procesamiento == IRaiz.POSITIVO)
            raiz = new RaizPositiva();
        else if (procesamiento == IRaiz.IMAGINARIO) 
            raiz = new RaizImaginaria();
    }
    public double raiz(double x) throws Exception{
        return raiz.raiz(x);
    }//raiz
    public final static int TERMINAL = 1;
    public final static int GUI = 2;
    private int modo=0;
    public int getModo() { return modo;}
    public double capturar(){
        double valor =0.0;
        if (modo == TERMINAL) {
            valor= SimpleInput.getDouble();
        } else {
            InputBox in = new InputBox(vta);
            vta.show();
            valor=in.getDouble();
        }
        return valor;
    }
    public void desplegar(String msg) {
        if (modo==TERMINAL)
            System.out.println(msg);
        else if (modo==GUI) {
            OutputBox out = new OutputBox(vta);
            out.printLine(msg);
            out.show();
        }
        
    }
    public void error(String msg) {
        if ( modo==TERMINAL) {
            System.err.println(msg);
        } else if (modo==GUI) {
            MessageBox out = new MessageBox(vta);
            out.show(msg);
        }
    }
    public void operacion(){
        double x;
        try{
            x = this.capturar();
            double y= this.raiz(x);
            String msg ="";
            if (raiz.getProcesamiento() == IRaiz.IMAGINARIO && x<0) 
                msg = "j" + y;
            else 
                msg = msg + y;
            this.desplegar("El resultado es: "+ msg);
        }//try
        catch (Exception e){
            this.error("Numero negativo");
        }//catch
    }//operacion
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Raiz2 rz = new Raiz2(Raiz.GUI,IRaiz.IMAGINARIO);
        rz.operacion();
        
    }//main
    
}
