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); System.exit(1);
} }
} }
estados_existentes = new ArrayList<Integer>(); estados_existentes = new ArrayList<>();
for(int i=0 ; i < getEstados().size() ; i++){ for(int i=0 ; i < getEstados().size() ; i++){
if(getEstados().get(i) != null) estados_existentes.add(getEstados().get(i).getQ()); 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 { public class EstadosFinales {
private ArrayList<Integer> estadosExistents; private ArrayList<Integer> estadosExistents;
private ArrayList<Integer> estadosElegidos; private ArrayList<Integer> estadosElegidos;
public EstadosFinales(ArrayList<Integer> estadosExistents) { private Maquina maquina;
this.estadosExistents = estadosExistents;
public EstadosFinales(Maquina maquina) {
this.maquina = maquina;
this.estadosExistents = maquina.getMaquina().getEstados_existentes();
} }
public ArrayList<Integer> getEstadosExistents() { public ArrayList<Integer> getEstadosExistents() {
@ -33,4 +35,12 @@ public class EstadosFinales {
public void setEstadosElegidos(ArrayList<Integer> estadosElegidos) { public void setEstadosElegidos(ArrayList<Integer> estadosElegidos) {
this.estadosElegidos = 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.scene.layout.VBox;
import javafx.stage.Stage; import javafx.stage.Stage;
import java.util.ArrayList;
/** /**
* Controlar las acciones cuando el usuario elige los estados finales * Controlar las acciones cuando el usuario elige los estados finales
*/ */
@ -21,10 +23,26 @@ public class EstadosFinalesController {
@FXML @FXML
private VBox contenido; private VBox contenido;
private EstadosFinales estadosFinales;
@FXML @FXML
public void elegir() { public void elegir() {
Stage stage = (Stage) contenido.getScene().getWindow(); ArrayList<Integer> elegidos = new ArrayList<>();
stage.close(); 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() { public void handleWindowShownEvent() {
Stage stage = (Stage) contenido.getScene().getWindow(); 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++) { for (int i = 0; i < estadosFinales.getEstadosExistents().size(); i++) {
HBox hBox = new HBox(); HBox hBox = new HBox();
@ -42,6 +60,7 @@ public class EstadosFinalesController {
hBox.prefWidthProperty().bind(contenido.widthProperty()); hBox.prefWidthProperty().bind(contenido.widthProperty());
hBox.prefHeightProperty().bind(contenido.heightProperty()); hBox.prefHeightProperty().bind(contenido.heightProperty());
CheckBox checkBox = new CheckBox("q" + estadosFinales.getEstadosExistents().get(i)); CheckBox checkBox = new CheckBox("q" + estadosFinales.getEstadosExistents().get(i));
checkBox.setId("q" + estadosFinales.getEstadosExistents().get(i));
hBox.getChildren().add(checkBox); hBox.getChildren().add(checkBox);
contenido.getChildren().add(hBox); contenido.getChildren().add(hBox);
} }

View File

@ -35,9 +35,10 @@ public class LoteController extends VBox {
@FXML @FXML
protected void runLote() throws Exception { protected void runLote() throws Exception {
Scene scene = vboxLote.getScene(); Scene scene = vboxLote.getScene();
Maquina maquina = (Maquina) scene.getUserData(); EstadosFinales estadosFinales = (EstadosFinales) scene.getUserData();
Maquina maquina = estadosFinales.getMaquina();
for (TablaData fila : tablaData) { 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) { if (exito) {
fila.setSegundo("Aceptada"); 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. * Controlar las acciones cuando una opción es elegido en el menu.
*/ */
public class MenuController { public class MenuController {
protected EstadosFinales estadosFinales;
private Maquina maquina = null; private Maquina maquina = null;
private TableView<TablaData> tableView; private TableView<TablaData> tableView;
@FXML @FXML
@ -109,7 +112,8 @@ public class MenuController {
FXMLLoader fxmlLoader = new FXMLLoader(); FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(getClass().getResource("estadosFinales.fxml")); fxmlLoader.setLocation(getClass().getResource("estadosFinales.fxml"));
Scene nuevaScene = new Scene(fxmlLoader.load(), 250, 250); 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"); nuevaScene.getStylesheets().add("/cl/cromer/mt/mt.css");
Stage stage = new Stage(); Stage stage = new Stage();
stage.initModality(Modality.WINDOW_MODAL); stage.initModality(Modality.WINDOW_MODAL);
@ -158,7 +162,7 @@ public class MenuController {
FXMLLoader fxmlLoader = new FXMLLoader(); FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(getClass().getResource("lote.fxml")); fxmlLoader.setLocation(getClass().getResource("lote.fxml"));
Scene scene = new Scene(fxmlLoader.load(), 640, 480); Scene scene = new Scene(fxmlLoader.load(), 640, 480);
scene.setUserData(maquina); scene.setUserData(estadosFinales);
scene.getStylesheets().add("/cl/cromer/mt/mt.css"); scene.getStylesheets().add("/cl/cromer/mt/mt.css");
Stage stage = new Stage(); Stage stage = new Stage();
stage.initModality(Modality.WINDOW_MODAL); stage.initModality(Modality.WINDOW_MODAL);