/* 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.biblioteca.utilitario; import badernageral.bgfinancas.biblioteca.ajuda.Ajuda; import badernageral.bgfinancas.biblioteca.sistema.Janela; import badernageral.bgfinancas.biblioteca.tipo.Duracao; import badernageral.bgfinancas.biblioteca.tipo.Status; import badernageral.bgfinancas.idioma.Linguagem; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; public final class Calculadora { private Calculadora() {} public static void preparar(TextField campo, Label imagem) { campo.getStyleClass().add("calculadora"); Ajuda.estilizarBotaoDica(campo, imagem, Linguagem.getInstance().getMensagem("tuto_calculadora"), Duracao.MUITO_LONGA); } public static void calcular(TextField campo) throws Erro{ Validar.textField(campo); if (campo.getText().contains(",")) { Janela.showTooltip(Status.ADVERTENCIA, Linguagem.getInstance().getMensagem("use_ponto_decimais"), campo, Duracao.NORMAL); } else { ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine engine = sem.getEngineByName("JavaScript"); String texto = campo.getText(); try { campo.setText(engine.eval(texto).toString()); } catch (ScriptException ex) { Janela.showTooltip(Status.ADVERTENCIA, Linguagem.getInstance().getMensagem("operacao_matematica_invalida"), campo, Duracao.NORMAL); } } throw new Erro(); } }