mt/src/cl/cromer/mt/LoteController.java

90 lines
2.3 KiB
Java

/* Copyright (c) 2017 Christopher Cromer
* Copyright (c) 2017 Carlos Faúndez
*
* This file is part of mt. It is subject to the license terms in the LICENSE file found in the top-level directory of this distribution.
* This file may not be copied, modified, propagated, or distributed except according to the terms contained in the LICENSE file.
*/
package cl.cromer.mt;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.Scene;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
/**
* Controlar las acciones de reconocimiento por lote
*/
public class LoteController extends VBox {
/**
* La tabla de resultados por lote
*/
private final ObservableList<TablaData> tablaData = FXCollections.observableArrayList();
/**
* El contenido de la ventana
*/
@FXML
private VBox contenido;
/**
* La cadena que el usuario ingresa
*/
@FXML
private TextField cadena;
/**
* Boton de run MT
*/
@FXML
protected void runLote() {
Scene scene = contenido.getScene();
EstadosFinales estadosFinales = (EstadosFinales) scene.getUserData();
Maquina maquina = estadosFinales.getMaquina();
for (TablaData fila : tablaData) {
boolean exito = maquina.comprobarCadena(new StringBuilder(fila.getPrimera()), estadosFinales.getEstadosElegidos().stream().mapToInt(i -> i).toArray());
if (exito) {
fila.setSegunda("Aceptada");
}
else {
fila.setSegunda("Rechazada");
}
maquina.reset();
}
}
/**
* Boton de agregar cadena
*/
@FXML
protected void agregarCadena() {
StringBuilder temp = new StringBuilder(cadena.getText());
if (temp.charAt(0) != '#') {
temp.insert(0, "#");
}
if (temp.charAt(temp.length() - 1) != '#') {
temp.insert(temp.length(), "#");
}
tablaData.add(new TablaData(temp.toString(), ""));
Scene scene = contenido.getScene();
@SuppressWarnings("unchecked")
TableView<TablaData> tableView = (TableView<TablaData>) scene.lookup("#tableView");
tableView.setEditable(true);
tableView.setItems(tablaData);
cadena.setText("");
}
/**
* Boton de cerrar
*/
@FXML
protected void cerrar() {
Scene scene = contenido.getScene();
Stage stage = (Stage) scene.getWindow();
stage.close();
}
}