/* Copyright 2012-2017 Jose Robson Mariano Alves This file is part of bgfinancas. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ package badernageral.bgfinancas.principal; import badernageral.bgfinancas.biblioteca.sistema.Atalho; import badernageral.bgfinancas.biblioteca.sistema.Kernel; import badernageral.bgfinancas.biblioteca.banco.Conexao; import badernageral.bgfinancas.biblioteca.banco.Database; import badernageral.bgfinancas.biblioteca.sistema.Janela; import badernageral.bgfinancas.biblioteca.tipo.Status; import badernageral.bgfinancas.biblioteca.utilitario.Datas; import badernageral.bgfinancas.idioma.Linguagem; import badernageral.bgfinancas.modelo.Configuracao; import badernageral.bgfinancas.modelo.Despesa; import badernageral.bgfinancas.modelo.Usuario; import badernageral.bgfinancas.modulo.usuario.UsuarioFormularioControlador; import badernageral.bgfinancas.modulo.utilitario.ConfiguracaoFormularioControlador; import java.io.IOException; import java.time.LocalDate; import javafx.application.Application; import javafx.application.Platform; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.scene.control.TitledPane; import javafx.scene.image.Image; import javafx.scene.layout.Pane; import javafx.stage.Stage; import javafx.stage.StageStyle; public class Master extends Application { private final Conexao banco = Conexao.getInstance(); private final Linguagem idioma = Linguagem.getInstance(); private ConfiguracaoFormularioControlador confControlador = null; private UsuarioFormularioControlador userControlador = null; @Override public void start(Stage palco) { Kernel.master = this; Kernel.palco = palco; Database.verificarBanco(); idioma.carregarIdioma(); if(new Usuario().listar().isEmpty()){ iniciarPrimeiroAcesso(); }else{ if(Configuracao.getPropriedade("login").equals("1")){ iniciarLogin(); }else{ try { palco.setScene(criarCena(criarPainelPrincipal(),null)); notificarDespesasAgendadas(); } catch (Exception ex) { Janela.showException(ex); } } } carregarIcone(); palco.show(); } private void iniciarLogin() { try { Kernel.palco.setScene(criarCena(criarPainelLogin(),null)); Kernel.palco.initStyle(StageStyle.TRANSPARENT); } catch (IOException ex) { Janela.showException(ex); } } private void iniciarPrimeiroAcesso() { try { Kernel.palco.setScene(criarCena(null,criarPainelConfiguracoes())); Kernel.palco.initStyle(StageStyle.TRANSPARENT); confControlador.setPrimeiroAcesso(); } catch (IOException ex) { Janela.showException(ex); } } public void continuarPrimeiroAcesso() { try { idioma.carregarIdioma(); Database.popularBanco(); Kernel.palco.setScene(criarCena(null,criarPainelCadastroUsuario())); userControlador.setPrimeiroAcesso(); } catch (IOException ex) { Janela.showException(ex); } } public void reiniciar() { try { idioma.carregarIdioma(); Kernel.palco.hide(); Kernel.palco = new Stage(); Kernel.palco.setScene(criarCena(criarPainelPrincipal(),null)); Kernel.palco.show(); carregarIcone(); notificarDespesasAgendadas(); } catch (Exception ex) { Janela.showException(ex); } } private void notificarDespesasAgendadas(){ if(new Despesa().isDespesasAtrasadas()){ Janela.showMensagem(Status.ADVERTENCIA, idioma.getMensagem("despesas_atrasadas")); Configuracao data_notificacao = new Configuracao().setNome("data_notificacao").consultar(); data_notificacao.setValor(Datas.toSqlData(LocalDate.now())); data_notificacao.alterar(); } } private Scene criarCena(Pane painel, TitledPane tpainel) { Scene cena = (painel!=null) ? new Scene(painel) : new Scene(tpainel); cena.getStylesheets().add(getClass().getResource(Kernel.CSS_PRINCIPAL).toExternalForm()); cena.getStylesheets().add(getClass().getResource(Kernel.CSS_AJUDA).toExternalForm()); cena.getStylesheets().add(getClass().getResource(Kernel.CSS_TOOLTIP).toExternalForm()); Kernel.cena = cena; Atalho.setAtalhos(); return cena; } private Pane criarPainelLogin() throws IOException { FXMLLoader loader = new FXMLLoader(); Pane painel = loader.load(getClass().getResourceAsStream(Kernel.FXML_LOGIN)); return painel; } private TitledPane criarPainelConfiguracoes() throws IOException { FXMLLoader loader = new FXMLLoader(); TitledPane painel = loader.load(getClass().getResourceAsStream(Configuracao.FXML_FORMULARIO)); confControlador = loader.getController(); return painel; } private TitledPane criarPainelCadastroUsuario() throws IOException { FXMLLoader loader = new FXMLLoader(); TitledPane painel = loader.load(getClass().getResourceAsStream(Usuario.FXML_FORMULARIO)); userControlador = loader.getController(); return painel; } private Pane criarPainelPrincipal() throws IOException { FXMLLoader loader = new FXMLLoader(); Pane painel = loader.load(getClass().getResourceAsStream(Kernel.FXML_PRINCIPAL)); Kernel.palco.setOnCloseRequest(e -> { Platform.exit(); }); return painel; } private void carregarIcone(){ Kernel.palco.getIcons().add(new Image("/badernageral/bgfinancas/recursos/imagem/layout/icone.png")); } public static void main(String[] args) { launch(args); } }