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.ValidarNovaPk;
import com.softgraf.control.listeners.ValidarString;
import com.softgraf.model.dao.BancoDAO;
import com.softgraf.model.vo.Banco;
import com.softgraf.view.abstrato.AbstractGenericView;
import com.softgraf.view.vcomponentes.VCampoNumerico;
import com.softgraf.view.vcomponentes.VCampoTexto;

// 53
public class BancoView extends AbstractGenericView<Banco, BancoDAO> {

	private static final long serialVersionUID = 1L;
	private VCampoNumerico numNumero;
	private VCampoTexto txtNome;

	public BancoView(JFrame frame, Banco vo, BancoDAO dao, Modo modo) {
		super(frame, new Dimension(620, 200), vo, dao, modo);
	}

	@Override
	protected void inicializaComponentes() {
		numNumero = new VCampoNumerico("Número do Banco:", Limite.NUMBANCO);
		txtNome = new VCampoTexto("Nome do Banco:", 320, Limite.NOMEBANCO);
	}

	@Override
	protected void adicionaComponentes() {
		addVComponente(numNumero, txtNome);
	}

	@Override
	protected void preencheCampos() {
		setCampos(getVo().toArray(), numNumero, txtNome);
	}

	@SuppressWarnings("incomplete-switch")
	@Override
	protected void configuraModoEacoes() {
		switch (getModo()) {
		case INCLUSAO:
			setCamposObrigatorios(numNumero, txtNome);
			numNumero.addFocusListener(new ValidarNovaPk(getDao()));
			break;

		case ALTERACAO:
			setEditableFalse(numNumero);
			setCamposObrigatorios(txtNome);
			break;
		}
		
		txtNome.addFocusListener(new ValidarString(4));
	}

	@Override
	protected boolean acaoOK() {
		if (validarCampos(numNumero, txtNome) && super.acaoOK()) {
			if (getModo() == Modo.INCLUSAO) {
				getVo().setBanco(numNumero.getInteiro());
			}
			
			getVo().setNomeBanco(txtNome.getTextoTrim());
			return true;
		}
		
		return false;
	}
}
