Start final transition choosing

This commit is contained in:
Chris Cromer 2017-07-04 16:08:29 -04:00
parent 1a1a93fa1c
commit 30a5db3352
7 changed files with 153 additions and 10 deletions

View File

@ -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.

View File

@ -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;
}
} }

View 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;
}
}

View 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);
}
}
}

View File

@ -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");

View 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>

View File

@ -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>