From 30a5db335285e60ab0bdacf3c9f80df36ec5c216 Mon Sep 17 00:00:00 2001 From: Chris Cromer Date: Tue, 4 Jul 2017 16:08:29 -0400 Subject: [PATCH] Start final transition choosing --- README.md | 2 +- src/cl/cromer/mt/Automata.java | 8 +++ src/cl/cromer/mt/EstadosFinales.java | 36 ++++++++++++++ .../cromer/mt/EstadosFinalesController.java | 49 +++++++++++++++++++ src/cl/cromer/mt/MenuController.java | 36 +++++++++++--- src/cl/cromer/mt/estadosFinales.fxml | 29 +++++++++++ src/cl/cromer/mt/mt.fxml | 3 +- 7 files changed, 153 insertions(+), 10 deletions(-) create mode 100644 src/cl/cromer/mt/EstadosFinales.java create mode 100644 src/cl/cromer/mt/EstadosFinalesController.java create mode 100644 src/cl/cromer/mt/estadosFinales.fxml diff --git a/README.md b/README.md index ce7096e..c401163 100644 --- a/README.md +++ b/README.md @@ -12,5 +12,5 @@ El código se encuentra en la carpeta src o en github: [fundamentos](https://git ## JavaDoc -La documentación del proyecto se puede ver en la carpeta doc o en la enlace: [JavaDoc](https://github.com/cromerc/fundamentos/doc/index.html) +La documentación del proyecto se puede ver en la carpeta doc o en la enlace: [JavaDoc](https://cromer.cl/mt/doc/index.html) Vamos a cambiar la enlace a otra lugar despues, ignora que muestra el codigo. \ No newline at end of file diff --git a/src/cl/cromer/mt/Automata.java b/src/cl/cromer/mt/Automata.java index b2cbca0..8bf100c 100644 --- a/src/cl/cromer/mt/Automata.java +++ b/src/cl/cromer/mt/Automata.java @@ -64,4 +64,12 @@ class Automata { private void setEstados(ArrayList estados) { this.estados = estados; } + + public ArrayList getEstados_existentes() { + return estados_existentes; + } + + public void setEstados_existentes(ArrayList estados_existentes) { + this.estados_existentes = estados_existentes; + } } diff --git a/src/cl/cromer/mt/EstadosFinales.java b/src/cl/cromer/mt/EstadosFinales.java new file mode 100644 index 0000000..fb7e96f --- /dev/null +++ b/src/cl/cromer/mt/EstadosFinales.java @@ -0,0 +1,36 @@ +/* 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 java.util.ArrayList; + +public class EstadosFinales { + private ArrayList estadosExistents; + + private ArrayList estadosElegidos; + + public EstadosFinales(ArrayList estadosExistents) { + this.estadosExistents = estadosExistents; + } + + public ArrayList getEstadosExistents() { + return estadosExistents; + } + + public void setEstadosExistents(ArrayList estadosExistents) { + this.estadosExistents = estadosExistents; + } + + public ArrayList getEstadosElegidos() { + return estadosElegidos; + } + + public void setEstadosElegidos(ArrayList estadosElegidos) { + this.estadosElegidos = estadosElegidos; + } +} diff --git a/src/cl/cromer/mt/EstadosFinalesController.java b/src/cl/cromer/mt/EstadosFinalesController.java new file mode 100644 index 0000000..31c54e8 --- /dev/null +++ b/src/cl/cromer/mt/EstadosFinalesController.java @@ -0,0 +1,49 @@ +/* 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.fxml.FXML; +import javafx.geometry.Pos; +import javafx.scene.control.CheckBox; +import javafx.scene.layout.HBox; +import javafx.scene.layout.VBox; +import javafx.stage.Stage; + +/** + * Controlar las acciones cuando el usuario elige los estados finales + */ +public class EstadosFinalesController { + @FXML + private VBox contenido; + + @FXML + public void elegir() { + Stage stage = (Stage) contenido.getScene().getWindow(); + stage.close(); + } + + /** + * Este metodo es para el evento de windowshown. + */ + public void handleWindowShownEvent() { + Stage stage = (Stage) contenido.getScene().getWindow(); + EstadosFinales estadosFinales = (EstadosFinales) stage.getScene().getUserData(); + + for (int i = 0; i < estadosFinales.getEstadosExistents().size(); i++) { + HBox hBox = new HBox(); + hBox.setAlignment(Pos.CENTER); + hBox.prefWidthProperty().bind(contenido.prefWidthProperty()); + hBox.prefHeightProperty().bind(contenido.prefHeightProperty()); + hBox.prefWidthProperty().bind(contenido.widthProperty()); + hBox.prefHeightProperty().bind(contenido.heightProperty()); + CheckBox checkBox = new CheckBox("q" + estadosFinales.getEstadosExistents().get(i)); + hBox.getChildren().add(checkBox); + contenido.getChildren().add(hBox); + } + } +} diff --git a/src/cl/cromer/mt/MenuController.java b/src/cl/cromer/mt/MenuController.java index ad3deca..c2b1884 100644 --- a/src/cl/cromer/mt/MenuController.java +++ b/src/cl/cromer/mt/MenuController.java @@ -10,6 +10,7 @@ package cl.cromer.mt; import com.sun.javafx.scene.control.skin.TableHeaderRow; import javafx.collections.FXCollections; import javafx.collections.ObservableList; +import javafx.event.Event; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; @@ -24,9 +25,7 @@ import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.scene.text.Font; import javafx.scene.text.Text; -import javafx.stage.FileChooser; -import javafx.stage.Modality; -import javafx.stage.Stage; +import javafx.stage.*; import org.w3c.dom.Document; import java.io.File; @@ -57,12 +56,12 @@ public class MenuController { @FXML protected void cargarTransiciones() throws Exception { Scene scene = menuBar.getScene(); - Stage stage = (Stage) scene.getWindow(); + Stage parentStage = (Stage) scene.getWindow(); FileChooser fileChooser = new FileChooser(); fileChooser.setTitle("Abrir archivo XML"); fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Archivos XML (*.xml)", "*.xml")); //fileChooser.setSelectedExtensionFilter(new FileChooser.ExtensionFilter("Archivos XML (*.xml)", "*.xml")); - File archivo = fileChooser.showOpenDialog(stage); + File archivo = fileChooser.showOpenDialog(parentStage); LeerXML xml = new LeerXML(); Document documento = xml.leerArchivo(archivo); if (documento != null) { @@ -105,8 +104,31 @@ public class MenuController { tableView.getColumns().get(1).setText("(qj,sj,movimiento)"); contenido.getChildren().add(tableView); - }else{ - if(tableView != null) tableView.setItems(null); + + // Obtener los estados finales: + 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())); + nuevaScene.getStylesheets().add("/cl/cromer/mt/mt.css"); + Stage stage = new Stage(); + stage.initModality(Modality.WINDOW_MODAL); + stage.initOwner(parentStage); + stage.setTitle("Elegir Estados Finales"); + stage.setScene(nuevaScene); + stage.setMinHeight(250); + stage.setMinWidth(250); + stage.getIcons().add(new Image(getClass().getResourceAsStream("/cl/cromer/mt/images/icon.png"))); + final EstadosFinalesController estadosFinalesController = fxmlLoader.getController(); + stage.addEventHandler(WindowEvent.WINDOW_SHOWN, window -> estadosFinalesController.handleWindowShownEvent()); + stage.initStyle(StageStyle.UTILITY); + stage.setOnCloseRequest(Event::consume); + stage.show(); + } + else { + if (tableView != null) { + tableView.setItems(null); + } menuIndiv.setDisable(true); menuLote.setDisable(true); if(archivo != null) MT.mostrarMensaje("Error","El archivo "+ archivo.getName()+ " no es un xml valido"); diff --git a/src/cl/cromer/mt/estadosFinales.fxml b/src/cl/cromer/mt/estadosFinales.fxml new file mode 100644 index 0000000..695d972 --- /dev/null +++ b/src/cl/cromer/mt/estadosFinales.fxml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/cl/cromer/mt/mt.fxml b/src/cl/cromer/mt/mt.fxml index 03fefa4..2f7b0fc 100644 --- a/src/cl/cromer/mt/mt.fxml +++ b/src/cl/cromer/mt/mt.fxml @@ -12,7 +12,6 @@ This file may not be copied, modified, propagated, or distributed except accordi - - + \ No newline at end of file