com.automaster.autoview.client.ui.paineis.dialogs.cadastro.NovoVeiculo.java Source code

Java tutorial

Introduction

Here is the source code for com.automaster.autoview.client.ui.paineis.dialogs.cadastro.NovoVeiculo.java

Source

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.automaster.autoview.client.ui.paineis.dialogs.cadastro;

import com.automaster.autoview.client.Info;
import com.automaster.autoview.client.ui.paineis.tabs.TabBuscarCliente;
import com.automaster.autoview.client.ui.paineis.tabs.monitoramento.TabGerenciaGrupoMaster;
import com.automaster.autoview.client.ui.paineis.tabs.monitoramento.TabHistorico;
import com.google.gwt.core.shared.GWT;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.data.Record;
import com.smartgwt.client.data.RecordList;
import com.smartgwt.client.data.fields.DataSourceTextField;
import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.types.AnimationEffect;
import com.smartgwt.client.types.CharacterCasing;
import com.smartgwt.client.types.DateDisplayFormat;
import com.smartgwt.client.types.FormLayoutType;
import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.types.VisibilityMode;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.ImgButton;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.DateItem;
import com.smartgwt.client.widgets.form.fields.FormItemIcon;
import com.smartgwt.client.widgets.form.fields.SelectItem;
import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.types.MultipleAppearance;
import com.smartgwt.client.types.SelectionStyle;
import com.smartgwt.client.types.SortDirection;
import com.smartgwt.client.types.TitleOrientation;
import com.smartgwt.client.util.BooleanCallback;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.events.CloseClickEvent;
import com.smartgwt.client.widgets.events.CloseClickHandler;
import com.smartgwt.client.widgets.form.fields.ComboBoxItem;
import com.smartgwt.client.widgets.form.fields.TextAreaItem;
import com.smartgwt.client.widgets.form.fields.events.ChangeEvent;
import com.smartgwt.client.widgets.form.fields.events.ChangeHandler;
import com.smartgwt.client.widgets.form.fields.events.ChangedEvent;
import com.smartgwt.client.widgets.form.fields.events.ChangedHandler;
import com.smartgwt.client.widgets.form.fields.events.FormItemClickHandler;
import com.smartgwt.client.widgets.form.fields.events.FormItemIconClickEvent;
import com.smartgwt.client.widgets.form.fields.events.KeyPressEvent;
import com.smartgwt.client.widgets.form.fields.events.KeyPressHandler;
import com.smartgwt.client.widgets.form.validator.LengthRangeValidator;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.SectionStack;
import com.smartgwt.client.widgets.layout.SectionStackSection;
import com.smartgwt.client.widgets.layout.VLayout;

import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;

/**
 *
 * @author Adriano
 */
public class NovoVeiculo extends Window {

    private int codVeiculoIndicador;
    private String campo;
    private boolean flagItemValor;
    private int codPessoaAutorizada;
    public static int indiceNovaPessoa;
    private ArrayList<TreeMap<String, String>> arrayPessoasAutorizadas;
    private int codigoUnidade;
    private String firstEquipamento = "0;0";
    private String firstInstalador = "0";
    private final ComboBoxItem itemEstado;
    private final ComboBoxItem itemCidade;
    private final ComboBoxItem itemMarca;
    private final ComboBoxItem itemModelo;
    private final ComboBoxItem itemAno;
    private final SelectItem numeroParcelas;
    private final ListGrid listPadLig;
    private final LinkedHashMap<String, String> valueMapVeic;
    private final SelectItem itemPessoasAutorizadas;
    private final ListGrid listPesAut;
    private final Label valorMensalidade;
    private double planoMaster;
    private double planoComodato;
    private boolean validaPlaca;
    private boolean validaChassi;
    private final ImgButton addpadLig;
    private ArrayList<TreeMap<String, String>> arrrayFiosEquipamento;
    LinkedHashMap<String, String> conf;

    public NovoVeiculo(final int codigoCliente, final String nomeCliente, final ListGrid veicPlacas,
            final TabBuscarCliente tabBuscaCliente, final String tabelaVazia,
            final TreeMap<String, ArrayList<TreeMap<String, String>>> placasCliente) {

        this.codVeiculoIndicador = 0;
        this.campo = "";
        this.flagItemValor = false;
        this.codPessoaAutorizada = 0;
        indiceNovaPessoa = 0;
        this.arrayPessoasAutorizadas = new ArrayList<>();
        this.codigoUnidade = Integer.parseInt((Info.usuarioLogado.get("codUnidadeCliente") == null)
                ? Info.usuarioLogado.get("codUnidadeFuncionario")
                : Info.usuarioLogado.get("codUnidadeCliente"));
        this.itemEstado = new ComboBoxItem("estado", Info.titulosMsg.get("estadoEndereco"));
        this.itemCidade = new ComboBoxItem("cidade", Info.titulosMsg.get("cidadeEndereco"));
        this.itemMarca = new ComboBoxItem();
        this.itemModelo = new ComboBoxItem();
        this.itemAno = new ComboBoxItem();
        this.numeroParcelas = new SelectItem();
        this.valueMapVeic = new LinkedHashMap<>();
        this.valorMensalidade = new Label();
        this.planoMaster = 0;
        this.planoComodato = 0;
        this.validaPlaca = false;
        this.validaChassi = false;
        this.addpadLig = new ImgButton();
        this.arrrayFiosEquipamento = new ArrayList<>();
        // abriu o formulrio de cadastro do novo veculo //
        listPesAut = new ListGrid() {
            @Override
            protected Canvas createRecordComponent(final ListGridRecord record, Integer colNum) {
                String fieldName = this.getFieldName(colNum);
                final ListGrid listAux = this;
                if (fieldName.equals("excluir")) {
                    HLayout recordCanvas = new HLayout(3);
                    recordCanvas.setHeight(22);
                    recordCanvas.setWidth100();
                    recordCanvas.setAlign(Alignment.CENTER);
                    ImgButton excluirImg = new ImgButton();
                    excluirImg.setShowDown(false);
                    excluirImg.setShowRollOver(false);
                    excluirImg.setLayoutAlign(Alignment.CENTER);
                    excluirImg.setSrc("[SKIN]actions/remove.png");
                    excluirImg.setPrompt(Info.titulosMsg.get("excluirPessoaAutorizada"));
                    excluirImg.setHeight(16);
                    excluirImg.setWidth(16);
                    excluirImg.addClickHandler(new ClickHandler() {
                        public void onClick(ClickEvent event) {

                            String codigo = record.getAttributeAsString("codigoInterface");
                            int linhaClicada = listAux.getRecordIndex(record);
                            listAux.selectRecord(linhaClicada);
                            listAux.removeSelectedData();
                            itemPessoasAutorizadas.redraw();
                            String pessoasAutorizadosRastrear[] = itemPessoasAutorizadas.getValues();
                            String pessoasAutorizadosRastrearNova[] = new String[pessoasAutorizadosRastrear.length];
                            int num = arrayPessoasAutorizadas.size();
                            int removidos = 0;
                            for (String temp : pessoasAutorizadosRastrear) {
                                if (!codigo.equalsIgnoreCase(temp)) {
                                    pessoasAutorizadosRastrearNova[removidos] = temp;
                                    removidos++;
                                }
                            }
                            itemPessoasAutorizadas.redraw();
                            itemPessoasAutorizadas.setValues(pessoasAutorizadosRastrearNova);
                            /*for (int i = 0; i < num; i++) {
                             TreeMap<String, String> endEditado = arrayPessoasAutorizadas.get(i - removidos);
                             if (codigo.equalsIgnoreCase(endEditado.get("codPessoa"))) {
                             arrayPessoasAutorizadas.remove(endEditado);
                             removidos++;
                             }
                             }*/
                            com.google.gwt.core.client.GWT
                                    .log("arrayPessoasAutorizadas - NovoVeiculo: " + arrayPessoasAutorizadas);
                        }
                    });
                    recordCanvas.addMember(excluirImg);
                    return recordCanvas;

                } else {
                    return null;
                }

            }
        };
        listPadLig = new ListGrid();
        Info.registrarLog(Integer.parseInt(Info.usuarioLogado.get("codUsuario")), 232,
                new Timestamp(System.currentTimeMillis()), "CLiente: " + nomeCliente);
        final Window windAux = this;
        setTitle(Info.titulosMsg.get("novoVeiculo"));
        setWidth(1200);
        setHeight100();
        setShowMinimizeButton(false);
        setIsModal(true);
        setShowModalMask(true);
        centerInPage();
        setLayoutAlign(Alignment.CENTER);
        addCloseClickHandler(new CloseClickHandler() {

            @Override
            public void onCloseClick(CloseClickEvent event) {

                SC.confirm(Info.titulosMsg.get("terminarCadastroVeiculo"), new BooleanCallback() {

                    @Override
                    public void execute(Boolean value) {
                        if (value) {
                            // no terminou o cadastro do veculo //
                            Info.registrarLog(Integer.parseInt(Info.usuarioLogado.get("codUsuario")), 94,
                                    new Timestamp(System.currentTimeMillis()), "CLiente: " + nomeCliente);
                            destroy();
                        }
                    }
                });
                //GWT.log(""+clienteEdicao);
            }
        });
        //criando o Vlayout que ir armazenar o painelNovoCliente
        HLayout painelpagina = new HLayout();
        painelpagina.setWidth100();
        painelpagina.setHeight100();
        painelpagina.setAlign(Alignment.CENTER);
        //Criando o painel que ir armazenar to tab, sections e butoes
        VLayout painelNovoVeiculo = new VLayout();
        painelNovoVeiculo.setMembersMargin(15);
        painelNovoVeiculo.setWidth(1000);
        painelNovoVeiculo.setDefaultLayoutAlign(Alignment.CENTER);
        //criando o painel que ir armazenar os botoes cadastrar e limpar
        HLayout painelBotoesNovoVeiculo = new HLayout();
        painelBotoesNovoVeiculo.setMembersMargin(15);
        painelBotoesNovoVeiculo.setAlign(Alignment.CENTER);
        //criando o formulrio que armazena os itens de cadastro Veiculo
        final DynamicForm formNovoVeiculo = new DynamicForm();
        formNovoVeiculo.setMargin(30);
        formNovoVeiculo.setLayoutAlign(Alignment.CENTER);
        formNovoVeiculo.setAutoFocus(true);

        final ComboBoxItem tipoPlano = new ComboBoxItem();
        tipoPlano.setAddUnknownValues(false);
        tipoPlano.setTitle(Info.titulosMsg.get("plano"));
        tipoPlano.setName("plano");
        Info.dbService.buscarTodosPlanos(new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

            @Override
            public void onSuccess(ArrayList<TreeMap<String, String>> result) {
                LinkedHashMap<String, String> pl = new LinkedHashMap<>();
                if (result != null) {
                    for (TreeMap<String, String> planos : result) {
                        pl.put(planos.get("codPlano"), planos.get("descricao"));
                        if (Integer.parseInt(planos.get("codPlano")) == 1) {
                            planoMaster = Double.parseDouble(planos.get("valor"));
                            valorMensalidade.setContents("<strong><h3>Valor da Mensalidade: R$"
                                    + Info.formataSaldo(Info.formataDecimal(planoMaster)) + " </h3></strong>");
                            //GWT.log("Master: " + planoMaster);
                        } else if (Integer.parseInt(planos.get("codPlano")) == 2) {
                            planoComodato = Double.parseDouble(planos.get("valor"));
                            //GWT.log("Comodato: " + planoComodato);
                        }
                    }
                    tipoPlano.setValueMap(pl);
                    //tipoPlano.setValue(result.get(0).get("codPlano"));
                } else {
                    pl.put("0", Info.titulosMsg.get("naoHaPlano"));
                    tipoPlano.setValue("0");

                }
            }

            @Override
            public void onFailure(Throwable caught) {
                // TODO Auto-generated method stub

            }
        });
        tipoPlano.setValue("1");
        tipoPlano.setDefaultToFirstOption(true);
        tipoPlano.setHint("<nbr>*</nbr>");
        tipoPlano.setRequired(true);
        tipoPlano.setWidth(450);

        final ComboBoxItem cliente = new ComboBoxItem();
        cliente.setAddUnknownValues(false);
        cliente.setTitle(Info.titulosMsg.get("tituloCliente"));
        cliente.setName("cliente");
        LinkedHashMap<String, String> cl = new LinkedHashMap<>();
        cl.put(String.valueOf(codigoCliente), nomeCliente);
        cliente.setDefaultToFirstOption(true);
        cliente.setDisabled(true);
        cliente.setValueMap(cl);
        cliente.setHint("<nbr>*</nbr>");
        cliente.setRequired(true);
        cliente.setWidth(450);

        final ComboBoxItem itemConfiguracao = new ComboBoxItem();
        itemConfiguracao.setAddUnknownValues(false);
        itemConfiguracao.setTitle(Info.titulosMsg.get("configuracaoDoFio"));
        itemConfiguracao.setName("itemConfiguracao");
        itemConfiguracao.setHint("<nbr></nbr>");
        conf = new LinkedHashMap<>();
        conf.put("0", "Sem configuracao");
        itemConfiguracao.setValueMap(conf);
        itemConfiguracao.setValue("0");
        itemConfiguracao.setHint("<nbr></nbr>");
        itemConfiguracao.setRequired(false);
        itemConfiguracao.setDisabled(true);
        itemConfiguracao.setWidth(450);
        itemConfiguracao.addChangedHandler(new ChangedHandler() {

            @Override
            public void onChanged(ChangedEvent event) {
                String itemSelecionado = (String) event.getValue();
                listPadLig.setData(new Record[0]);
                for (TreeMap<String, String> fio : arrrayFiosEquipamento) {
                    if (fio.get("codMecf").equalsIgnoreCase(itemSelecionado)) {
                        Record padLig = new Record();
                        padLig.setAttribute("corFio", fio.get("corFio"));
                        padLig.setAttribute("sinalMas",
                                (fio.get("sinal").equalsIgnoreCase("true")) ? "Positivo" : "Negativo");
                        padLig.setAttribute("sinal", fio.get("sinal"));
                        padLig.setAttribute("padraoMas",
                                (fio.get("padrao").equalsIgnoreCase("true")) ? "Ligado" : "Desligado");
                        padLig.setAttribute("padrao", fio.get("padrao"));
                        padLig.setAttribute("funcaoMas",
                                (fio.get("funcao").equalsIgnoreCase("true")) ? "Entrada" : "Sada");
                        padLig.setAttribute("funcao", fio.get("funcao"));
                        padLig.setAttribute("fieldAtivoMas",
                                (fio.get("ativo").equalsIgnoreCase("true")) ? "Sim" : "No");
                        padLig.setAttribute("fieldAtivo", fio.get("ativo"));
                        padLig.setAttribute("descricaoPl",
                                (fio.get("descricao") == null || fio.get("descricao").equalsIgnoreCase(""))
                                        ? "Sem informao"
                                        : fio.get("descricao"));
                        listPadLig.addData(padLig);
                    }
                }
            }
        });

