Estructuras_de_Datos/src/cl/cromer/estructuras/Main.java

123 lines
3.5 KiB
Java

package cl.cromer.estructuras;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.ButtonBar;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Dialog;
import javafx.scene.image.Image;
import javafx.stage.Stage;
import java.io.IOException;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.logging.Level;
/**
* Estructuras de Datos
* Creado como proyecto semestral para la asignatura de estructuras de datos por la profesora Karina Rojas y el profesor Jorge Elgueta.
* Creado en 2016-1
* Se necesita java 8 con javafx instalado.
*
* @author Chris Cromer
* @version 1.0.1
*/
public class Main extends Application {
/**
* El logger.
*/
static private Logs logs = null;
/**
* Crear el stage y la scene para la aplicación grafica.
*
* @param stage Stage: El primer stage donde va todas las cosas visuales.
*/
@Override
public void start(Stage stage) {
Locale locale = new Locale("es", "ES");
ResourceBundle resourceBundle = ResourceBundle.getBundle("cl.cromer.estructuras.bundles.Idioma", locale);
try {
Parent parent = FXMLLoader.load(getClass().getResource("/cl/cromer/estructuras/fxml/main.fxml"), ResourceBundle.getBundle("cl.cromer.estructuras.bundles.Idioma", locale));
stage.setTitle(resourceBundle.getString("titulo"));
Scene scene = new Scene(parent, 1024, 768);
scene.getStylesheets().add("/cl/cromer/estructuras/css/main.css");
stage.setScene(scene);
}
catch (IOException exception) {
// Este error es fatal, hay que cerrar la aplicación.
Logs.log(Level.SEVERE, exception);
stage.close();
}
stage.setMaximized(true);
stage.setMinHeight(640);
stage.setMinWidth(768);
stage.getIcons().add(new Image(getClass().getResourceAsStream("/cl/cromer/estructuras/images/icon.png")));
stage.show();
}
@Override
public void stop() {
try {
super.stop();
}
catch (Exception exception) {
Logs.log(Level.SEVERE, exception);
}
if (logs != null) {
logs.close();
}
}
/**
* Inicilizar el logeo y lanzar la interfaz grafica.
*
* @param args String[]: Argumentos desde la consola.
*/
public static void main(String args[]) {
if (Logs.DEBUG) {
logs = new Logs();
}
launch(args);
}
/**
* Cambiar el icono de una ventana.
*
* @param dialog Dialog: El Dialog a cambiar.
* @param clase Class: La clase usado para abrir el Stream.
*/
static public void setIcon(Dialog dialog, Class clase) {
try {
Stage stage = (Stage) dialog.getDialogPane().getScene().getWindow();
stage.getIcons().add(new Image(clase.getResourceAsStream("/cl/cromer/estructuras/images/icon.png")));
}
catch (Exception exception) {
// El icono no está, no es tan critico.
Logs.log(Level.WARNING, exception);
}
}
/**
* Mostrar una ventana con mensaje en la pantalla.
*
* @param mensaje String: El mensaje a mostrar.
* @param resourceBundle ResourceBundle: Contiene el idioma actual.
*/
static public void mostrarError(String mensaje, ResourceBundle resourceBundle) {
ButtonType botonCerrar = new ButtonType(resourceBundle.getString("cerrar"), ButtonBar.ButtonData.OK_DONE);
Dialog<String> dialog = new Dialog<>();
dialog.setTitle(resourceBundle.getString("error"));
dialog.setContentText(mensaje);
dialog.getDialogPane().getButtonTypes().add(botonCerrar);
dialog.getDialogPane().getScene().getWindow().sizeToScene();
dialog.getDialogPane().setPrefWidth(mensaje.length() * 8);
Main.setIcon(dialog, Main.class);
dialog.show();
}
}