Start final transition choosing
This commit is contained in:
parent
1a1a93fa1c
commit
30a5db3352
@ -12,5 +12,5 @@ El código se encuentra en la carpeta src o en github: [fundamentos](https://git
|
|||||||
|
|
||||||
## JavaDoc
|
## 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.
|
Vamos a cambiar la enlace a otra lugar despues, ignora que muestra el codigo.
|
@ -64,4 +64,12 @@ class Automata {
|
|||||||
private void setEstados(ArrayList<Estado> estados) {
|
private void setEstados(ArrayList<Estado> estados) {
|
||||||
this.estados = estados;
|
this.estados = estados;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ArrayList<Integer> getEstados_existentes() {
|
||||||
|
return estados_existentes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEstados_existentes(ArrayList<Integer> estados_existentes) {
|
||||||
|
this.estados_existentes = estados_existentes;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
36
src/cl/cromer/mt/EstadosFinales.java
Normal file
36
src/cl/cromer/mt/EstadosFinales.java
Normal file
@ -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<Integer> estadosExistents;
|
||||||
|
|
||||||
|
private ArrayList<Integer> estadosElegidos;
|
||||||
|
|
||||||
|
public EstadosFinales(ArrayList<Integer> estadosExistents) {
|
||||||
|
this.estadosExistents = estadosExistents;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<Integer> getEstadosExistents() {
|
||||||
|
return estadosExistents;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEstadosExistents(ArrayList<Integer> estadosExistents) {
|
||||||
|
this.estadosExistents = estadosExistents;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<Integer> getEstadosElegidos() {
|
||||||
|
return estadosElegidos;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEstadosElegidos(ArrayList<Integer> estadosElegidos) {
|
||||||
|
this.estadosElegidos = estadosElegidos;
|
||||||
|
}
|
||||||
|
}
|
49
src/cl/cromer/mt/EstadosFinalesController.java
Normal file
49
src/cl/cromer/mt/EstadosFinalesController.java
Normal file
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -10,6 +10,7 @@ package cl.cromer.mt;
|
|||||||
import com.sun.javafx.scene.control.skin.TableHeaderRow;
|
import com.sun.javafx.scene.control.skin.TableHeaderRow;
|
||||||
import javafx.collections.FXCollections;
|
import javafx.collections.FXCollections;
|
||||||
import javafx.collections.ObservableList;
|
import javafx.collections.ObservableList;
|
||||||
|
import javafx.event.Event;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.fxml.FXMLLoader;
|
import javafx.fxml.FXMLLoader;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
@ -24,9 +25,7 @@ import javafx.scene.layout.VBox;
|
|||||||
import javafx.scene.paint.Color;
|
import javafx.scene.paint.Color;
|
||||||
import javafx.scene.text.Font;
|
import javafx.scene.text.Font;
|
||||||
import javafx.scene.text.Text;
|
import javafx.scene.text.Text;
|
||||||
import javafx.stage.FileChooser;
|
import javafx.stage.*;
|
||||||
import javafx.stage.Modality;
|
|
||||||
import javafx.stage.Stage;
|
|
||||||
import org.w3c.dom.Document;
|
import org.w3c.dom.Document;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -57,12 +56,12 @@ public class MenuController {
|
|||||||
@FXML
|
@FXML
|
||||||
protected void cargarTransiciones() throws Exception {
|
protected void cargarTransiciones() throws Exception {
|
||||||
Scene scene = menuBar.getScene();
|
Scene scene = menuBar.getScene();
|
||||||
Stage stage = (Stage) scene.getWindow();
|
Stage parentStage = (Stage) scene.getWindow();
|
||||||
FileChooser fileChooser = new FileChooser();
|
FileChooser fileChooser = new FileChooser();
|
||||||
fileChooser.setTitle("Abrir archivo XML");
|
fileChooser.setTitle("Abrir archivo XML");
|
||||||
fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Archivos XML (*.xml)", "*.xml"));
|
fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Archivos XML (*.xml)", "*.xml"));
|
||||||
//fileChooser.setSelectedExtensionFilter(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();
|
LeerXML xml = new LeerXML();
|
||||||
Document documento = xml.leerArchivo(archivo);
|
Document documento = xml.leerArchivo(archivo);
|
||||||
if (documento != null) {
|
if (documento != null) {
|
||||||
@ -105,8 +104,31 @@ public class MenuController {
|
|||||||
tableView.getColumns().get(1).setText("(qj,sj,movimiento)");
|
tableView.getColumns().get(1).setText("(qj,sj,movimiento)");
|
||||||
|
|
||||||
contenido.getChildren().add(tableView);
|
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);
|
menuIndiv.setDisable(true);
|
||||||
menuLote.setDisable(true);
|
menuLote.setDisable(true);
|
||||||
if(archivo != null) MT.mostrarMensaje("Error","El archivo "+ archivo.getName()+ " no es un xml valido");
|
if(archivo != null) MT.mostrarMensaje("Error","El archivo "+ archivo.getName()+ " no es un xml valido");
|
||||||
|
29
src/cl/cromer/mt/estadosFinales.fxml
Normal file
29
src/cl/cromer/mt/estadosFinales.fxml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<?import javafx.geometry.Insets?>
|
||||||
|
<?import javafx.scene.control.Button?>
|
||||||
|
<?import javafx.scene.control.ScrollPane?>
|
||||||
|
<?import javafx.scene.layout.*?>
|
||||||
|
<VBox xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.131" fx:controller="cl.cromer.mt.EstadosFinalesController">
|
||||||
|
<ScrollPane fitToHeight="true" fitToWidth="true" VBox.vgrow="ALWAYS">
|
||||||
|
<padding>
|
||||||
|
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
|
||||||
|
</padding>
|
||||||
|
<VBox alignment="TOP_CENTER" VBox.vgrow="ALWAYS">
|
||||||
|
<VBox fx:id="contenido" alignment="TOP_CENTER" VBox.vgrow="ALWAYS"/>
|
||||||
|
<Button onAction="#elegir" text="Elegir">
|
||||||
|
<VBox.margin>
|
||||||
|
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
|
||||||
|
</VBox.margin>
|
||||||
|
</Button>
|
||||||
|
</VBox>
|
||||||
|
</ScrollPane>
|
||||||
|
</VBox>
|
@ -12,7 +12,6 @@ This file may not be copied, modified, propagated, or distributed except accordi
|
|||||||
<VBox xmlns:fx="http://javafx.com/fxml/1" prefHeight="480.0" prefWidth="640.0" xmlns="http://javafx.com/javafx/8.0.92">
|
<VBox xmlns:fx="http://javafx.com/fxml/1" prefHeight="480.0" prefWidth="640.0" xmlns="http://javafx.com/javafx/8.0.92">
|
||||||
<fx:include source="menu.fxml"/>
|
<fx:include source="menu.fxml"/>
|
||||||
<ScrollPane fitToHeight="true" fitToWidth="true" VBox.vgrow="ALWAYS">
|
<ScrollPane fitToHeight="true" fitToWidth="true" VBox.vgrow="ALWAYS">
|
||||||
<VBox alignment="CENTER" VBox.vgrow="ALWAYS" fx:id="contenido">
|
<VBox alignment="CENTER" VBox.vgrow="ALWAYS" fx:id="contenido"/>
|
||||||
</VBox>
|
|
||||||
</ScrollPane>
|
</ScrollPane>
|
||||||
</VBox>
|
</VBox>
|
Loading…
Reference in New Issue
Block a user