/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sdsimulator.runnable;
import sdsimulator.runnable.expresiones.ExpresionLogica;
import myuml.*;

/**
 *
 * @author Miguel Herreros
 */
public class FrameAltElseEjecutable extends FrameEjecutable{
    private ExpresionLogica guarda;
    
    //..........................................................................
    public FrameAltElseEjecutable(MyFrame myFrame, VectorOrdenado eventos, ContextoEjecucion contexto, AsincronosPendientes asincronos){
        super(myFrame,eventos,contexto,asincronos);
        guarda=new ExpresionLogica(myFrame.getGuard(), myFrame.getVariablesGuarda(), contexto);/*ExpresionLogica(myFrame.getGuard(), contexto);*/
    }
    
    //..........................................................................
    @Override
    public ResultadoEjecucion run(){
        return runStep();
    }
    
    //..........................................................................
    /** Tan sólo vamos a redefinir el comportamiento cuando se detecta el frame.
     * 
     */
    @Override
    public ResultadoEjecucion runStep(){
        switch (indiceEjecucion){
            case -1: return detectadoComienzo();                             
            default: return super.runStep();
        }
    }
    
    //..........................................................................
    @Override
    public ResultadoEjecucion detectadoComienzo(){
        ResultadoEjecucion retorno=new ResultadoEjecucion();
        
        retorno=new ResultadoEjecucion();
        retorno.x=getX();
        retorno.y=getY();
                     
        myFrame.setCol(sdsimulator.Main.EN_CURSO);
        indiceEjecucion++;
        
        anularTodos();
        
        if (guarda.evaluar())
            activarBloque(0); //El bloque del if
        else
            activarBloque(1); //El del else
        
        retorno.traza = bundle.getString("FRAME");
        retorno.traza+= myFrame.getName();
        retorno.traza+= bundle.getString("FRAME1");
        retorno.traza+= myFrame.getID();
        retorno.traza+= bundle.getString("FRAME2");
        retorno.traza+= bundle.getString("GUARDA");
        retorno.traza+= guarda.toString();
        retorno.traza+= bundle.getString("GUARDA1");
        
        return retorno;
    }
}
