Choose final transiciones
This commit is contained in:
parent
30a5db3352
commit
72d95456ae
@ -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());
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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");
|
||||
}
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user