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

package ambienteGrafico.ferramentas;

import algoritmo.Agente;
import algoritmo.ConjuntoDeAgentes;
import algoritmo.EspacoDeBusca;
import ambienteGrafico.componentes.Canvas;
import ambienteGrafico.componentes.PainelFerramentaAgentes;
import auxiliar.Conversor;
import java.awt.Cursor;
import java.awt.event.MouseEvent;
import javax.swing.SwingUtilities;

/**
 *
 * @author Marília
 */
public class FerramentaSelecionarAgente  extends Ferramenta{

    private Cursor cursor;
    private PainelFerramentaAgentes painelFerramenta;
    private Canvas painelCanvas;
    
    public FerramentaSelecionarAgente(PainelFerramentaAgentes painel) {
        this.cursor = new Cursor(Cursor.HAND_CURSOR);
        this.painelFerramenta = painel;
    }

    @Override
    public Cursor getCursor() {
        return this.cursor;
    }

    @Override
    public void mousePressed(MouseEvent e) {
        int posicaoXAgente = e.getX();
        int posicaoYAgente = e.getY();
        if (SwingUtilities.isLeftMouseButton(e)) {
          
            EspacoDeBusca espacoDeBusca = EspacoDeBusca.getInstance();
            ConjuntoDeAgentes agentes = espacoDeBusca.getAgentes();

            painelCanvas = (Canvas) e.getSource();
           
            int posicaoYAgenteInvertida = Math.abs(posicaoYAgente - painelCanvas.getHeight());
            double[] posicao = Conversor.converterEscalaCanvasParaEscalaMetro(posicaoXAgente,
                                                              posicaoYAgenteInvertida, 
                                                              painelCanvas.getWidth(), 
                                                              painelCanvas.getHeight(),
                                                              espacoDeBusca.getLimiteMaxCoordX(),
                                                              espacoDeBusca.getLimiteMaxCoordY()); 
            Agente agente = agentes.buscarAgente(posicao);
            if(agente!=null){
                painelFerramenta.getTf_IdAgente().setText(""+agente.getIdAgente());
                painelFerramenta.getTf_Posicao().setText("("+(int)Math.round(agente.getPosicao()[0])+","
                                                            +(int)Math.round(agente.getPosicao()[1])+")");
                painelFerramenta.getTf_TamanhoAgente().setText("("+(int)Math.round(agente.getComprimentoHorizontal())+","
                                                            +(int)Math.round(agente.getComprimentoVertical())+")");
                painelFerramenta.getTf_VelocPolar().setText("("+(int)Math.round(agente.getVelocidadePolar()[0])+","
                                                            +(int)Math.round(agente.getVelocidadePolar()[1])+"º)");
            }
         }
        else{
            painelCanvas.mudarFerramenta(new FerramentaNula(null));
        }
    }

    @Override
    public void mouseDragged(MouseEvent e) {
        
    }

    @Override
    public void mouseReleased(MouseEvent e) {
       
    }
}
