/*
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.modulo.despesa.item;
import badernageral.bgfinancas.modulo.despesa.categoria.DespesaCategoriaFormularioControlador;
import badernageral.bgfinancas.biblioteca.utilitario.Animacao;
import badernageral.bgfinancas.biblioteca.sistema.Botao;
import badernageral.bgfinancas.biblioteca.contrato.Categoria;
import badernageral.bgfinancas.biblioteca.contrato.ControladorFormulario;
import badernageral.bgfinancas.biblioteca.contrato.Item;
import badernageral.bgfinancas.biblioteca.utilitario.Erro;
import badernageral.bgfinancas.biblioteca.sistema.Kernel;
import badernageral.bgfinancas.biblioteca.utilitario.Validar;
import badernageral.bgfinancas.biblioteca.tipo.Duracao;
import badernageral.bgfinancas.biblioteca.sistema.Janela;
import badernageral.bgfinancas.biblioteca.tipo.Acao;
import badernageral.bgfinancas.biblioteca.tipo.Status;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import badernageral.bgfinancas.template.botao.BotaoFormulario;
import badernageral.bgfinancas.template.botao.BotaoListaCategoria;
import badernageral.bgfinancas.modelo.DespesaCategoria;
import badernageral.bgfinancas.modelo.DespesaItem;
import badernageral.bgfinancas.modulo.despesa.DespesaCadastroMultiploControlador;
import javafx.scene.control.TitledPane;
public final class DespesaItemFormularioControlador implements Initializable, ControladorFormulario {
private Acao acao;
@FXML private TitledPane formulario;
@FXML private BotaoListaCategoria categoriaController;
@FXML private BotaoFormulario botaoController;
@FXML private Label labelCategoria;
@FXML private Label labelNome;
@FXML private TextField nome;
private DespesaItem modelo;
private ControladorFormulario controladorF = null;
private DespesaCadastroMultiploControlador controlador = null;
@Override
public void initialize(URL url, ResourceBundle rb) {
formulario.setText(idioma.getMensagem("despesa")+" - "+idioma.getMensagem("item"));
Botao.prepararBotaoModal(this, botaoController, categoriaController);
labelCategoria.setText(idioma.getMensagem("categoria")+":");
labelNome.setText(idioma.getMensagem("nome")+":");
new DespesaCategoria().montarSelectCategoria(categoriaController.getComboCategoria());
}
@Override
public void acaoCancelar() {
Animacao.fadeInOutClose(formulario);
if(controladorF != null){
controladorF.selecionarComboItem(0, null);
}
}
@Override
public void acaoCadastrar(int botao) {
Animacao.fadeOutInvisivel(nome, formulario);
DespesaCategoriaFormularioControlador Controlador = Janela.abrir(DespesaCategoria.FXML_FORMULARIO, idioma.getMensagem("despesas"));
Controlador.cadastrar(this);
}
@Override
public void selecionarComboCategoria(int combo, Categoria depesaCategoria) {
new DespesaCategoria().montarSelectCategoria(categoriaController.getComboCategoria());
categoriaController.setCategoriaSelecionada(depesaCategoria);
Animacao.fadeInInvisivel(nome, formulario);
}
public void cadastrar(Categoria despesaCategoria){
acao = Acao.CADASTRAR;
botaoController.setTextBotaoFinalizar(idioma.getMensagem("cadastrar"));
if(despesaCategoria!=null && !despesaCategoria.getIdCategoria().equals("todas")){
categoriaController.setCategoriaSelecionada(despesaCategoria);
}
}
public void cadastrar(ControladorFormulario controladorF, DespesaCadastroMultiploControlador controlador, String nome){
acao = Acao.CADASTRAR;
this.nome.setText(nome);
this.controlador = controlador;
this.controladorF = controladorF;
botaoController.setTextBotaoFinalizar(idioma.getMensagem("cadastrar"));
}
public void alterar(DespesaItem modelo){
this.modelo = modelo;
acao = Acao.ALTERAR;
botaoController.setTextBotaoFinalizar(idioma.getMensagem("alterar"));
DespesaCategoria despesaCategoria = new DespesaCategoria().setIdCategoria(modelo.getIdCategoria()).consultar();
if(despesaCategoria != null){
categoriaController.setCategoriaSelecionada(despesaCategoria);
}
nome.setText(modelo.getNome());
}
@Override
public void acaoFinalizar(){
if(validarFormulario()){
if(acao == Acao.CADASTRAR){
DespesaItem item = new DespesaItem(null, categoriaController.getIdCategoria(), nome.getText(), null);
if(item.consultar()!=null){
Janela.showTooltip(Status.ERRO, idioma.getMensagem("nome_igual"), Duracao.CURTA);
}else{
item.cadastrar();
if(controlador==null && controladorF==null){
Kernel.controlador.acaoFiltrar(true);
Janela.showTooltip(Status.SUCESSO, idioma.getMensagem("operacao_sucesso"), Duracao.CURTA);
Animacao.fadeInOutClose(formulario);
}else{
item = new DespesaItem().setNome(item.getNome()).setNomeCategoria(item.getNomeCategoria()).consultar();
if(controlador!=null){
controlador.acaoFiltrar(false);
Animacao.fadeInOutClose(formulario);
controlador.adicionar(item.toString());
}else{
Animacao.fadeOutClose(formulario);
controladorF.selecionarComboItem(0, item);
}
}
}
}else if(acao == Acao.ALTERAR){
DespesaItem item = new DespesaItem(modelo.getIdItem(), categoriaController.getIdCategoria(), nome.getText(), null);
item.alterar();
Kernel.controlador.acaoFiltrar(true);
Janela.showTooltip(Status.SUCESSO, idioma.getMensagem("operacao_sucesso"), Duracao.CURTA);
Animacao.fadeInOutClose(formulario);
}
}
}
private boolean validarFormulario(){
try {
Validar.comboBox(categoriaController.getComboCategoria());
Validar.textField(nome);
return true;
} catch (Erro ex) {
return false;
}
}
@Override
public void selecionarComboItem(int combo, Item item) {
System.out.println(idioma.getMensagem("nao_implementado"));
}
}