package com.softgraf.view;

import java.awt.Dimension;

import javax.swing.JFrame;

import com.softgraf.control.Limite;
import com.softgraf.control.Modo;
import com.softgraf.control.listeners.ValidarString;
import com.softgraf.model.dao.FinalidadeDAO;
import com.softgraf.model.vo.Finalidade;
import com.softgraf.view.abstrato.AbstractGenericView;
import com.softgraf.view.vcomponentes.VCampoNumerico;
import com.softgraf.view.vcomponentes.VCampoTexto;

// 54
public class FinalidadeView extends AbstractGenericView<Finalidade, FinalidadeDAO> {
	private static final long serialVersionUID = 1L;
	private VCampoNumerico idFinalidade;
	private VCampoTexto txtDescricao;

	public FinalidadeView(JFrame frame, Finalidade vo, FinalidadeDAO dao, Modo modo) {
		super(frame, new Dimension(450, 200), vo, dao, modo);
	}
	
	@Override
	protected void inicializaComponentes() {
		idFinalidade = new VCampoNumerico("ID:", Limite.IDFINALIDADE); 
		txtDescricao = new VCampoTexto("Descrição:", 270, Limite.DESCFINALIDADE);
	}

	@Override
	protected void adicionaComponentes() {
		addVComponente(idFinalidade, txtDescricao);
	}

	@Override
	protected void preencheCampos() {
		setCampos(getVo().toArray(), idFinalidade, txtDescricao);
	}

	@Override
	protected void configuraModoEacoes() {
		setEditableFalse(idFinalidade);
		
		if (getModo() == Modo.INCLUSAO) {
			setCamposObrigatorios(txtDescricao);
			
		} else if (getModo() == Modo.CONSULTA){
			setEditableFalse(txtDescricao);
		}
		
		if (getModo() != Modo.CONSULTA){
			txtDescricao.addFocusListener(new ValidarString(3));
		}	
	}
	
	@Override
	protected boolean acaoOK() {
		if (validarCampos(txtDescricao) && super.acaoOK()) {	
			getVo().setDescricao(txtDescricao.getTextoTrim());
			return true;
		}
		
		return false;
	}
}
