/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package simulacion;
import interfaz.VentanaPrincipal;
import interfaz.utilidades.PizarraSimulacion;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import modelo.BusquedaAestrella;
import modelo.Localidad;
import modelo.Mapa;
import modelo.utilidades.LugarEntrega;
import modelo.utilidades.ModeloComboBox;
import modelo.utilidades.ModeloTablaPaquete;
import modelo.utilidades.PaqueteEntrega;
/**
*
* @author Felipe
*/
public class SimulacionAutomatica extends Thread {
private LugarEntrega lugarEntrega;
private Localidad localidadInicio;
private Localidad localidadDestino;
private Mapa mapaDatos;
private BusquedaAestrella busqueda;
private ModeloTablaPaquete modeloTablaPaquetesPorEntregar;
private PizarraSimulacion pizarraAnimacion;
private JTextArea textoRecorrido;
private ModeloTablaPaquete modeloTablaPaquetesEntregados;
private ModeloComboBox modeloCombo2;
private VentanaPrincipal ventanaPrincipal;
private JTabbedPane jTabbedPaneModoEjecucion;
private int tiempoPausa;
private JTextField rutaOptimaText;
public int getTiempoPausa() {
return tiempoPausa;
}
public void setTiempoPausa(int tiempoPausa) {
this.tiempoPausa = tiempoPausa;
}
public SimulacionAutomatica(JTextField rutaOptimaText,
JTabbedPane jTabbedPaneModoEjecucion,
VentanaPrincipal ventanaPrincipal,
LugarEntrega lugarEntrega,
JTextArea textoRecorrido,
ModeloTablaPaquete modeloTablaPaquetesPorEntregar,
ModeloTablaPaquete modeloTablaPaquetesEntregados,
Mapa mapaDatos,
PizarraSimulacion pizarraAnimacion,
BusquedaAestrella busqueda,
ModeloComboBox modeloCombo2) {
this.rutaOptimaText = rutaOptimaText;
this.jTabbedPaneModoEjecucion = jTabbedPaneModoEjecucion;
this.ventanaPrincipal = ventanaPrincipal;
this.lugarEntrega = lugarEntrega;
this.textoRecorrido = textoRecorrido;
this.modeloTablaPaquetesPorEntregar = modeloTablaPaquetesPorEntregar;
this.modeloTablaPaquetesEntregados = modeloTablaPaquetesEntregados;
this.mapaDatos = mapaDatos;
this.pizarraAnimacion = pizarraAnimacion;
this.busqueda = busqueda;
this.modeloCombo2 = modeloCombo2;
}
@Override
public void run() {
//Primero obtenemos las localidades de inicio y destino
try {
localidadInicio = this.mapaDatos.getLocalidades().get(lugarEntrega.getId() - 1);
int cantidadPaquetes = this.modeloTablaPaquetesPorEntregar.getPaquetes().size();
int contadorEntregas = 0;
while (contadorEntregas < cantidadPaquetes) {
PaqueteEntrega paqueteEntrega = this.modeloTablaPaquetesPorEntregar.getPaquetes().get(0);
localidadDestino = this.mapaDatos.getLocalidades().get(paqueteEntrega.getPunto() - 1);
System.out.println("Localidad Inicial: " + localidadInicio);
System.out.println("Localidad Destino: " + localidadDestino);
this.busqueda = new BusquedaAestrella(mapaDatos, textoRecorrido);
ArrayList<Integer> rutaOptima = this.busqueda.buscarRutaOptima(localidadInicio, localidadDestino);
this.pizarraAnimacion.setRutaOptima(rutaOptima);
this.pizarraAnimacion.setEstadoRutaOptima(true);
this.pizarraAnimacion.repaint();
this.modeloTablaPaquetesEntregados.addPaquetes(paqueteEntrega);
this.modeloTablaPaquetesPorEntregar.eliminarPaquete(0);
LugarEntrega lugarEntregaPasado = new LugarEntrega(paqueteEntrega.getPunto(), paqueteEntrega.getNombreBarrio());
this.modeloCombo2.addElement(lugarEntregaPasado);
contadorEntregas++;
try {
sleep(tiempoPausa * 1000);
} catch (InterruptedException ex) {
}
localidadInicio = localidadDestino;
this.rutaOptimaText.setText("");
for (Integer integer : rutaOptima) {
this.rutaOptimaText.setText(this.rutaOptimaText.getText()+"----->"+this.mapaDatos.getLocalidades().get(integer).getBarrio().getDenominacion());
}
}
this.jTabbedPaneModoEjecucion.setEnabled(true);
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(this.ventanaPrincipal, "Revise por favor la lista de paquetes", "ERROR", JOptionPane.ERROR_MESSAGE);
}
}
}