Choose final transiciones

This commit is contained in:
Chris Cromer 2017-07-04 16:32:21 -04:00
parent 30a5db3352
commit 72d95456ae
5 changed files with 45 additions and 11 deletions

View File

@ -51,7 +51,7 @@ class Automata {
System.exit(1);
}
}
estados_existentes = new ArrayList<Integer>();
estados_existentes = new ArrayList<>();
for(int i=0 ; i < getEstados().size() ; i++){
if(getEstados().get(i) != null) estados_existentes.add(getEstados().get(i).getQ());
}

View File

@ -11,11 +11,13 @@ import java.util.ArrayList;
public class EstadosFinales {
private ArrayList<Integer> estadosExistents;
private ArrayList<Integer> estadosElegidos;
public EstadosFinales(ArrayList<Integer> estadosExistents) {
this.estadosExistents = estadosExistents;
private Maquina maquina;
public EstadosFinales(Maquina maquina) {
this.maquina = maquina;
this.estadosExistents = maquina.getMaquina().getEstados_existentes();
}
public ArrayList<Integer> getEstadosExistents() {
@ -33,4 +35,12 @@ public class EstadosFinales {
public void setEstadosElegidos(ArrayList<Integer> estadosElegidos) {
this.estadosElegidos = estadosElegidos;
}
public Maquina getMaquina() {
return maquina;
}
public void setMaquina(Maquina maquina) {
this.maquina = maquina;
}
}

View File

@ -14,6 +14,8 @@ import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import java.util.ArrayList;
/**
* Controlar las acciones cuando el usuario elige los estados finales
*/
@ -21,10 +23,26 @@ public class EstadosFinalesController {
@FXML
private VBox contenido;
private EstadosFinales estadosFinales;
@FXML
public void elegir() {
Stage stage = (Stage) contenido.getScene().getWindow();
stage.close();
ArrayList<Integer> elegidos = new ArrayList<>();
for (int i = 0; i < estadosFinales.getEstadosExistents().size(); i++) {
CheckBox checkBox = (CheckBox) contenido.getScene().lookup("#q" + estadosFinales.getEstadosExistents().get(i));
if (checkBox.isSelected()) {
elegidos.add(i);
}
}
if (elegidos.size() > 0) {
estadosFinales.setEstadosElegidos(elegidos);
Stage stage = (Stage) contenido.getScene().getWindow();
stage.close();
}
else {
MT.mostrarMensaje("Elegir", "Usted tiene que elegir uno o mas estados finales!");
}
}
/**
@ -32,7 +50,7 @@ public class EstadosFinalesController {
*/
public void handleWindowShownEvent() {
Stage stage = (Stage) contenido.getScene().getWindow();
EstadosFinales estadosFinales = (EstadosFinales) stage.getScene().getUserData();
estadosFinales = (EstadosFinales) stage.getScene().getUserData();
for (int i = 0; i < estadosFinales.getEstadosExistents().size(); i++) {
HBox hBox = new HBox();
@ -42,6 +60,7 @@ public class EstadosFinalesController {
hBox.prefWidthProperty().bind(contenido.widthProperty());
hBox.prefHeightProperty().bind(contenido.heightProperty());
CheckBox checkBox = new CheckBox("q" + estadosFinales.getEstadosExistents().get(i));
checkBox.setId("q" + estadosFinales.getEstadosExistents().get(i));
hBox.getChildren().add(checkBox);
contenido.getChildren().add(hBox);
}

View File

@ -35,9 +35,10 @@ public class LoteController extends VBox {
@FXML
protected void runLote() throws Exception {
Scene scene = vboxLote.getScene();
Maquina maquina = (Maquina) scene.getUserData();
EstadosFinales estadosFinales = (EstadosFinales) scene.getUserData();
Maquina maquina = estadosFinales.getMaquina();
for (TablaData fila : tablaData) {
boolean exito = maquina.comprobarCadena(new StringBuilder(fila.getPrimer()), new int[] {5});
boolean exito = maquina.comprobarCadena(new StringBuilder(fila.getPrimer()), estadosFinales.getEstadosElegidos().stream().mapToInt(i -> i).toArray());
if (exito) {
fila.setSegundo("Aceptada");
}

View File

@ -36,7 +36,10 @@ import java.util.regex.Pattern;
* Controlar las acciones cuando una opción es elegido en el menu.
*/
public class MenuController {
protected EstadosFinales estadosFinales;
private Maquina maquina = null;
private TableView<TablaData> tableView;
@FXML
@ -109,7 +112,8 @@ public class MenuController {
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(getClass().getResource("estadosFinales.fxml"));
Scene nuevaScene = new Scene(fxmlLoader.load(), 250, 250);
nuevaScene.setUserData(new EstadosFinales(maquina.getMaquina().getEstados_existentes()));
estadosFinales = new EstadosFinales(maquina);
nuevaScene.setUserData(estadosFinales);
nuevaScene.getStylesheets().add("/cl/cromer/mt/mt.css");
Stage stage = new Stage();
stage.initModality(Modality.WINDOW_MODAL);
@ -158,7 +162,7 @@ public class MenuController {
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(getClass().getResource("lote.fxml"));
Scene scene = new Scene(fxmlLoader.load(), 640, 480);
scene.setUserData(maquina);
scene.setUserData(estadosFinales);
scene.getStylesheets().add("/cl/cromer/mt/mt.css");
Stage stage = new Stage();
stage.initModality(Modality.WINDOW_MODAL);