        final ComboBoxItem equipamento = new ComboBoxItem();
        equipamento.setAddUnknownValues(false);
        equipamento.setTitle(Info.titulosMsg.get("equipamento"));
        equipamento.setName("equipamento");
        equipamento.setSortField("name");
        FormItemIcon refreshEquip = new FormItemIcon();
        refreshEquip.setSrc("[SKIN]actions/refresh.png");
        refreshEquip.setName("refreshEquipamento");
        refreshEquip.setPrompt("Atualizar lista");
        equipamento.setIcons(refreshEquip);
        Info.dbService.buscarTodosDisponiveis(codigoUnidade,
                new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

                    @Override
                    public void onSuccess(ArrayList<TreeMap<String, String>> result) {
                        LinkedHashMap<String, String> equip = new LinkedHashMap<>();
                        boolean firstEquip = true;
                        if (result != null) {
                            //itemConfiguracao.setHint("<nbr>*</nbr>");
                            //itemConfiguracao.setRequired(true);
                            //itemConfiguracao.setDisabled(false);
                            equip.put("0;0", "Sem equipamento");
                            //firstEquipamento = result.get(0).get("codEquipamento");
                            for (TreeMap<String, String> equipDisponiveis : result) {
                                equip.put(equipDisponiveis.get("id") + ";" + equipDisponiveis.get("codEquipamento"),
                                        equipDisponiveis.get("id") + " / " + equipDisponiveis.get("fabricanteMe")
                                                + " / " + equipDisponiveis.get("descricaoMe")
                                                + ((codigoUnidade == 1)
                                                        ? " / " + equipDisponiveis.get("nomeUnidade")
                                                        : ""));
                                if (Integer.parseInt(equipDisponiveis.get("codUnidade")) == codigoUnidade
                                        && firstEquip) {
                                    firstEquip = false;
                                    //firstEquipamento = equipDisponiveis.get("codEquipamento");
                                }
                            }
                            equipamento.setValueMap(equip);
                            equipamento.setValue(firstEquipamento);
                            /*if(Integer.parseInt(firstEquipamento.substring(firstEquipamento.indexOf(";")+1, firstEquipamento.length())) > 0){
                            Info.dbService.buscarFiosDoEquipamentoPorModeloDeEquipamento(Integer.parseInt(firstEquipamento.substring(firstEquipamento.indexOf(";")+1, firstEquipamento.length())), new AsyncCallback<ArrayList<TreeMap<String, String>>>() {
                                
                            @Override
                            public void onFailure(Throwable caught) {
                                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
                            }
                                
                            @Override
                            public void onSuccess(ArrayList<TreeMap<String, String>> fiosEquipamento) {
                                
                                if (fiosEquipamento != null) {
                                    arrrayFiosEquipamento = fiosEquipamento;
                                    TreeMap<String, String> codMecf = new TreeMap<>();
                                    conf = new LinkedHashMap<>();
                                    for (TreeMap<String, String> fio : fiosEquipamento) {
                                        if (!codMecf.containsKey(fio.get("codMecf"))) {
                                            conf.put(fio.get("codMecf"), fio.get("nome") + " / " + fio.get("descricaomecf"));
                                            codMecf.put(fio.get("codMecf"), fio.get("codMecf"));
                                        }
                                        if (fio.get("codMecf").equalsIgnoreCase(fiosEquipamento.get(0).get("codMecf"))) {
                                            Record padLig = new Record();
                                            padLig.setAttribute("corFio", fio.get("corFio"));
                                            padLig.setAttribute("sinalMas", (fio.get("sinal").equalsIgnoreCase("true")) ? "Positivo" : "Negativo");
                                            padLig.setAttribute("sinal", fio.get("sinal"));
                                            padLig.setAttribute("padraoMas", (fio.get("padrao").equalsIgnoreCase("true")) ? "Ligado" : "Desligado");
                                            padLig.setAttribute("padrao", fio.get("padrao"));
                                            padLig.setAttribute("funcaoMas", (fio.get("funcao").equalsIgnoreCase("true")) ? "Entrada" : "Sada");
                                            padLig.setAttribute("funcao", fio.get("funcao"));
                                            padLig.setAttribute("fieldAtivoMas", (fio.get("ativo").equalsIgnoreCase("true")) ? "Sim" : "No");
                                            padLig.setAttribute("fieldAtivo", fio.get("ativo"));
                                            padLig.setAttribute("descricaoPl", (fio.get("descricao") == null || fio.get("descricao").equalsIgnoreCase("")) ? "Sem informao" : fio.get("descricao"));
                                            listPadLig.addData(padLig);
                                        }
                                    }
                                    itemConfiguracao.setValueMap(conf);
                                    itemConfiguracao.setValue(fiosEquipamento.get(0).get("codMecf"));
                                
                                } else {
                                    GWT.log("Erro ao consultar os fios do equipamento!");
                                }
                                
                            }
                            });
                            }*/

                        } else {
                            equip.put("0;0", Info.titulosMsg.get("naoHaEquipamento"));
                            equipamento.setValueMap(equip);
                            equipamento.setValue("0;0");
                            itemConfiguracao.setHint("<nbr></nbr>");
                            itemConfiguracao.setRequired(false);
                            itemConfiguracao.setDisabled(true);
                            conf = new LinkedHashMap<>();
                            conf.put("0", "Sem configuracao");
                            itemConfiguracao.setValueMap(conf);
                            itemConfiguracao.setValue("0");
                            addpadLig.disable();
                        }

                    }

                    @Override
                    public void onFailure(Throwable caught) {
                        // TODO Auto-generated method stub

                    }
                });
        refreshEquip.addFormItemClickHandler(new FormItemClickHandler() {

            @Override
            public void onFormItemClick(FormItemIconClickEvent event) {
                equipamento.redraw();
                Info.dbService.buscarTodosDisponiveis(codigoUnidade,
                        new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

                            @Override
                            public void onSuccess(ArrayList<TreeMap<String, String>> result) {
                                LinkedHashMap<String, String> equip = new LinkedHashMap<>();
                                boolean firstEquip = true;
                                if (result != null) {
                                    itemConfiguracao.setHint("<nbr>*</nbr>");
                                    itemConfiguracao.setRequired(true);
                                    itemConfiguracao.setDisabled(false);
                                    equip.put("0;0", "Sem equipamento");
                                    //firstEquipamento = result.get(0).get("codEquipamento");
                                    for (TreeMap<String, String> equipDisponiveis : result) {
                                        equip.put(
                                                equipDisponiveis.get("id") + ";"
                                                        + equipDisponiveis.get("codEquipamento"),
                                                equipDisponiveis.get("id") + " / "
                                                        + equipDisponiveis.get("fabricanteMe") + " / "
                                                        + equipDisponiveis.get("descricaoMe")
                                                        + ((codigoUnidade == 1)
                                                                ? " / " + equipDisponiveis.get("nomeUnidade")
                                                                : ""));
                                        if (Integer.parseInt(equipDisponiveis.get("codUnidade")) == codigoUnidade
                                                && firstEquip) {
                                            firstEquip = false;
                                            //firstEquipamento = equipDisponiveis.get("codEquipamento");
                                        }
                                    }
                                    equipamento.setValueMap(equip);
                                    equipamento.setValue(firstEquipamento);
                                    listPadLig.setData(new RecordList());
                                    if (Integer.parseInt(firstEquipamento.substring(
                                            firstEquipamento.indexOf(";") + 1, firstEquipamento.length())) > 0) {
                                        Info.dbService.buscarFiosDoEquipamentoPorModeloDeEquipamento(
                                                Integer.parseInt(firstEquipamento.substring(
                                                        firstEquipamento.indexOf(";") + 1,
                                                        firstEquipamento.length())),
                                                new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

                                                    @Override
                                                    public void onFailure(Throwable caught) {
                                                        throw new UnsupportedOperationException(
                                                                "Not supported yet."); //To change body of generated methods, choose Tools | Templates.
                                                    }

                                                    @Override
                                                    public void onSuccess(
                                                            ArrayList<TreeMap<String, String>> fiosEquipamento) {

                                                        if (fiosEquipamento != null) {
                                                            arrrayFiosEquipamento = fiosEquipamento;
                                                            TreeMap<String, String> codMecf = new TreeMap<>();
                                                            conf = new LinkedHashMap<>();
                                                            for (TreeMap<String, String> fio : fiosEquipamento) {
                                                                if (!codMecf.containsKey(fio.get("codMecf"))) {
                                                                    conf.put(fio.get("codMecf"), fio.get("nome")
                                                                            + " / " + fio.get("descricaomecf"));
                                                                    codMecf.put(fio.get("codMecf"),
                                                                            fio.get("codMecf"));
                                                                }
                                                                if (fio.get("codMecf").equalsIgnoreCase(
                                                                        fiosEquipamento.get(0).get("codMecf"))) {
                                                                    Record padLig = new Record();
                                                                    padLig.setAttribute("corFio",
                                                                            fio.get("corFio"));
                                                                    padLig.setAttribute("sinalMas",
                                                                            (fio.get("sinal")
                                                                                    .equalsIgnoreCase("true"))
                                                                                            ? "Positivo"
                                                                                            : "Negativo");
                                                                    padLig.setAttribute("sinal", fio.get("sinal"));
                                                                    padLig.setAttribute("padraoMas",
                                                                            (fio.get("padrao")
                                                                                    .equalsIgnoreCase("true"))
                                                                                            ? "Ligado"
                                                                                            : "Desligado");
                                                                    padLig.setAttribute("padrao",
                                                                            fio.get("padrao"));
                                                                    padLig.setAttribute("funcaoMas",
                                                                            (fio.get("funcao")
                                                                                    .equalsIgnoreCase("true"))
                                                                                            ? "Entrada"
                                                                                            : "Sada");
                                                                    padLig.setAttribute("funcao",
                                                                            fio.get("funcao"));
                                                                    padLig.setAttribute("fieldAtivoMas",
                                                                            (fio.get("ativo").equalsIgnoreCase(
                                                                                    "true")) ? "Sim" : "No");
                                                                    padLig.setAttribute("fieldAtivo",
                                                                            fio.get("ativo"));
                                                                    padLig.setAttribute("descricaoPl",
                                                                            (fio.get("descricao") == null || fio
                                                                                    .get("descricao")
                                                                                    .equalsIgnoreCase(""))
                                                                                            ? "Sem informao"
                                                                                            : fio.get("descricao"));
                                                                    listPadLig.addData(padLig);
                                                                }
                                                            }
                                                            itemConfiguracao.setValueMap(conf);
                                                            itemConfiguracao.setValue(
                                                                    fiosEquipamento.get(0).get("codMecf"));

                                                        } else {
                                                            GWT.log("Erro ao consultar os fios do equipamento!");
                                                        }

                                                    }
                                                });
                                    }

                                } else {
                                    equip.put("0;0", Info.titulosMsg.get("naoHaEquipamento"));
                                    equipamento.setValueMap(equip);
                                    equipamento.setValue("0;0");
                                    itemConfiguracao.setHint("<nbr></nbr>");
                                    itemConfiguracao.setRequired(false);
                                    itemConfiguracao.setDisabled(true);
                                    conf = new LinkedHashMap<>();
                                    conf.put("0", "Sem configuracao");
                                    itemConfiguracao.setValueMap(conf);
                                    itemConfiguracao.setValue("0");
                                    addpadLig.disable();
                                }

                            }

                            @Override
                            public void onFailure(Throwable caught) {
                                // TODO Auto-generated method stub

                            }
                        });
            }
        });
        equipamento.setHint("<nbr>*</nbr>");
        equipamento.setRequired(true);
        equipamento.setWidth(450);
        equipamento.addChangedHandler(new ChangedHandler() {

            @Override
            public void onChanged(ChangedEvent event) {
                GWT.log("ID value: " + equipamento.getValueAsString().substring(
                        equipamento.getValueAsString().indexOf(";") + 1, equipamento.getValueAsString().length()));
                if (Integer.parseInt(
                        equipamento.getValueAsString().substring(equipamento.getValueAsString().indexOf(";") + 1,
                                equipamento.getValueAsString().length())) > 0) {
                    addpadLig.enable();
                    listPadLig.setData(new RecordList());
                    Info.dbService.buscarFiosDoEquipamentoPorModeloDeEquipamento(
                            Integer.parseInt(equipamento.getValueAsString().substring(
                                    equipamento.getValueAsString().indexOf(";") + 1,
                                    equipamento.getValueAsString().length())),
                            new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

                                @Override
                                public void onSuccess(ArrayList<TreeMap<String, String>> result) {
                                    if (result != null) {
                                        itemConfiguracao.setHint("<nbr>*</nbr>");
                                        itemConfiguracao.setRequired(true);
                                        itemConfiguracao.setDisabled(false);
                                        arrrayFiosEquipamento = result;
                                        TreeMap<String, String> nome = new TreeMap<>();
                                        conf = new LinkedHashMap<>();
                                        for (TreeMap<String, String> fio : result) {
                                            if (!nome.containsKey(fio.get("codMecf"))) {
                                                conf.put(fio.get("codMecf"),
                                                        fio.get("nome") + " / " + fio.get("descricaomecf"));
                                                nome.put(fio.get("codMecf"), fio.get("codMecf"));
                                            }
                                            if (fio.get("codMecf").equalsIgnoreCase(result.get(0).get("codMecf"))) {
                                                Record padLig = new Record();
                                                padLig.setAttribute("corFio", fio.get("corFio"));
                                                padLig.setAttribute("sinalMas",
                                                        (fio.get("sinal").equalsIgnoreCase("true")) ? "Positivo"
                                                                : "Negativo");
                                                padLig.setAttribute("sinal", fio.get("sinal"));
                                                padLig.setAttribute("padraoMas",
                                                        (fio.get("padrao").equalsIgnoreCase("true")) ? "Ligado"
                                                                : "Desligado");
                                                padLig.setAttribute("padrao", fio.get("padrao"));
                                                padLig.setAttribute("funcaoMas",
                                                        (fio.get("funcao").equalsIgnoreCase("true")) ? "Entrada"
                                                                : "Sada");
                                                padLig.setAttribute("funcao", fio.get("funcao"));
                                                padLig.setAttribute("fieldAtivoMas",
                                                        (fio.get("ativo").equalsIgnoreCase("true")) ? "Sim"
                                                                : "No");
                                                padLig.setAttribute("fieldAtivo", fio.get("ativo"));
                                                padLig.setAttribute("descricaoPl",
                                                        (fio.get("descricao") == null
                                                                || fio.get("descricao").equalsIgnoreCase(""))
                                                                        ? "Sem informao"
                                                                        : fio.get("descricao"));
                                                listPadLig.addData(padLig);
                                            }
                                        }
                                        itemConfiguracao.setValueMap(conf);
                                        itemConfiguracao.setValue(result.get(0).get("codMecf"));

                                    } else {
                                        itemConfiguracao.setHint("<nbr></nbr>");
                                        itemConfiguracao.setRequired(false);
                                        itemConfiguracao.setDisabled(true);
                                        GWT.log("Erro ao consultar os fios do equipamento!");
                                    }

                                }

                                @Override
                                public void onFailure(Throwable caught) {
                                    // TODO Auto-generated method stub

                                }
                            });

                } else {
                    itemConfiguracao.setHint("<nbr></nbr>");
                    itemConfiguracao.setRequired(false);
                    itemConfiguracao.setDisabled(true);
                    conf.put("0", "Sem configuracao");
                    itemConfiguracao.setValueMap(conf);
                    itemConfiguracao.setValue("0");
                    arrrayFiosEquipamento = new ArrayList<>();
                    listPadLig.setData(new RecordList());
                    addpadLig.disable();
                }
            }
        });

        final ComboBoxItem instalador = new ComboBoxItem();
        instalador.setAddUnknownValues(false);
        instalador.setTitle(Info.titulosMsg.get("instalador"));
        instalador.setName("instalador");
        FormItemIcon refreshInstalador = new FormItemIcon();
        refreshInstalador.setSrc("[SKIN]actions/refresh.png");
        refreshInstalador.setName("refreshEquipamento");
        refreshInstalador.setPrompt("Atualizar lista");
        instalador.setIcons(refreshInstalador);

        refreshInstalador.addFormItemClickHandler(new FormItemClickHandler() {

            @Override
            public void onFormItemClick(FormItemIconClickEvent event) {
                instalador.redraw();
                Info.dbService.buscarFuncionarioPorCargoEstado(1, codigoUnidade,
                        new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

                            @Override
                            public void onSuccess(ArrayList<TreeMap<String, String>> result) {
                                LinkedHashMap<String, String> inst = new LinkedHashMap<>();
                                boolean firtInst = true;

                                if (result != null) {
                                    firstInstalador = result.get(0).get("codFuncionario");
                                    for (TreeMap<String, String> funcionario : result) {
                                        //+((codigoUnidade == 1) ? " / "+funcionario.get("nomeUnidade") : "")
                                        inst.put(funcionario.get("codFuncionario"),
                                                funcionario.get("nome") + ((codigoUnidade == 1)
                                                        ? " / " + funcionario.get("nomeUnidade")
                                                        : ""));
                                        if (Integer.parseInt(funcionario.get("codUnidade")) == codigoUnidade
                                                && firtInst) {
                                            firtInst = false;
                                            firstInstalador = funcionario.get("codFuncionario");
                                        }
                                    }
                                    instalador.setValueMap(inst);
                                    instalador.setValue(firstInstalador);
                                } else {
                                    inst.put("0", Info.titulosMsg.get("naoHaInstalador"));
                                    instalador.setValueMap(inst);
                                    instalador.setValue("0");
                                }
                            }

                            @Override
                            public void onFailure(Throwable caught) {
                                // TODO Auto-generated method stub

                            }
                        });
            }
        });

        Info.dbService.buscarFuncionarioPorCargoEstado(1, codigoUnidade,
                new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

                    @Override
                    public void onSuccess(ArrayList<TreeMap<String, String>> result) {
                        LinkedHashMap<String, String> inst = new LinkedHashMap<>();
                        boolean firtInst = true;

                        if (result != null) {
                            firstInstalador = result.get(0).get("codFuncionario");
                            for (TreeMap<String, String> funcionario : result) {
                                //+((codigoUnidade == 1) ? " / "+funcionario.get("nomeUnidade") : "")
                                inst.put(funcionario.get("codFuncionario"), funcionario.get("nome")
                                        + ((codigoUnidade == 1) ? " / " + funcionario.get("nomeUnidade") : ""));
                                if (Integer.parseInt(funcionario.get("codUnidade")) == codigoUnidade && firtInst) {
                                    firtInst = false;
                                    firstInstalador = funcionario.get("codFuncionario");
                                }
                            }
                            instalador.setValueMap(inst);
                            instalador.setValue(firstInstalador);
                        } else {
                            inst.put("0", Info.titulosMsg.get("naoHaInstalador"));
                            instalador.setValueMap(inst);
                            instalador.setValue("0");
                        }
                    }

                    @Override
                    public void onFailure(Throwable caught) {
                        // TODO Auto-generated method stub

                    }
                });
        instalador.setHint("<nbr>*</nbr>");
        instalador.setRequired(true);
        instalador.setWidth(450);

        final ComboBoxItem indicado = new ComboBoxItem();
        indicado.setAddUnknownValues(false);
        indicado.setName("indicado");
        indicado.setTitle(Info.titulosMsg.get("indicado"));
        valueMapVeic.put("0", Info.titulosMsg.get("indicacaoEmpresa"));
        valueMapVeic.put("REP", Info.titulosMsg.get("indicacaoRepresentante"));
        FormItemIcon icon = new FormItemIcon();
        icon.setSrc("[SKIN]actions/add.png");
        icon.setName("adicionarIndicacao");
        indicado.setHint("<nbr>*</nbr>");
        indicado.setWidth(450);
        indicado.addChangedHandler(new ChangedHandler() {

            @Override
            public void onChanged(ChangedEvent event) {
                String selecionado = (String) event.getValue();
                if (selecionado.equalsIgnoreCase("REP")) {
                    BuscarRepresentante buscarRepresentante = new BuscarRepresentante(valueMapVeic, indicado);
                    buscarRepresentante.setAnimateTime(1200);
                    buscarRepresentante.animateShow(AnimationEffect.FADE);
                }
            }
        });
        icon.addFormItemClickHandler(new FormItemClickHandler() {

            @Override
            public void onFormItemClick(FormItemIconClickEvent event) {
                NovaIndicacao dialogInd = new NovaIndicacao(indicado, valueMapVeic, codVeiculoIndicador);
                dialogInd.setAnimateTime(1200);
                dialogInd.animateShow(AnimationEffect.FADE);
            }
        });
        String valueIndicado = "0";
        //GWT.log("PlacasCliente : "+placasCliente.isEmpty());
        if (!placasCliente.isEmpty()) {
            int numeroInd = 0;
            for (Map.Entry<String, ArrayList<TreeMap<String, String>>> entrySet : placasCliente.entrySet()) {
                //String key = entrySet.getKey();
                ArrayList<TreeMap<String, String>> value = entrySet.getValue();
                //if(Integer.parseInt(value.get(0).get("codPlano")) == 1){
                valueMapVeic.put(value.get(0).get("codVeiculo"), value.get(0).get("placaVeiculo") + " / "
                        + ((value.get(0).get("fabricante") == null) ? value.get(0).get("fabricantev")
                                : value.get(0).get("fabricante"))
                        + " / "
                        + ((value.get(0).get("modelo") == null) ? value.get(0).get("modelov")
                                : value.get(0).get("modelo"))
                        + " / "
                        + ((value.get(0).get("ano") == null) ? value.get(0).get("anov") : value.get(0).get("ano"))
                        + " Ind: " + value.get(0).get("numeroIndicacoes"));
                //}
                if (Integer.parseInt(value.get(0).get("numeroIndicacoes")) >= numeroInd
                        && Integer.parseInt(value.get(0).get("codPlano")) == 1) {
                    valueIndicado = value.get(0).get("codVeiculo");
                    numeroInd = Integer.parseInt(value.get(0).get("numeroIndicacoes"));
                }
            }
        }
        indicado.setValue(valueIndicado);
        indicado.setValueMap(valueMapVeic);
        //indicado.setDefaultToFirstOption(true);
        //indicado.setRequired(true);
        indicado.setIcons(icon);
        indicado.setTooltip(Info.titulosMsg.get("adicionarIndicacao"));

        final TextItem placa = new TextItem();
        placa.setName("placa");
        placa.setTitle(Info.titulosMsg.get("placa"));
        placa.setMask(">LLL-####");
        placa.setMaskSaveLiterals(true);
        placa.setLength(8);
        placa.setRequired(true);
        LengthRangeValidator tamanhoPlaca = new LengthRangeValidator();
        tamanhoPlaca.setMin(8);
        placa.setHint("<nbr>*</nbr>");
        placa.setValidators(tamanhoPlaca);
        //placa.setCharacterCasing(CharacterCasing.UPPER);
        placa.setWidth(430);
        placa.addChangedHandler(new ChangedHandler() {

            @Override
            public void onChanged(ChangedEvent event) {
                if (event.getValue() != null && (!placa.getDisplayValue().contains("_"))) {
                    Info.dbService.buscarPlacaJaExistente(placa.getDisplayValue(),
                            new AsyncCallback<TreeMap<String, String>>() {

                                @Override
                                public void onSuccess(TreeMap<String, String> result) {
                                    if (result != null) {
                                        //placa.redraw();
                                        placa.setHint("<nbr>" + Info.titulosMsg.get("placaJaExiste") + "</nbr>");
                                        validaPlaca = false;
                                    } else {
                                        placa.setHint("<nbr class=\"positivo\">"
                                                + Info.titulosMsg.get("placaValida") + "</nbr>");
                                        validaPlaca = true;
                                    }
                                }

                                @Override
                                public void onFailure(Throwable caught) {
                                    // TODO Auto-generated method stub

                                }
                            });
                }
                //validaPlaca = false;
            }
        });

        itemEstado.setWidth(450);
        itemEstado.setHint("<nbr>*</nbr>");
        itemEstado.setRequired(true);

        Info.dbService.buscarTodosEstados(new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

            @Override
            public void onSuccess(ArrayList<TreeMap<String, String>> result) {
                LinkedHashMap<String, String> valueMapEst = new LinkedHashMap<String, String>();
                for (TreeMap<String, String> est : result) {
                    valueMapEst.put(est.get("codEstado"), est.get("uf"));
                    //com.google.gwt.core.shared.GWT.log(est.get("codEstado") + " " + est.get("uf"));
                }
                //com.google.gwt.core.shared.GWT.log("antes do required PF");
                itemEstado.setValueMap(valueMapEst);

            }

            @Override
            public void onFailure(Throwable caught) {
                // TODO Auto-generated method stub

            }
        });
        itemEstado.setValue(String.valueOf(Info.codEstadoUnidade));
        itemEstado.setAddUnknownValues(false);
        Info.dbService.buscarCidadePorEstado(Integer.parseInt(itemEstado.getValueAsString()),
                new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

                    @Override
                    public void onSuccess(ArrayList<TreeMap<String, String>> result) {
                        LinkedHashMap<String, String> valueMapCid = new LinkedHashMap<String, String>();
                        for (TreeMap<String, String> est : result) {
                            valueMapCid.put(est.get("codCidade"), est.get("nome"));

                        }
                        itemCidade.setValueMap(valueMapCid);
                        itemCidade.setValue(String.valueOf(Info.codCidadeUnidade));
                    }

                    @Override
                    public void onFailure(Throwable caught) {
                        // TODO Auto-generated method stub

                    }
                });
        itemCidade.setWidth(450);
        itemCidade.setAddUnknownValues(false);
        itemCidade.setHint("<nbr>*</nbr>");
        // itemCidade.setAddUnknownValues(false);
        //itemCidade.setDefaultToFirstOption(true);
        itemEstado.addChangeHandler(new ChangeHandler() {

            @Override
            public void onChange(ChangeEvent event) {
                String selectedItem = (String) event.getValue();
                Info.dbService.buscarCidadePorEstado(Integer.parseInt(selectedItem),
                        new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

                            @Override
                            public void onSuccess(ArrayList<TreeMap<String, String>> result) {
                                LinkedHashMap<String, String> valueMapCid = new LinkedHashMap<String, String>();
                                for (TreeMap<String, String> est : result) {
                                    valueMapCid.put(est.get("codCidade"), est.get("nome"));
                                }
                                itemCidade.setValueMap(valueMapCid);
                                if (itemEstado.getValueAsString()
                                        .equalsIgnoreCase(String.valueOf(Info.codEstadoUnidade))) {
                                    itemCidade.setValue(String.valueOf(Info.codCidadeUnidade));
                                } else {
                                    itemCidade.setValue(result.get(0).get("codCidade"));
                                }
                            }

                            @Override
                            public void onFailure(Throwable caught) {
                                // TODO Auto-generated method stub                  
                            }
                        });
            }
        });
        itemCidade.setRequired(true);

        final TextItem chassi = new TextItem();
        chassi.setName("chassi");
        chassi.setTitle(Info.titulosMsg.get("chassi"));
        chassi.setRequired(true);
        LengthRangeValidator tamanhoChassi = new LengthRangeValidator();
        tamanhoChassi.setMin(8);
        chassi.setLength(17);
        chassi.setCharacterCasing(CharacterCasing.UPPER);
        chassi.setHint("<nbr>*</nbr>");
        chassi.setKeyPressFilter("[a-zA-Z0-9]");
        chassi.setWidth(450);
        chassi.setValidators(tamanhoChassi);
        chassi.addChangedHandler(new ChangedHandler() {

            @Override
            public void onChanged(ChangedEvent event) {
                if (chassi.getValueAsString().length() > 7) {
                    Info.dbService.buscarChassiJaExistente(chassi.getValueAsString(),
                            new AsyncCallback<TreeMap<String, String>>() {

                                @Override
                                public void onSuccess(TreeMap<String, String> result) {
                                    if (result == null) {
                                        validaChassi = true;
                                        GWT.log("Valida chassi!!!" + validaChassi);
                                    } else {
                                        validaChassi = false;
                                        GWT.log("Valida chassi!!!" + validaChassi);
                                    }

                                }

                                @Override
                                public void onFailure(Throwable caught) {
                                    // TODO Auto-generated method stub

                                }
                            });
                }

            }
        });
        final TextItem fabricante = new TextItem();
        fabricante.setName("fabricante");
        fabricante.setTitle(Info.titulosMsg.get("fabricante"));
        fabricante.setRequired(true);
        fabricante.setHint("<nbr>*</nbr>");
        fabricante.setCharacterCasing(CharacterCasing.UPPER);
        fabricante.setKeyPressFilter("[a-zA-Z?? 0-9]");
        fabricante.setWidth(450);

        final TextItem modelo = new TextItem();
        modelo.setName("modelo");
        modelo.setTitle(Info.titulosMsg.get("modelo"));
        modelo.setRequired(true);
        modelo.setHint("<nbr>*</nbr>");
        modelo.setCharacterCasing(CharacterCasing.UPPER);
        modelo.setKeyPressFilter("[a-zA-Z?? 0-9]");
        modelo.setWidth(450);

        final TextItem ano = new TextItem();
        ano.setName("ano");
        ano.setTitle(Info.titulosMsg.get("ano"));
        ano.setMask("####/####");
        ano.setMaskSaveLiterals(true);
        ano.setRequired(true);
        ano.setHint("<nbr>*</nbr>");
        ano.setCharacterCasing(CharacterCasing.UPPER);
        ano.setKeyPressFilter("[0-9 /]");
        ano.setWidth(450);

        final ComboBoxItem tipoVeiculo = new ComboBoxItem();
        tipoVeiculo.setAddUnknownValues(false);
        tipoVeiculo.setTitle(Info.titulosMsg.get("tipoVeiculo"));
        tipoVeiculo.setName("tipoVeiculo");
        Info.dbService.buscarTodosTipoDeVeiculo(new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

            @Override
            public void onFailure(Throwable caught) {
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }

            @Override
            public void onSuccess(ArrayList<TreeMap<String, String>> result) {
                LinkedHashMap<String, String> tipoVeiculos = new LinkedHashMap<>();
                if (result != null) {
                    for (TreeMap<String, String> tv : result) {
                        tipoVeiculos.put(tv.get("codTipo"), tv.get("descricao"));
                    }
                    tipoVeiculo.setValueMap(tipoVeiculos);
                    tipoVeiculo.setValue(result.get(0).get("codTipo"));
                    buscarMarcas(Integer.parseInt(result.get(0).get("codTipo")));
                } else {
                    tipoVeiculos.put("0", "No h tipo de veculo");
                    tipoVeiculo.setValueMap(tipoVeiculos);
                    tipoVeiculo.setValue("0");
                }
            }
        });
        tipoVeiculo.setHint("<nbr>*</nbr>");
        tipoVeiculo.setRequired(true);
        tipoVeiculo.setWidth(450);

        final SelectItem itemIconeVeiculo = new SelectItem();
        itemIconeVeiculo.setTitle(Info.titulosMsg.get("iconeVeiculo"));
        itemIconeVeiculo.setName("iconeVeiculo");
        itemIconeVeiculo.setHint("<nbr>*</nbr>");
        itemIconeVeiculo.setRequired(true);
        itemIconeVeiculo.setWidth(450);
        itemIconeVeiculo.disable();
        final LinkedHashMap<String, String> valueMap = new LinkedHashMap<>();
        final LinkedHashMap<String, String> valueIcons = new LinkedHashMap<>();
        final LinkedHashMap<String, String> valueCaminhao = new LinkedHashMap<>();
        final LinkedHashMap<String, String> valueIconsCaminhao = new LinkedHashMap<>();
        Info.dbService.buscarTodosIcones(new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

            @Override
            public void onFailure(Throwable caught) {
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }

            @Override
            public void onSuccess(ArrayList<TreeMap<String, String>> result) {
                if (result != null) {

                    for (TreeMap<String, String> icone : result) {
                        valueMap.put(icone.get("codIcone"), icone.get("descricao"));
                        valueIcons.put(icone.get("codIcone"), icone.get("codIcone"));
                        if (icone.get("codIcone").equalsIgnoreCase("3")
                                || icone.get("codIcone").equalsIgnoreCase("4")
                                || icone.get("codIcone").equalsIgnoreCase("8")
                                || icone.get("codIcone").equalsIgnoreCase("11")
                                || icone.get("codIcone").equalsIgnoreCase("13")
                                || icone.get("codIcone").equalsIgnoreCase("15")
                                || icone.get("codIcone").equalsIgnoreCase("16")
                                || icone.get("codIcone").equalsIgnoreCase("20")
                                || icone.get("codIcone").equalsIgnoreCase("21")
                                || icone.get("codIcone").equalsIgnoreCase("22")) {
                            valueCaminhao.put(icone.get("codIcone"), icone.get("descricao"));
                            valueIconsCaminhao.put(icone.get("codIcone"), icone.get("codIcone"));
                        }
                    }
                    itemIconeVeiculo.setValueMap(valueMap);
                    itemIconeVeiculo.setValueIcons(valueIcons);
                    itemIconeVeiculo.setValue(result.get(0).get("codIcone"));

                }
            }
        });
        itemIconeVeiculo.setImageURLPrefix("../imagens/veiculos/");
        itemIconeVeiculo.setImageURLSuffix(".png");
        //itemIconeVeiculo.disable();
        itemMarca.setTitle(Info.titulosMsg.get("fabricante"));
        itemMarca.setAddUnknownValues(false);
        itemMarca.setName("itemMarca");
        itemMarca.setHint("<nbr>*</nbr>");
        itemMarca.setRequired(true);
        itemMarca.setWidth(450);

        itemMarca.addChangedHandler(new ChangedHandler() {

            @Override
            public void onChanged(ChangedEvent event) {
                String tipoSelecionado = (String) event.getValue();
                buscarModelos(Integer.parseInt(tipoSelecionado));
            }
        });

        itemModelo.setTitle(Info.titulosMsg.get("modelo"));
        itemModelo.setAddUnknownValues(false);
        itemModelo.setName("itemModelo");
        itemModelo.setHint("<nbr>*</nbr>");
        itemModelo.setRequired(true);
        itemModelo.setWidth(450);

        itemModelo.addChangedHandler(new ChangedHandler() {

            @Override
            public void onChanged(ChangedEvent event) {
                String tipoSelecionado = (String) event.getValue();
                buscarAno(Integer.parseInt(tipoSelecionado));
            }
        });

        itemAno.setTitle(Info.titulosMsg.get("ano"));
        itemAno.setAddUnknownValues(false);
        itemAno.setName("itemAno");
        itemAno.setHint("<nbr>*</nbr>");
        itemAno.setRequired(true);
        itemAno.setWidth(450);

        tipoVeiculo.addChangedHandler(new ChangedHandler() {

            @Override
            public void onChanged(ChangedEvent event) {
                String tipoSelecionado = (String) event.getValue();
                buscarMarcas(Integer.parseInt(tipoSelecionado));
                if (tipoSelecionado.equalsIgnoreCase("1")) {
                    itemIconeVeiculo.setValueMap(valueMap);
                    itemIconeVeiculo.setValueIcons(valueIcons);
                    formNovoVeiculo.showItem("itemMarca");
                    formNovoVeiculo.showItem("itemModelo");
                    formNovoVeiculo.showItem("itemAno");
                    formNovoVeiculo.hideItem("fabricante");
                    formNovoVeiculo.hideItem("modelo");
                    formNovoVeiculo.hideItem("ano");
                    itemIconeVeiculo.setValue("1");
                    itemIconeVeiculo.disable();
                } else if (tipoSelecionado.equalsIgnoreCase("2")) {
                    itemIconeVeiculo.setValueMap(valueMap);
                    itemIconeVeiculo.setValueIcons(valueIcons);
                    formNovoVeiculo.showItem("itemMarca");
                    formNovoVeiculo.showItem("itemModelo");
                    formNovoVeiculo.showItem("itemAno");
                    formNovoVeiculo.hideItem("fabricante");
                    formNovoVeiculo.hideItem("modelo");
                    formNovoVeiculo.hideItem("ano");
                    itemIconeVeiculo.setValue("2");
                    itemIconeVeiculo.enable();
                    //itemIconeVeiculo.disable();
                } else if (tipoSelecionado.equalsIgnoreCase("3")) {
                    itemIconeVeiculo.enable();
                    itemIconeVeiculo.setValueMap(valueCaminhao);
                    itemIconeVeiculo.setValueIcons(valueIconsCaminhao);
                    formNovoVeiculo.showItem("itemMarca");
                    formNovoVeiculo.showItem("itemModelo");
                    formNovoVeiculo.showItem("itemAno");
                    formNovoVeiculo.hideItem("fabricante");
                    formNovoVeiculo.hideItem("modelo");
                    formNovoVeiculo.hideItem("ano");
                    itemIconeVeiculo.setValue("3");
                } else if (tipoSelecionado.equalsIgnoreCase("4")) {
                    itemIconeVeiculo.enable();
                    itemIconeVeiculo.setValueMap(valueMap);
                    itemIconeVeiculo.setValueIcons(valueIcons);
                    formNovoVeiculo.hideItem("itemMarca");
                    formNovoVeiculo.hideItem("itemModelo");
                    formNovoVeiculo.hideItem("itemAno");
                    formNovoVeiculo.showItem("fabricante");
                    formNovoVeiculo.showItem("modelo");
                    formNovoVeiculo.showItem("ano");
                    itemIconeVeiculo.setValue("3");
                }
            }
        });
        /*final TextItem fabricante = new TextItem();
         fabricante.setName("fabricante");
         fabricante.setTitle(Info.titulosMsg.get("fabricante"));
         fabricante.setRequired(true);
         fabricante.setHint("<nbr>*</nbr>");
         fabricante.setKeyPressFilter("[a-zA-Z?? [0-9]");
         fabricante.setCharacterCasing(CharacterCasing.UPPER);
         fabricante.setWidth(450);
            
         final TextItem modelo = new TextItem();
         modelo.setName("modelo");
         modelo.setTitle(Info.titulosMsg.get("modelo"));
         modelo.setRequired(true);
         modelo.setHint("<nbr>*</nbr>");
         modelo.setKeyPressFilter("[a-zA-Z?? [0-9]");
         modelo.setCharacterCasing(CharacterCasing.UPPER);
         modelo.setWidth(450);
         final TextItem ano = new TextItem();
         ano.setName("ano");
         ano.setTitle(Info.titulosMsg.get("ano"));
         ano.setMask("####/####");
         ano.setMaskSaveLiterals(true);
         ano.setRequired(true);
         ano.setHint("<nbr>*</nbr>");
         ano.setCharacterCasing(CharacterCasing.UPPER);
         ano.setWidth(450);*/

        final TextItem cor = new TextItem();
        cor.setName("cor");
        cor.setTitle(Info.titulosMsg.get("cor"));
        cor.setCharacterCasing(CharacterCasing.UPPER);
        cor.setRequired(true);
        cor.setHint("<nbr>*</nbr>");
        cor.setKeyPressFilter("[a-zA-Z?? ]");
        cor.setWidth(450);

        final DateItem dataAdesao = new DateItem();
        dataAdesao.setTitle(Info.titulosMsg.get("dataAdesao"));
        dataAdesao.setName("dataAdesao");
        dataAdesao.setUseTextField(true);
        dataAdesao.setHint("<nbr>*</nbr>");
        dataAdesao.setUseMask(true);
        dataAdesao.setDateFormatter(DateDisplayFormat.TOEUROPEANSHORTDATE);
        dataAdesao.setRequired(true);
        dataAdesao.setWidth(450);
        dataAdesao.setDefaultValue(new Date(System.currentTimeMillis()));

        final ComboBoxItem ativo = new ComboBoxItem();
        ativo.setTitle(Info.titulosMsg.get("ativo"));
        ativo.setAddUnknownValues(false);
        ativo.setName("itemAtivo");
        LinkedHashMap<String, String> atv = new LinkedHashMap<>();
        atv.put("True", "Ativo");
        atv.put("False", "Desativado");
        ativo.setValueMap(atv);
        ativo.setDefaultToFirstOption(true);
        ativo.setHint("<nbr>*</nbr>");
        ativo.setRequired(true);
        ativo.setWidth(450);

        final TextItem desconto = new TextItem();
        desconto.setName("desconto");
        desconto.setTitle(Info.titulosMsg.get("desconto"));
        desconto.setKeyPressFilter("[0-9]");
        desconto.setValue("0,00");
        desconto.setWidth(450);
        desconto.setValue("");
        desconto.setDisabled(true);
        if (Info.usuarioLogado.containsKey("4")) {
            desconto.setDisabled(false);
        }
        desconto.addKeyPressHandler(new KeyPressHandler() {
            @Override
            public void onKeyPress(KeyPressEvent event) {
                String tecla;
                tecla = event.getKeyName();
                String aux = "";
                if (event.getCharacterValue() != null && event.getCharacterValue() >= 48
                        && event.getCharacterValue() <= 57) {
                    aux = Info.FormataMoeda(
                            (desconto.getValueAsString() != null) ? desconto.getValueAsString() : "0", ".", ",",
                            tecla);
                    flagItemValor = true;
                }
                campo = aux;
            }
        });

        final ComboBoxItem tipoCobranca = new ComboBoxItem();
        tipoCobranca.setAddUnknownValues(false);
        tipoCobranca.setTitle(Info.titulosMsg.get("tipoCobranca"));
        tipoCobranca.setName("tipoCobranca");
        Info.dbService.buscarTodosTipoCobranca(1, new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

            @Override
            public void onSuccess(ArrayList<TreeMap<String, String>> result) {
                LinkedHashMap<String, String> tpCob = new LinkedHashMap<>();
                if (result != null) {
                    for (TreeMap<String, String> tipoCob : result) {
                        tpCob.put(tipoCob.get("codTipoCobranca"), tipoCob.get("descricao"));
                    }
                    tipoCobranca.setValueMap(tpCob);
                    tipoCobranca.setValue(result.get(0).get("codTipoCobranca"));
                    numeroDeParcelas(result.get(0).get("codTipoCobranca"));
                } else {
                    tpCob.put("0", Info.titulosMsg.get("naoHaTipoCobranca"));
                    tipoCobranca.setValueMap(tpCob);
                    tipoCobranca.setValue("0");

                }
            }

            @Override
            public void onFailure(Throwable caught) {
                // TODO Auto-generated method stub

            }
        });
        tipoCobranca.setHint("<nbr>*</nbr>");
        tipoCobranca.setRequired(true);
        tipoCobranca.setWidth(450);

        final TextAreaItem itemOutraVenda = new TextAreaItem();
        itemOutraVenda.setTitle(Info.titulosMsg.get("descricao"));
        itemOutraVenda.setName("itemOutraVenda");
        itemOutraVenda.setPrintFullText(false);
        itemOutraVenda.setWidth(450);
        itemOutraVenda.setHeight(60);
        itemOutraVenda.setValue("");

        numeroParcelas.setName("numeroParcelas");
        numeroParcelas.setTitle(Info.titulosMsg.get("numeroParcela"));
        numeroParcelas.setMultiple(true);
        numeroParcelas.setHint("<nbr>*</nbr>");
        numeroParcelas.setRequired(true);
        numeroParcelas.setWidth(450);
        numeroParcelas.setMultipleAppearance(MultipleAppearance.GRID);
        numeroParcelas.setHeight(100);

        tipoCobranca.addChangeHandler(new ChangeHandler() {

            @Override
            public void onChange(ChangeEvent event) {
                String selectedItem = (String) event.getValue();
                if (selectedItem.equalsIgnoreCase("6") || selectedItem.equalsIgnoreCase("7")) {
                    formNovoVeiculo.hideItem("numeroParcelas");
                    numeroParcelas.setRequired(false);
                    formNovoVeiculo.showItem("itemOutraVenda");
                    itemOutraVenda.setRequired(true);
                } else {
                    formNovoVeiculo.showItem("numeroParcelas");
                    numeroParcelas.setRequired(true);
                    formNovoVeiculo.hideItem("itemOutraVenda");
                    itemOutraVenda.setRequired(false);
                    numeroDeParcelas(selectedItem);
                }
            }
        });
        final TextAreaItem observacoes = new TextAreaItem();
        observacoes.setTitle(Info.titulosMsg.get("observacoes"));
        observacoes.setName("observacoes");
        observacoes.setPrintFullText(false);
        observacoes.setWidth(450);
        observacoes.setHeight(60);
        observacoes.setValue("");

        itemPessoasAutorizadas = new SelectItem();
        itemPessoasAutorizadas.setTitle("Pessoas autorizadas");
        itemPessoasAutorizadas.setName("pessoasAutorizadas");
        itemPessoasAutorizadas.setMultiple(true);
        itemPessoasAutorizadas.setMultipleAppearance(MultipleAppearance.PICKLIST);
        itemPessoasAutorizadas.setTooltip("Pessoas autorizadas a rastrear os veculos do cliente");
        Info.dbService.buscarPessoasAutorizadasPorCliente(codigoCliente,
                new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

                    @Override
                    public void onFailure(Throwable caught) {
                        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
                    }

                    @Override
                    public void onSuccess(ArrayList<TreeMap<String, String>> result) {
                        LinkedHashMap<String, String> pessoasAutorizadas = new LinkedHashMap<>();
                        if (result != null) {
                            arrayPessoasAutorizadas = result;
                            GWT.log(" " + arrayPessoasAutorizadas);
                            TreeMap<String, String> pesAux = new TreeMap<String, String>();
                            for (TreeMap<String, String> pes : result) {
                                if (pesAux.get(pes.get("codPessoa")) == null) {
                                    //com.google.gwt.core.client.GWT.log("NOVO codPessoa: "+pes.get("codPessoa")); 
                                    pessoasAutorizadas.put(pes.get("codPessoa"), pes.get("nome"));
                                    pesAux.put(pes.get("codPessoa"), pes.get("codPessoa"));
                                }
                            }
                            itemPessoasAutorizadas.setValueMap(pessoasAutorizadas);
                            itemPessoasAutorizadas.setValue(result.get(0).get("codPessoa"));
                            codPessoaAutorizada = Integer.parseInt(result.get(0).get("codPessoa"));
                            TreeMap<String, String> pAux = new TreeMap<>();
                            for (TreeMap<String, String> p : result) {
                                if (Integer.parseInt(p.get("codPessoa")) == codPessoaAutorizada
                                        && !pAux.containsKey(p.get("codPessoa"))) {
                                    Record registro = new Record();
                                    registro.setAttribute("codigoInterface", Integer.parseInt(p.get("codPessoa")));
                                    registro.setAttribute("codigo", Integer.parseInt(p.get("codPessoa")));
                                    registro.setAttribute("nomePesAut", p.get("nome"));
                                    registro.setAttribute("telefoneMas",
                                            (p.get("telefone") == null || p.get("telefone").equalsIgnoreCase(""))
                                                    ? "Sem informao"
                                                    : Info.formataTelefone(p.get("telefone")));
                                    registro.setAttribute("telefone",
                                            (p.get("telefone") == null || p.get("telefone").equalsIgnoreCase(""))
                                                    ? "Sem informao"
                                                    : p.get("telefone"));
                                    registro.setAttribute("senha", p.get("senha"));
                                    registro.setAttribute("senhaMascara", p.get("senha"));
                                    registro.setAttribute("descricaoPesAut",
                                            (p.get("descricao") == null) ? "Sem informao" : p.get("descricao"));
                                    listPesAut.addData(registro);
                                    pAux.put(p.get("codPessoa"), p.get("codPessoa"));
                                }
                            }
                        } else {
                            pessoasAutorizadas.put("0", "No h pessoas autorizadas a rastrear");
                            itemPessoasAutorizadas.setValueMap(pessoasAutorizadas);
                            itemPessoasAutorizadas.setValue("0");
                            codPessoaAutorizada = 0;
                            itemPessoasAutorizadas.setDisabled(true);
                        }
                    }
                });
        itemPessoasAutorizadas.setWidth(450);
        itemPessoasAutorizadas.addChangedHandler(new ChangedHandler() {

            @Override
            public void onChanged(ChangedEvent event) {
                GWT.log("Evento : " + event.getValue());
                if (event.getValue() == null) {
                    listPesAut.setData(new Record[0]);
                    String pessoasAutorizadosRastrear[] = itemPessoasAutorizadas.getValues();
                    TreeMap<String, String> pAux = new TreeMap<>();
                    for (int i = 0; i < arrayPessoasAutorizadas.size(); i++) {
                        // for (int j = 0; j < pessoasAutorizadosRastrear.length; j++) {
                        if (Integer.parseInt(arrayPessoasAutorizadas.get(i).get("codPessoa")) < 0
                                && !pAux.containsKey(arrayPessoasAutorizadas.get(i).get("codPessoa"))) {
                            Record registro = new Record();
                            registro.setAttribute("codigoInterface",
                                    Integer.parseInt(arrayPessoasAutorizadas.get(i).get("codPessoa")));
                            registro.setAttribute("codigo",
                                    (Integer.parseInt(arrayPessoasAutorizadas.get(i).get("codPessoa")) < 0) ? 0
                                            : Integer.parseInt(arrayPessoasAutorizadas.get(i).get("codPessoa")));
                            registro.setAttribute("nomePesAut", arrayPessoasAutorizadas.get(i).get("nome"));
                            registro.setAttribute("telefoneMas",
                                    (arrayPessoasAutorizadas.get(i).get("telefone") == null
                                            || arrayPessoasAutorizadas.get(i).get("telefone").equalsIgnoreCase(""))
                                                    ? "Sem informao"
                                                    : Info.formataTelefone(
                                                            arrayPessoasAutorizadas.get(i).get("telefone")));
                            registro.setAttribute("telefone",
                                    (arrayPessoasAutorizadas.get(i).get("telefone") == null
                                            || arrayPessoasAutorizadas.get(i).get("telefone").equalsIgnoreCase(""))
                                                    ? "Sem informao"
                                                    : arrayPessoasAutorizadas.get(i).get("telefone"));
                            registro.setAttribute("senha", arrayPessoasAutorizadas.get(i).get("senha"));
                            registro.setAttribute("senhaMascara", arrayPessoasAutorizadas.get(i).get("senha"));
                            registro.setAttribute("descricaoPesAut",
                                    (arrayPessoasAutorizadas.get(i).get("descricao") == null) ? "Sem informao"
                                            : arrayPessoasAutorizadas.get(i).get("descricao"));
                            listPesAut.addData(registro);
                            pAux.put(arrayPessoasAutorizadas.get(i).get("codPessoa"),
                                    arrayPessoasAutorizadas.get(i).get("codPessoa"));
                        }
                        //}

                    }
                } else {
                    listPesAut.setData(new Record[0]);
                    String pessoasAutorizadosRastrear[] = itemPessoasAutorizadas.getValues();
                    TreeMap<String, String> pAux = new TreeMap<>();
                    for (int i = 0; i < arrayPessoasAutorizadas.size(); i++) {
                        for (int j = 0; j < pessoasAutorizadosRastrear.length; j++) {
                            if (pessoasAutorizadosRastrear[j]
                                    .equalsIgnoreCase(arrayPessoasAutorizadas.get(i).get("codPessoa"))
                                    && !pAux.containsKey(arrayPessoasAutorizadas.get(i).get("codPessoa"))
                                    || Integer.parseInt(arrayPessoasAutorizadas.get(i).get("codPessoa")) < 0
                                            && !pAux.containsKey(arrayPessoasAutorizadas.get(i).get("codPessoa"))) {
                                Record registro = new Record();
                                registro.setAttribute("codigoInterface",
                                        Integer.parseInt(arrayPessoasAutorizadas.get(i).get("codPessoa")));
                                registro.setAttribute("codigo",
                                        (Integer.parseInt(arrayPessoasAutorizadas.get(i).get("codPessoa")) < 0) ? 0
                                                : Integer
                                                        .parseInt(arrayPessoasAutorizadas.get(i).get("codPessoa")));
                                registro.setAttribute("nomePesAut", arrayPessoasAutorizadas.get(i).get("nome"));
                                registro.setAttribute("telefoneMas",
                                        (arrayPessoasAutorizadas.get(i).get("telefone") == null
                                                || arrayPessoasAutorizadas.get(i).get("telefone")
                                                        .equalsIgnoreCase("")) ? "Sem informao"
                                                                : Info.formataTelefone(arrayPessoasAutorizadas
                                                                        .get(i).get("telefone")));
                                registro.setAttribute("telefone",
                                        (arrayPessoasAutorizadas.get(i).get("telefone") == null
                                                || arrayPessoasAutorizadas.get(i).get("telefone")
                                                        .equalsIgnoreCase("")) ? "Sem informao"
                                                                : arrayPessoasAutorizadas.get(i).get("telefone"));
                                registro.setAttribute("senha", arrayPessoasAutorizadas.get(i).get("senha"));
                                registro.setAttribute("senhaMascara", arrayPessoasAutorizadas.get(i).get("senha"));
                                registro.setAttribute("descricaoPesAut",
                                        (arrayPessoasAutorizadas.get(i).get("descricao") == null)
                                                ? "Sem informao"
                                                : arrayPessoasAutorizadas.get(i).get("descricao"));
                                listPesAut.addData(registro);
                                pAux.put(arrayPessoasAutorizadas.get(i).get("codPessoa"),
                                        arrayPessoasAutorizadas.get(i).get("codPessoa"));
                            }
                        }

                    }
                }
            }
        });

        final SelectItem gruposCliente = new SelectItem();
        gruposCliente.setRequired(true);
        gruposCliente.setTitle(Info.titulosMsg.get("tituloGrupo"));
        gruposCliente.setName("grupoCliente");
        gruposCliente.setMultiple(true);
        gruposCliente.setMultipleAppearance(MultipleAppearance.PICKLIST);
        gruposCliente.setTooltip(Info.titulosMsg.get("primeiroGrupoObrigatorio"));
        Info.dbService.buscarGrupoPorCliente(codigoCliente,
                new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

                    @Override
                    public void onSuccess(ArrayList<TreeMap<String, String>> result) {
                        LinkedHashMap<String, String> grupo = new LinkedHashMap<>();
                        if (result != null) {
                            for (TreeMap<String, String> g : result) {
                                grupo.put(g.get("codGrupo"), g.get("nome"));
                            }
                            gruposCliente.setValueMap(grupo);
                            gruposCliente.setValue(result.get(0).get("codGrupo"));
                        } else {
                            grupo.put("0", Info.titulosMsg.get("clienteSemGrupo"));
                            gruposCliente.setValueMap(grupo);
                            gruposCliente.setValue("0");

                        }

                    }

                    @Override
                    public void onFailure(Throwable caught) {
                        // TODO Auto-generated method stub

                    }
                });
        //        gruposCliente.addChangedHandler(new ChangedHandler() {
        //
        //            @Override
        //            public void onChanged(final ChangedEvent event) {
        //
        //                Info.dbService.buscarGrupoPorCliente(codigoCliente, new AsyncCallback<ArrayList<TreeMap<String, String>>>() {
        //
        //                    @Override
        //                    public void onSuccess(ArrayList<TreeMap<String, String>> result) {
        //                        LinkedHashMap<String, String> grupo = new LinkedHashMap<>();
        //                        if (result != null) {
        //                            for (TreeMap<String, String> g : result) {
        //                                grupo.put(g.get("codGrupo"), g.get("nome"));
        //                            }
        //                            gruposCliente.setValueMap(grupo);
        //                            gruposCliente.setValue(String.valueOf(result.get(0).get("codGrupo")));
        //                            if (event.getValue() == null || (!String.valueOf(event.getValue()).contains(result.get(0).get("codGrupo")))) {
        //                                gruposCliente.redraw();
        //                                gruposCliente.setValue(String.valueOf(result.get(0).get("codGrupo")));
        //                            }
        //                        } else {
        //                            grupo.put("0", Info.titulosMsg.get("clienteSemGrupo"));
        //                            gruposCliente.setValueMap(grupo);
        //                            gruposCliente.setValue("0");
        //
        //                        }
        //
        //                    }
        //
        //                    @Override
        //                    public void onFailure(Throwable caught) {
        //                        // TODO Auto-generated method stub
        //
        //                    }
        //                });
        //
        //            }
        //        });
        gruposCliente.setHint("<nbr>*</nbr>");
        //gruposCliente.setRequired(true);
        gruposCliente.setWidth(450);
        //Componentes da Tab
        final SectionStack novoVeiculo = new SectionStack();
        //Botes
        IButton cadastrar = new IButton(Info.titulosMsg.get("tituloCadastrar"));
        cadastrar.setLayoutAlign(Alignment.CENTER);

        IButton limpar = new IButton(Info.titulosMsg.get("limpar"));
        cadastrar.setLayoutAlign(Alignment.CENTER);

        valorMensalidade.setAlign(Alignment.CENTER);
        valorMensalidade.setHeight(40);

        final SectionStackSection formSection = new SectionStackSection();
        formSection.setTitle(Info.titulosMsg.get("dadosVeiculo"));
        formSection.setItems(formNovoVeiculo, valorMensalidade);
        formSection.setExpanded(true);
        //Evento que Troca o Valor do Plano de acordo com a Escolha do Usurio
        tipoPlano.addChangedHandler(new ChangedHandler() {

            @Override
            public void onChanged(ChangedEvent event) {

                if (tipoPlano.getValueAsString().equalsIgnoreCase("1")) {
                    formNovoVeiculo.showItem("numeroParcelas");
                    numeroParcelas.setRequired(true);
                    formNovoVeiculo.hideItem("itemOutraVenda");
                    itemOutraVenda.setRequired(false);
                    tipoCobranca.redraw();
                    Info.dbService.buscarTodosTipoCobranca(Integer.parseInt(tipoPlano.getValueAsString()),
                            new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

                                @Override
                                public void onSuccess(ArrayList<TreeMap<String, String>> result) {
                                    LinkedHashMap<String, String> tpCob = new LinkedHashMap<>();
                                    if (result != null) {
                                        for (TreeMap<String, String> tipoCob : result) {
                                            tpCob.put(tipoCob.get("codTipoCobranca"), tipoCob.get("descricao"));
                                        }
                                        tipoCobranca.setValueMap(tpCob);
                                        tipoCobranca.setValue(result.get(0).get("codTipoCobranca"));
                                        numeroDeParcelas(result.get(0).get("codTipoCobranca"));
                                        if (desconto.getDisplayValue() != null
                                                && desconto.getDisplayValue().length() > 0) {
                                            double master = planoMaster
                                                    - (Double.parseDouble(desconto.getDisplayValue()
                                                            .replaceAll("\\.", "").replaceAll(",", "\\.")));
                                            valorMensalidade.redraw();
                                            valorMensalidade.setContents(
                                                    "<strong><h3>" + Info.titulosMsg.get("valorMensalidade")
                                                            + Info.formataSaldo(Info.formataDecimal(master))
                                                            + "</h3></strong>");

                                        } else {
                                            valorMensalidade.redraw();
                                            valorMensalidade.setContents(
                                                    "<strong><h3>" + Info.titulosMsg.get("valorMensalidade")
                                                            + Info.formataSaldo(Info.formataDecimal(planoMaster))
                                                            + "</h3></strong>");
                                        }
                                    } else {
                                        tpCob.put("0", Info.titulosMsg.get("naoHaTipoCobranca"));
                                        tipoCobranca.setValueMap(tpCob);
                                        tipoCobranca.setValue("0");

                                    }

                                }

                                @Override
                                public void onFailure(Throwable caught) {
                                    // TODO Auto-generated method stub

                                }
                            });
                    numeroDeParcelas(tipoCobranca.getValueAsString());
                    valorMensalidade.setContents("<strong><h3>" + Info.titulosMsg.get("valorMensalidade")
                            + Info.formataSaldo(Info.formataDecimal(planoMaster)) + "</h3></strong>");
                } else {
                    formNovoVeiculo.showItem("numeroParcelas");
                    numeroParcelas.setRequired(false);
                    formNovoVeiculo.hideItem("itemOutraVenda");
                    itemOutraVenda.setRequired(true);
                    tipoCobranca.redraw();
                    Info.dbService.buscarTodosTipoCobranca(Integer.parseInt(tipoPlano.getValueAsString()),
                            new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

                                @Override
                                public void onSuccess(ArrayList<TreeMap<String, String>> result) {
                                    LinkedHashMap<String, String> tpCob = new LinkedHashMap<>();
                                    if (result != null) {
                                        for (TreeMap<String, String> tipoCob : result) {
                                            tpCob.put(tipoCob.get("codTipoCobranca"), tipoCob.get("descricao"));
                                        }
                                        tipoCobranca.setValueMap(tpCob);
                                        tipoCobranca.setValue(result.get(0).get("codTipoCobranca"));
                                        numeroDeParcelas(result.get(0).get("codTipoCobranca"));
                                        if (desconto.getDisplayValue() != null
                                                && desconto.getDisplayValue().length() > 0) {
                                            double comodato = planoComodato
                                                    - (Double.parseDouble(desconto.getDisplayValue()
                                                            .replaceAll("\\.", "").replaceAll(",", "\\.")));
                                            valorMensalidade.redraw();
                                            valorMensalidade.setContents(
                                                    "<strong><h3>" + Info.titulosMsg.get("valorMensalidade")
                                                            + Info.formataSaldo(Info.formataDecimal(comodato))
                                                            + "</h3></strong>");

                                        } else {
                                            valorMensalidade.redraw();
                                            valorMensalidade.setContents(
                                                    "<strong><h3>" + Info.titulosMsg.get("valorMensalidade")
                                                            + Info.formataSaldo(Info.formataDecimal(planoComodato))
                                                            + "</h3></strong>");
                                        }

                                    } else {
                                        tpCob.put("0", Info.titulosMsg.get("naoHaTipoCobranca"));
                                        tipoCobranca.setValueMap(tpCob);
                                        tipoCobranca.setValue("0");

                                    }

                                }

                                @Override
                                public void onFailure(Throwable caught) {
                                    // TODO Auto-generated method stub

                                }
                            });
                    numeroDeParcelas(tipoCobranca.getValueAsString());
                    valorMensalidade.setContents("<strong><h3>" + Info.titulosMsg.get("valorMensalidade")
                            + Info.formataSaldo(Info.formataDecimal(planoComodato)) + "</h3></strong>");
                }
            }
        });
        //Pega o Valor de desconto digitado pelo Usurio
        desconto.addChangedHandler(new ChangedHandler() {

            @Override
            public void onChanged(ChangedEvent event) {

                if (flagItemValor) {
                    desconto.setValue(campo);
                }
                flagItemValor = false;
                if (desconto.getDisplayValue() != null && desconto.getDisplayValue().length() > 0) {
                    if (tipoPlano.getValueAsString().equals("1")) {
                        double master = planoMaster - (Double.parseDouble(
                                desconto.getDisplayValue().replaceAll("\\.", "").replaceAll(",", "\\.")));
                        valorMensalidade.redraw();
                        valorMensalidade.setContents("<strong><h3>" + Info.titulosMsg.get("valorMensalidade")
                                + Info.formataSaldo(Info.formataDecimal(master)) + "</h3></strong>");

                    } else {
                        double comodato = planoComodato - (Double.parseDouble(
                                desconto.getDisplayValue().replaceAll("\\.", "").replaceAll(",", "\\.")));
                        valorMensalidade.redraw();
                        valorMensalidade.setContents("<strong><h3>" + Info.titulosMsg.get("valorMensalidade")
                                + Info.formataSaldo(Info.formataDecimal(comodato)) + "</h3></strong>");

                    }
                } else {
                    if (tipoPlano.getValueAsString().equals("1")) {
                        valorMensalidade.redraw();
                        valorMensalidade.setContents("<strong><h3>" + Info.titulosMsg.get("valorMensalidade")
                                + Info.formataSaldo(Info.formataDecimal(planoMaster)) + "</h3></strong>");
                    } else {
                        valorMensalidade.redraw();
                        valorMensalidade.setContents("<strong><h3>" + Info.titulosMsg.get("valorMensalidade")
                                + Info.formataSaldo(Info.formataDecimal(planoComodato)) + "</h3></strong>");

                    }
                }
            }

        });
        // Inicio dos Botes de Adicionar e Remover        
        addpadLig.setSrc("[SKIN]actions/add.png");
        addpadLig.setSize(16);
        addpadLig.setShowFocused(false);
        addpadLig.setShowRollOver(false);
        addpadLig.setShowDown(false);
        addpadLig.setTooltip(Info.titulosMsg.get("adicionarPadraoLigacao"));

        final ImgButton addPesAut = new ImgButton();
        addPesAut.setSrc("[SKIN]actions/add.png");
        addPesAut.setSize(16);
        addPesAut.setShowFocused(false);
        addPesAut.setShowRollOver(false);
        addPesAut.setShowDown(false);
        addPesAut.setTooltip(Info.titulosMsg.get("adicionarPessoaAutorizada"));
        // FIm dos Botes de Adicionar
        //List Grid Padro de Ligao
        ListGridField corFio = new ListGridField("corFio", Info.titulosMsg.get("corFio"));
        corFio.setAlign(Alignment.CENTER);
        //Coluna sinal
        ListGridField sinal = new ListGridField("sinal", Info.titulosMsg.get("sinal"));
        sinal.setAlign(Alignment.CENTER);
        sinal.setHidden(true);
        ListGridField sinalMas = new ListGridField("sinalMas", Info.titulosMsg.get("sinal"));
        sinalMas.setAlign(Alignment.CENTER);
        //coluna Padro Veiculo
        ListGridField padrao = new ListGridField("padrao", Info.titulosMsg.get("padrao"));
        padrao.setAlign(Alignment.CENTER);
        padrao.setHidden(true);
        ListGridField padraoMas = new ListGridField("padraoMas", Info.titulosMsg.get("padrao"));
        padraoMas.setAlign(Alignment.CENTER);
        //coluna funo
        ListGridField funcao = new ListGridField("funcao", Info.titulosMsg.get("funcao"));
        funcao.setAlign(Alignment.CENTER);
        funcao.setHidden(true);
        ListGridField funcaoMas = new ListGridField("funcaoMas", Info.titulosMsg.get("funcao"));
        funcaoMas.setAlign(Alignment.CENTER);
        //coluna ativo
        ListGridField fieldAtivo = new ListGridField("fieldAtivo", Info.titulosMsg.get("ativo"));
        fieldAtivo.setAlign(Alignment.CENTER);
        fieldAtivo.setHidden(true);
        ListGridField fieldAtivoMas = new ListGridField("fieldAtivoMas", Info.titulosMsg.get("ativo"));
        fieldAtivoMas.setAlign(Alignment.CENTER);
        //coluna descricao
        ListGridField descricaoPl = new ListGridField("descricaoPl", Info.titulosMsg.get("descricao"));
        descricaoPl.setAlign(Alignment.CENTER);
        //cria grid Padro de Ligao
        listPadLig.setCanPickFields(false);
        listPadLig.setFields(corFio, sinalMas, sinal, padraoMas, padrao, funcaoMas, funcao, fieldAtivoMas,
                fieldAtivo, descricaoPl);
        //listPadLig.setCanRemoveRecords(true);
        listPadLig.setSelectionType(SelectionStyle.SINGLE);

        addpadLig.addClickHandler(new ClickHandler() {

            @Override
            public void onClick(ClickEvent event) {
                if (formNovoVeiculo.validate()) {
                    NovoPadraoLigacao novPadLig = new NovoPadraoLigacao(listPadLig);
                    novPadLig.setAnimateTime(1200);
                    novPadLig.animateShow(AnimationEffect.FADE);
                }
            }
        });
        //cria a sections email que ir guardar a grid de Padro de Ligao
        final SectionStackSection padLigSection = new SectionStackSection();
        padLigSection.setTitle(Info.titulosMsg.get("padraoDeLigacao"));
        padLigSection.setItems(listPadLig);
        //padLigSection.setControls(addpadLig);
        padLigSection.setExpanded(true);
        //criando coluna para grid Pessoa autorizada
        ListGridField codigoPesInterface = new ListGridField("codigoInterface",
                Info.titulosMsg.get("tituloCodigo"));
        codigoPesInterface.setHidden(true);
        codigoPesInterface.setAlign(Alignment.CENTER);
        ListGridField codigoPes = new ListGridField("codigo", Info.titulosMsg.get("tituloCodigo"));
        //codigoPes.setRequired(true);
        codigoPes.setHidden(true);
        codigoPes.setAlign(Alignment.CENTER);
        ListGridField nomePesAut = new ListGridField("nomePesAut", Info.titulosMsg.get("tituloNome"));
        //nomePesAut.setRequired(true);
        nomePesAut.setAlign(Alignment.CENTER);
        nomePesAut.setWidth(400);
        //pega o valor do nmero do telefone
        ListGridField telefonePesAutMas = new ListGridField("telefoneMas", Info.titulosMsg.get("tituloNumero"));
        telefonePesAutMas.setAlign(Alignment.CENTER);
        ListGridField senhaPesAut = new ListGridField("senha", Info.titulosMsg.get("tituloSenha"));
        senhaPesAut.setAlign(Alignment.CENTER);
        senhaPesAut.setHidden(true);
        ListGridField senhaPesAutMascara = new ListGridField("senhaMascara", Info.titulosMsg.get("tituloSenha"));
        senhaPesAutMascara.setAlign(Alignment.CENTER);
        ListGridField telefonePesAut = new ListGridField("telefone", Info.titulosMsg.get("tituloNumero"));
        telefonePesAut.setAlign(Alignment.CENTER);
        telefonePesAut.setHidden(true);
        //pega o valor da descrio
        ListGridField descPesAut = new ListGridField("descricaoPesAut", Info.titulosMsg.get("descricao"));
        descPesAut.setAlign(Alignment.CENTER);
        ListGridField excluirPesAut = new ListGridField("excluir", "");
        excluirPesAut.setAlign(Alignment.CENTER);
        excluirPesAut.setWidth(20);
        //adicionando na lista grid de Pessoa Autorizada
        listPesAut.setFields(codigoPesInterface, codigoPes, nomePesAut, telefonePesAutMas, telefonePesAut,
                senhaPesAut, senhaPesAutMascara, descPesAut, excluirPesAut);
        //listTelefone.setCanPickFields(false);
        //listPesAut.setCanRemoveRecords(true);
        listPesAut.setSortDirection(SortDirection.ASCENDING);
        listPesAut.setSortField("codigo");
        listPesAut.setCanSort(false);
        listPesAut.setShowRecordComponents(true);
        listPesAut.setShowRecordComponentsByCell(true);
        listPesAut.setShowAllRecords(true);
        listPesAut.setCanResizeFields(true);
        listPesAut.setSelectionType(SelectionStyle.SINGLE);
        //criando seo Pessoa Autorizada
        final SectionStackSection pesAutSection = new SectionStackSection();
        pesAutSection.setTitle(Info.titulosMsg.get("pessoaAutorizada"));
        pesAutSection.setItems(listPesAut);
        pesAutSection.setControls(addPesAut);
        pesAutSection.setExpanded(true);
        //boto para adicionar nova linha na ListGrid telefone
        addPesAut.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                if (formNovoVeiculo.validate()) {
                    //GWT.log("Index : " + codPessoaAutorizada);
                    NovaPessoaAutorizada novaPesAut = new NovaPessoaAutorizada(listPesAut, arrayPessoasAutorizadas);
                    novaPesAut.setAnimateTime(1200);
                    novaPesAut.animateShow(AnimationEffect.FADE);
                }
            }
        });
        //Desenha o formulrio com todos os itens na tab Novo Cliente.
        formNovoVeiculo.setItemLayout(FormLayoutType.TABLE);
        formNovoVeiculo.setTitleOrientation(TitleOrientation.TOP);
        formNovoVeiculo.setFields(tipoPlano, cliente, equipamento, instalador, indicado, placa, itemEstado,
                itemCidade, chassi, tipoVeiculo, itemIconeVeiculo, itemMarca, fabricante, itemModelo, modelo,
                itemAno, ano, cor, dataAdesao, ativo, desconto, tipoCobranca, numeroParcelas, itemOutraVenda,
                observacoes, gruposCliente, itemConfiguracao, itemPessoasAutorizadas);

        formNovoVeiculo.hideItem("itemOutraVenda");
        formNovoVeiculo.hideItem("fabricante");
        formNovoVeiculo.hideItem("modelo");
        formNovoVeiculo.hideItem("ano");

        novoVeiculo.setSections(formSection, pesAutSection, padLigSection);
        novoVeiculo.setVisibilityMode(VisibilityMode.MULTIPLE);
        novoVeiculo.setAnimateSections(true);
        novoVeiculo.setWidth100();
        novoVeiculo.setHeight100();
        novoVeiculo.setOverflow(Overflow.VISIBLE);

        //Evento Clique do boto Limpar
        limpar.addClickHandler(new ClickHandler() {

            @Override
            public void onClick(ClickEvent event) {

                formNovoVeiculo.markForRedraw();
                indicado.clearValue();
                LinkedHashMap<String, String> valueMapVeic = new LinkedHashMap<>();
                valueMapVeic.put("0", Info.titulosMsg.get("naoHaIndicacao"));
                indicado.setValueMap(valueMapVeic);
                placa.clearValue();
                chassi.clearValue();
                /*fabricante.clearValue();
                 modelo.clearValue();                
                 ano.clearValue();*/
                tipoVeiculo.setValue("1");
                buscarMarcas(1);
                cor.clearValue();
                dataAdesao.clearValue();
                desconto.setValue("0,00");
                tipoPlano.clearValue();
                equipamento.clearValue();
                instalador.clearValue();
                ativo.clearValue();
                listPadLig.selectAllRecords();
                listPadLig.removeSelectedData();
                listPesAut.selectAllRecords();
                listPesAut.removeSelectedData();
                // limpou o cadastro de veculo //
                Info.registrarLog(Integer.parseInt(Info.usuarioLogado.get("codUsuario")), 89,
                        new Timestamp(System.currentTimeMillis()), "");
            }
        });

        cadastrar.addClickHandler(new ClickHandler() {

            @Override
            public void onClick(ClickEvent event) {

                //if (formNovoVeiculo.validate() && Integer.parseInt(instalador.getValueAsString()) > 0 && validaPlaca && validaChassi && Integer.parseInt(equipamento.getValueAsString()) != 0 && !listPadLig.getRecordList().isEmpty() && !indicado.getValueAsString().equalsIgnoreCase("REP")) {
                GWT.log("LINHA 01 addClickHandler");
                if (formNovoVeiculo.validate() && Integer.parseInt(instalador.getValueAsString()) > 0 && validaPlaca
                        && validaChassi && !indicado.getValueAsString().equalsIgnoreCase("REP")) {
                    GWT.log("LINHA 02 addClickHandler");
                    TreeMap<String, String> veiculo = new TreeMap<>();
                    ArrayList<TreeMap<String, String>> padroesLigacao = new ArrayList<>();
                    ArrayList<TreeMap<String, String>> pesssoasAut = new ArrayList<>();
                    GWT.log("LINHA 03 addClickHandler");
                    veiculo.put("codPlano", tipoPlano.getValueAsString());
                    veiculo.put("codCliente", cliente.getValueAsString());
                    veiculo.put("codEquipamento",
                            equipamento.getValueAsString().substring(
                                    equipamento.getValueAsString().indexOf(";") + 1,
                                    equipamento.getValueAsString().length()));
                    GWT.log("LINHA 04 addClickHandler");
                    veiculo.put("codFuncionario", instalador.getValueAsString());
                    veiculo.put("codVeiculoIndicador", indicado.getValueAsString());
                    veiculo.put("placa", placa.getValueAsString());
                    veiculo.put("cidadeCodCidade", itemCidade.getValueAsString());
                    veiculo.put("chassi", chassi.getValueAsString());
                    veiculo.put("configuracao", itemConfiguracao.getValueAsString());
                    ///////////////////////////////////////////////////////////
                    veiculo.put("tipo", tipoVeiculo.getValueAsString());
                    veiculo.put("icone", itemIconeVeiculo.getValueAsString());
                    if (tipoVeiculo.getValueAsString().equalsIgnoreCase("4")) {
                        veiculo.put("fabricante", fabricante.getValueAsString());
                        veiculo.put("modelo", modelo.getValueAsString());
                        veiculo.put("ano", ano.getValueAsString());
                    } else {
                        veiculo.put("fabricante", itemMarca.getValueAsString());
                        veiculo.put("modelo", itemModelo.getValueAsString());
                        veiculo.put("ano", itemAno.getValueAsString());
                    }
                    ////////////////////////////////////////////////////////////
                    veiculo.put("cor", cor.getValueAsString());
                    Date datadeAdesao = dataAdesao.getValueAsDate();
                    veiculo.put("ativo", ativo.getValueAsString());
                    veiculo.put("desconto",
                            (desconto.getDisplayValue() == null || desconto.getDisplayValue().equalsIgnoreCase("")
                                    || desconto.getDisplayValue().equalsIgnoreCase("00,00")) ? "0"
                                            : desconto.getDisplayValue().replaceAll("\\.", "").replaceAll(",",
                                                    "\\."));
                    if (tipoCobranca.getValueAsString().equalsIgnoreCase("6")
                            || tipoCobranca.getValueAsString().equalsIgnoreCase("7")) {
                        veiculo.put("tipoVenda", tipoCobranca.getValueAsString());
                        veiculo.put("ParcelaPagamentoCodParcela", itemOutraVenda.getValueAsString());
                    } else {
                        veiculo.put("tipoVenda", tipoCobranca.getValueAsString());
                        veiculo.put("ParcelaPagamentoCodParcela", numeroParcelas.getValueAsString());
                    }
                    veiculo.put("observacoes", observacoes.getValueAsString());

                    if (!listPadLig.getRecordList().isEmpty()) {

                        ListGridRecord padraos[] = listPadLig.getRecords();
                        for (int i = 0; i < padraos.length; i++) {
                            TreeMap<String, String> treeMapPadLig = new TreeMap<String, String>();
                            treeMapPadLig.put("corFio", padraos[i].getAttribute("corFio"));
                            treeMapPadLig.put("sinal", padraos[i].getAttribute("sinal"));
                            treeMapPadLig.put("padrao", padraos[i].getAttribute("padrao"));
                            treeMapPadLig.put("funcao", padraos[i].getAttribute("funcao"));
                            treeMapPadLig.put("ativo", padraos[i].getAttribute("fieldAtivo"));
                            treeMapPadLig.put("descricao",
                                    (padraos[i].getAttribute("descricaoPl") == null
                                            || padraos[i].getAttribute("descricaoPl").equalsIgnoreCase("")
                                            || padraos[i].getAttribute("descricaoPl")
                                                    .equalsIgnoreCase("Sem informao")) ? null
                                                            : padraos[i].getAttribute("descricaoPl"));
                            padroesLigacao.add(treeMapPadLig);
                        }
                    }

                    if (!listPesAut.getRecordList().isEmpty()) {
                        ListGridRecord pessoa[] = listPesAut.getRecords();
                        for (int i = 0; i < pessoa.length; i++) {
                            TreeMap<String, String> treeMapPesAut = new TreeMap<>();
                            //GWT.log("Cdigo: " + pessoa[i].getAttributeAsString("codigo"));
                            treeMapPesAut.put("codigo", pessoa[i].getAttributeAsString("codigo"));
                            treeMapPesAut.put("nome", pessoa[i].getAttributeAsString("nomePesAut"));
                            treeMapPesAut.put("telefone",
                                    (pessoa[i].getAttributeAsString("telefone")
                                            .equalsIgnoreCase("Sem informao")) ? null
                                                    : pessoa[i].getAttributeAsString("telefone"));
                            treeMapPesAut.put("senha", pessoa[i].getAttribute("senha"));
                            treeMapPesAut.put("descricao",
                                    (pessoa[i].getAttributeAsString("descricaoPesAut") == null
                                            || pessoa[i].getAttributeAsString("descricaoPesAut")
                                                    .equalsIgnoreCase("")
                                            || pessoa[i].getAttributeAsString("descricaoPesAut")
                                                    .equalsIgnoreCase("Sem informao")) ? null
                                                            : pessoa[i].getAttribute("descricaoPesAut"));
                            pesssoasAut.add(treeMapPesAut);
                        }
                    }
                    int codGrupo = Integer.parseInt(Info.usuarioLogado.get("codGrupo"));
                    String gruposAutorizadosRastrear[] = gruposCliente.getValues();
                    //GWT.log("Veculo: " + veiculo);
                    Info.dbService.cadastrarVeiculo(codGrupo, gruposAutorizadosRastrear, veiculo, datadeAdesao,
                            padroesLigacao, pesssoasAut, new AsyncCallback<Boolean>() {

                                @Override
                                public void onFailure(Throwable caught) {
                                    throw new UnsupportedOperationException(
                                            "Not supported yet. Cadastrar Veculo"); //To change body of generated methods, choose Tools | Templates.
                                }

                                @Override
                                public void onSuccess(Boolean result) {
                                    if (result) {
                                        GWT.log("RESULT: " + result);
                                        if (Integer.parseInt(Info.usuarioLogado.get("codPerfil")) == 2
                                                || Integer.parseInt(Info.usuarioLogado.get("codPerfil")) == 3) {
                                            Info.dbService.buscarGrupoDoUsuario(
                                                    Integer.parseInt(Info.usuarioLogado.get("codUsuario")),
                                                    Integer.parseInt(Info.usuarioLogado.get("codPerfil")),
                                                    new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

                                                        @Override
                                                        public void onFailure(Throwable caught) {
                                                            throw new UnsupportedOperationException(
                                                                    "Not supported yet."); //To change body of generated methods, choose Tools | Templates.
                                                        }

                                                        @Override
                                                        public void onSuccess(
                                                                ArrayList<TreeMap<String, String>> result) {
                                                            if (result != null) {
                                                                TabGerenciaGrupoMaster.arrayListGrupos = result;
                                                                TabGerenciaGrupoMaster.listGrupo.redraw();
                                                                TabGerenciaGrupoMaster.listGrupo
                                                                        .setData(new Record[0]);
                                                                TreeMap<String, String> mapAux = new TreeMap<>();
                                                                for (TreeMap<String, String> grupo : result) {
                                                                    if (mapAux.get(grupo.get("codGrupo")) == null) {
                                                                        Record registro = new Record();
                                                                        registro.setAttribute("codigo", Integer
                                                                                .parseInt(grupo.get("codGrupo")));
                                                                        registro.setAttribute("nome",
                                                                                grupo.get("nomeGrupo"));
                                                                        registro.setAttribute("descricao",
                                                                                grupo.get("descricaoGrupo"));
                                                                        registro.setAttribute("principal",
                                                                                Boolean.parseBoolean(
                                                                                        grupo.get("principal")));
                                                                        TabGerenciaGrupoMaster.listGrupo
                                                                                .addData(registro);
                                                                        mapAux.put(grupo.get("codGrupo"),
                                                                                grupo.get("codGrupo"));
                                                                    }
                                                                }
                                                            } else {
                                                                SC.warn("ERRO ao listar grupos de veculos do usurio!");
                                                            }
                                                        }
                                                    });
                                        }
                                        Info.dbService.buscarVeiculoPorCliente(codigoCliente,
                                                new AsyncCallback<TreeMap<String, ArrayList<TreeMap<String, String>>>>() {

                                                    @Override
                                                    public void onFailure(Throwable caught) {
                                                        throw new UnsupportedOperationException(
                                                                "Not supported yet."); //To change body of generated methods, choose Tools | Templates.
                                                    }

                                                    @Override
                                                    public void onSuccess(
                                                            TreeMap<String, ArrayList<TreeMap<String, String>>> dadosVeiculoAtualizados) {

                                                        TabBuscarCliente.totalMensalidadesVeiculos = 0;
                                                        if (dadosVeiculoAtualizados != null) {
                                                            tabBuscaCliente.setVeiculos(dadosVeiculoAtualizados);

                                                            TreeMap<String, ArrayList<TreeMap<String, String>>> veiculosAux = new TreeMap<>(
                                                                    dadosVeiculoAtualizados);

                                                            if (dadosVeiculoAtualizados.size() > 0) {

                                                                final DataSource ds = new DataSource();
                                                                ds.setClientOnly(true);
                                                                DataSourceTextField codigo = new DataSourceTextField(
                                                                        "codigo",
                                                                        Info.titulosMsg.get("tituloCodigo"));
                                                                codigo.setHidden(true);
                                                                DataSourceTextField placaVeiculo = new DataSourceTextField(
                                                                        "placa", Info.titulosMsg.get("lista"));
                                                                placaVeiculo.setRequired(true);
                                                                placaVeiculo.setPrimaryKey(true);
                                                                ds.setFields(codigo, placaVeiculo);

                                                                TreeMap<String, String> placasVeciuloAux = new TreeMap<>();
                                                                for (Map.Entry<String, ArrayList<TreeMap<String, String>>> entrySet : veiculosAux
                                                                        .entrySet()) {
                                                                    //String key = entrySet.getKey();                                                    
                                                                    ArrayList<TreeMap<String, String>> value = entrySet
                                                                            .getValue();
                                                                    if (!placasVeciuloAux.containsKey(
                                                                            value.get(0).get("placaVeiculo"))) {
                                                                        final ListGridRecord recordVeiculos = new ListGridRecord();
                                                                        recordVeiculos.setAttribute("placa",
                                                                                value.get(0).get("placaVeiculo"));
                                                                        recordVeiculos.setAttribute("codigo",
                                                                                value.get(0).get("codVeiculo"));
                                                                        //                                                    recordVeiculos.setAttribute("icone", value.get(0).get("codIcone"));
                                                                        //                                                    recordVeiculos.setAttribute("grupo", value.get(0).get("nomeGrupo"));
                                                                        //                                                    recordVeiculos.setAttribute("fabricante", value.get(0).get("fabricante"));
                                                                        //                                                    recordVeiculos.setAttribute("modelo", value.get(0).get("modelo"));
                                                                        //                                                    recordVeiculos.setAttribute("cor", value.get(0).get("cor"));
                                                                        //                                                    recordVeiculos.setAttribute("ano", value.get(0).get("ano"));
                                                                        ds.addData(recordVeiculos);

                                                                        if (!TabHistorico.codPlacasHistorico
                                                                                .containsKey(value.get(0)
                                                                                        .get("codVeiculo"))) {
                                                                            TabHistorico.codPlacasHistorico.put(
                                                                                    value.get(0).get("codVeiculo"),
                                                                                    value.get(0).get("codVeiculo"));
                                                                            final Record recordVeiculosHist = new Record();
                                                                            recordVeiculosHist.setAttribute(
                                                                                    "codigo",
                                                                                    value.get(0).get("codVeiculo"));
                                                                            recordVeiculosHist.setAttribute("placa",
                                                                                    value.get(0)
                                                                                            .get("placaVeiculo"));
                                                                            recordVeiculosHist.setAttribute(
                                                                                    "fabricante",
                                                                                    value.get(0).get("fabricante"));
                                                                            recordVeiculosHist.setAttribute(
                                                                                    "modelo",
                                                                                    value.get(0).get("modelo"));
                                                                            recordVeiculosHist.setAttribute("cor",
                                                                                    value.get(0).get("cor"));
                                                                            recordVeiculosHist.setAttribute("ano",
                                                                                    value.get(0).get("ano"));
                                                                            recordVeiculosHist.setAttribute("icone",
                                                                                    value.get(0).get("icone"));
                                                                            recordVeiculosHist.setAttribute("grupo",
                                                                                    Info.usuarioLogado
                                                                                            .get("nomeGrupo"));
                                                                            recordVeiculosHist.setAttribute(
                                                                                    "cliente", nomeCliente);
                                                                            //GWT.log("LINHA 32 Placa novas: ");
                                                                            TabHistorico.dataSoucePlacas
                                                                                    .addData(recordVeiculosHist);
                                                                            TabHistorico.veiculos.fetchData();
                                                                        }

                                                                        if (value.get(0).get("ativoVeic")
                                                                                .equalsIgnoreCase("t")) {
                                                                            if (Integer.parseInt(value.get(0)
                                                                                    .get("codPlano")) == 1) {
                                                                                double desconto = Double
                                                                                        .parseDouble(value.get(0)
                                                                                                .get("desconto"));
                                                                                double numeroIndicicoes = Double
                                                                                        .parseDouble(value.get(0)
                                                                                                .get("numeroIndicacoes"));
                                                                                double valorPlano = Double
                                                                                        .parseDouble(value.get(0)
                                                                                                .get("valorPlano"));
                                                                                double dezPorCentoPlano = Double
                                                                                        .parseDouble(value.get(0)
                                                                                                .get("valorPlano"))
                                                                                        * 0.1;
                                                                                double descontoIndicacao = Info
                                                                                        .formataDecimal(
                                                                                                numeroIndicicoes
                                                                                                        * dezPorCentoPlano);
                                                                                double valorMensalidade = Info
                                                                                        .formataDecimal(valorPlano
                                                                                                - (desconto
                                                                                                        + descontoIndicacao));
                                                                                TabBuscarCliente.totalMensalidadesVeiculos = Info
                                                                                        .formataDecimal(
                                                                                                TabBuscarCliente.totalMensalidadesVeiculos
                                                                                                        + valorMensalidade);
                                                                            } else {
                                                                                double desconto = Double
                                                                                        .parseDouble(value.get(0)
                                                                                                .get("desconto"));
                                                                                double valorPlano = Double
                                                                                        .parseDouble(value.get(0)
                                                                                                .get("valorPlano"));
                                                                                double valorMensalidade = Info
                                                                                        .formataDecimal(valorPlano
                                                                                                - desconto);
                                                                                TabBuscarCliente.totalMensalidadesVeiculos = Info
                                                                                        .formataDecimal(
                                                                                                TabBuscarCliente.totalMensalidadesVeiculos
                                                                                                        + valorMensalidade);
                                                                            }
                                                                        }
                                                                        placasVeciuloAux.put(
                                                                                value.get(0).get("placaVeiculo"),
                                                                                value.get(0).get("placaVeiculo"));
                                                                    }

                                                                }
                                                                veicPlacas.setDataSource(ds);
                                                                if (veiculosAux.size() < 50) {
                                                                    com.google.gwt.core.client.GWT
                                                                            .log("flagDrawGrid");
                                                                    veicPlacas.fetchData();
                                                                    veicPlacas.focus();
                                                                    com.google.gwt.core.client.GWT
                                                                            .log("flagDrawGrid");
                                                                } else {
                                                                    new Timer() {
                                                                        @Override
                                                                        public void run() {
                                                                            com.google.gwt.core.client.GWT
                                                                                    .log("flagDrawGrid");
                                                                            //veicPlacas.setDataSource(ds);
                                                                            veicPlacas.fetchData();
                                                                            veicPlacas.focus();
                                                                            com.google.gwt.core.client.GWT
                                                                                    .log("flagDrawGrid");
                                                                        }
                                                                    }.schedule(1000);
                                                                }
                                                                //                                                veicPlacas.setDataSource(ds);
                                                                //                                                veicPlacas.fetchData();
                                                                //                                                veicPlacas.setSelectionType(SelectionStyle.SINGLE);
                                                                SC.say(Info.titulosMsg
                                                                        .get("cadastroVeiculoSucesso"));
                                                                // cadastro de veculo //
                                                                Info.registrarLog(
                                                                        Integer.parseInt(Info.usuarioLogado
                                                                                .get("codUsuario")),
                                                                        2,
                                                                        new Timestamp(System.currentTimeMillis()),
                                                                        placa.getValueAsString());
                                                                windAux.destroy();
                                                            } else {
                                                                DataSourceTextField codigo = new DataSourceTextField(
                                                                        "codigo",
                                                                        Info.titulosMsg.get("tituloCodigo"));
                                                                codigo.setHidden(true);
                                                                DataSourceTextField placaVeiculo = new DataSourceTextField(
                                                                        "placa", "Placa");
                                                                placaVeiculo.setRequired(true);
                                                                placaVeiculo.setPrimaryKey(true);
                                                                DataSource ds = new DataSource();
                                                                ds.setFields(codigo, placaVeiculo);
                                                                ds.setClientOnly(true);
                                                                veicPlacas.setDataSource(ds);
                                                                veicPlacas.fetchData();
                                                                veicPlacas.setSelectionType(SelectionStyle.SINGLE);
                                                                tabBuscaCliente.tabelaVeiculoRedraw(tabelaVazia);
                                                                SC.say(Info.titulosMsg
                                                                        .get("cadastroVeiculoSucesso"));
                                                                // cadastro de veculo //
                                                                Info.registrarLog(
                                                                        Integer.parseInt(Info.usuarioLogado
                                                                                .get("codUsuario")),
                                                                        2,
                                                                        new Timestamp(System.currentTimeMillis()),
                                                                        placa.getValueAsString());
                                                                windAux.destroy();
                                                            }

                                                        }

                                                    }
                                                });

                                    } else {
                                        // erro no cadastro de veculo //
                                        Info.registrarLog(Integer.parseInt(Info.usuarioLogado.get("codUsuario")),
                                                90, new Timestamp(System.currentTimeMillis()),
                                                placa.getValueAsString());
                                        SC.warn(Info.titulosMsg.get("cadastroVeiculoErro"));
                                    }
                                }
                            });

                } else {
                    if (formNovoVeiculo.validate(false) && Integer.parseInt(instalador.getValueAsString()) == 0) {
                        SC.warn(Info.titulosMsg.get("instaladorInvalido"));
                        formNovoVeiculo.focusInItem(instalador);
                        // tentou cadastrar o veculo sem instalador//
                        Info.registrarLog(Integer.parseInt(Info.usuarioLogado.get("codUsuario")), 301,
                                new Timestamp(System.currentTimeMillis()), "");
                    }
                    /*else if (formNovoVeiculo.validate(false) && Integer.parseInt(equipamento.getValueAsString()) == 0) {
                    // tentou cadastrar o veculo sem equipamento//
                    Info.registrarLog(Integer.parseInt(Info.usuarioLogado.get("codUsuario")), 91, new Timestamp(System.currentTimeMillis()), "");
                    SC.warn(Info.titulosMsg.get("equipamentoInvalido"));
                    formNovoVeiculo.focusInItem(equipamento);
                    } else if (formNovoVeiculo.validate(false) && Integer.parseInt(equipamento.getValueAsString()) != 0 && listPadLig.getRecordList().isEmpty()) {
                    // tentou cadastrar o veculo sem equipamento//
                    Info.registrarLog(Integer.parseInt(Info.usuarioLogado.get("codUsuario")), 91, new Timestamp(System.currentTimeMillis()), "");
                    SC.warn(Info.titulosMsg.get("umPadraoLigacao"));
                    formNovoVeiculo.focusInItem(equipamento);
                    }*/ else if (formNovoVeiculo.validate(false) && !validaPlaca) {
                        SC.warn(Info.titulosMsg.get("placaInvalida"));
                        formNovoVeiculo.focusInItem(placa);
                        // tentou cadastrar o veculo com placa j existente//
                        Info.registrarLog(Integer.parseInt(Info.usuarioLogado.get("codUsuario")), 302,
                                new Timestamp(System.currentTimeMillis()), "");
                    } else if (formNovoVeiculo.validate(false) && !validaChassi) {
                        SC.warn(Info.titulosMsg.get("chassiJaExiste"));
                        formNovoVeiculo.focusInItem(chassi);
                        // tentou cadastrar o veculo com chassi j existente//
                        Info.registrarLog(Integer.parseInt(Info.usuarioLogado.get("codUsuario")), 315,
                                new Timestamp(System.currentTimeMillis()), "");
                    } else if (formNovoVeiculo.validate(false)
                            && indicado.getValueAsString().equalsIgnoreCase("REP")) {
                        SC.warn(Info.titulosMsg.get("IndicadorInvalido"));
                        formNovoVeiculo.focusInItem(indicado);
                        // tentou cadastrar o veculo com chassi j existente//
                        Info.registrarLog(Integer.parseInt(Info.usuarioLogado.get("codUsuario")), 357,
                                new Timestamp(System.currentTimeMillis()), "");
                    }
                }
            }
        });

        painelBotoesNovoVeiculo.addMember(cadastrar);
        painelBotoesNovoVeiculo.addMember(limpar);

        painelNovoVeiculo.addMember(novoVeiculo);
        painelNovoVeiculo.addMember(painelBotoesNovoVeiculo);
        //Desenhando o formulrio na Tab
        painelpagina.addMember(painelNovoVeiculo);

        addItem(painelpagina);

    }

    private void numeroDeParcelas(String numParc) {

        Info.dbService.buscarPorCodTipoPagamento(Integer.parseInt(numParc),
                new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

                    @Override
                    public void onFailure(Throwable caught) {
                        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
                    }

                    @Override
                    public void onSuccess(ArrayList<TreeMap<String, String>> result) {
                        if (result != null) {
                            LinkedHashMap<String, String> quantParcelas = new LinkedHashMap<>();
                            for (TreeMap<String, String> parcelas : result) {
                                quantParcelas.put(parcelas.get("codParcela"), parcelas.get("numero") + "X de R$"
                                        + Info.formataValor(Float.parseFloat(parcelas.get("valor"))));
                            }
                            numeroParcelas.setValueMap(quantParcelas);
                            numeroParcelas.setValue(result.get(0).get("codParcela"));
                        }
                    }
                });
    }

    private void buscarMarcas(int codTipoVeiculo) {

        Info.dbService.buscarMarcaPorTipoDeVeiculo(codTipoVeiculo,
                new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

                    @Override
                    public void onFailure(Throwable caught) {
                        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
                    }

                    @Override
                    public void onSuccess(ArrayList<TreeMap<String, String>> result) {
                        LinkedHashMap<String, String> itemMarcas = new LinkedHashMap<>();
                        if (result != null) {
                            for (TreeMap<String, String> tv : result) {
                                itemMarcas.put(tv.get("codMarca"), tv.get("nome"));
                            }
                            itemMarca.setValueMap(itemMarcas);
                            itemMarca.setValue(result.get(0).get("codMarca"));
                            buscarModelos(Integer.parseInt(result.get(0).get("codMarca")));
                        } else {
                            itemMarcas.put("0", Info.titulosMsg.get("naoHaMarca"));
                            itemMarca.setValueMap(itemMarcas);
                            itemMarca.setValue("0");
                        }
                    }
                });
    }

    private void buscarModelos(int codMarca) {

        Info.dbService.buscarModeloPorCodMarca(codMarca, new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

            @Override
            public void onFailure(Throwable caught) {
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }

            @Override
            public void onSuccess(ArrayList<TreeMap<String, String>> result) {
                LinkedHashMap<String, String> itemModelos = new LinkedHashMap<>();
                if (result != null) {
                    for (TreeMap<String, String> tv : result) {
                        itemModelos.put(tv.get("codModelo"), tv.get("nome"));
                    }
                    itemModelo.setValueMap(itemModelos);
                    itemModelo.setValue(result.get(0).get("codModelo"));
                    buscarAno(Integer.parseInt(result.get(0).get("codModelo")));
                } else {
                    itemModelos.put("0", Info.titulosMsg.get("naoHaModelo"));
                    itemModelo.setValueMap(itemModelos);
                    itemModelo.setValue("0");
                }
            }
        });
    }

    private void buscarAno(int codModelo) {

        Info.dbService.buscarAnoPorCodModelo(codModelo, new AsyncCallback<ArrayList<TreeMap<String, String>>>() {

            @Override
            public void onFailure(Throwable caught) {
                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
            }

            @Override
            public void onSuccess(ArrayList<TreeMap<String, String>> result) {
                LinkedHashMap<String, String> itemAnos = new LinkedHashMap<>();
                if (result != null) {
                    for (TreeMap<String, String> tv : result) {
                        itemAnos.put(tv.get("codAno"), tv.get("descricao"));
                    }
                    itemAno.setValueMap(itemAnos);
                    itemAno.setValue(result.get(0).get("codAno"));
                } else {
                    itemAnos.put("0", Info.titulosMsg.get("naoHaAno"));
                    itemAno.setValueMap(itemAnos);
                    itemAno.setValue("0");
                }
            }
        });
    }

}