package org.prgtest.gui;

import org.gui.main.*;
import java.awt.event.*;
import org.ga.imp.GARunner;
import org.prgtest.settings.*;
import org.prganalysis.walker.NonRuntimeFunc;
import java.awt.Canvas;
import org.prganalysis.graph.*;

import org.gui.reporting.*;
import com.infragistics.ultrachart.data.*;
import javax.swing.table.DefaultTableModel;
import java.io.*; 
public class BtnAction extends BtnInterface {
    static int xxx = 0;
    TGraph[] tgraphArray = null;
    org.prgtest.performer.Graph2Symbolic gS = null;
    
    public BtnAction(String imageLocation, int index, boolean initStatus) {
        super(index);
        setEnabled(initStatus);
        this.setImageIcon(imageLocation);
        this.addActionListener(new BtnActionAdapter(this));
    }

    public void performAction(ActionEvent e) {
    	
    	TVertex tvertex = null;
        KernelTG kernel = KernelTG.getInstance();
        switch (index) {
        case 1: {
            NonRuntimeFunc nonRuntime = new NonRuntimeFunc();
            nonRuntime.analyzeProgram(kernel);
            Canvas canvasGraph = kernel.getProgramNonRuntimeResults().getGraph().
                                 getJPanel();
            kernel.setToPanel(kernel.PANEL_CENTER,
                              canvasGraph);
            //   kernel.getProgramNonRuntimeResults().exctractPaths();
            setBtnEnableStatus(2, true);
            setBtnEnableStatus(3, false);
           // setBtnEnableStatus(3, false);
            setBtnEnableStatus(1, false);
           // setBtnEnableStatus(5, true);
           // setBtnEnableStatus(6, true);
            break;
        }
        case 2:
        	//codikas antonis
        {
        	//final BufferedReader stdin = new BufferedReader( new InputStreamReader( System.in ) );
        	gS = new org.prgtest.performer.Graph2Symbolic();
        	
        	gS.run();
        	tvertex = gS.pathConstraint();
        	System.out.println(tvertex.getNodeElement().toString());
        	setBtnEnableStatus(2, false);
        	setBtnEnableStatus(3, true);
        	break;
        }
        	
        case 3:
        {
        	//????????????????????
            //gS.pathConstraint();
            
        	setBtnEnableStatus(3, false);
            break;
        }
        case 4: {
        	/*
            NonRuntimeFunc nonRuntime = new NonRuntimeFunc();
            //nonRuntime.analyzeProgram(kernel);
            //  TGraph[]
            if (tgraphArray == null) {
                tgraphArray = kernel.getProgramNonRuntimeResults().
                              exctractPaths(kernel.
                                            getProgramNonRuntimeResults().
                                            getGraph().edgeAt(11));
            }

            // Canvas canvasGraph = kernel.getProgramNonRuntimeResults().getGraph().
            //      getJPanel();
            System.out.println("tgraphArray.size=" + tgraphArray.length);
            kernel.setToPanel(kernel.PANEL_CENTER,
                              tgraphArray[xxx].getJPanel());
            xxx++;
            //
            setBtnEnableStatus(2, true);
            setBtnEnableStatus(3, false);
            setBtnEnableStatus(1, false);
            
            */
            break;
        }
        case 5: {
            //kernel.runRandomGen();
            break;
        }
        case 6: {
            //kernel.runGradientDescent();
            break;

        }

        }

    }
}
