com.automaster.client.ui.paineis.dialogs.editar.EditarCliente.java Source code

Java tutorial

Introduction

Here is the source code for com.automaster.client.ui.paineis.dialogs.editar.EditarCliente.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.client.ui.paineis.dialogs.editar;

import com.automaster.client.Info;
import com.automaster.client.ui.paineis.dialogs.editar.cadastronovo.EditarNovoEmail;
import com.automaster.client.ui.paineis.dialogs.editar.cadastronovo.EditarNovoEndereco;
import com.automaster.client.ui.paineis.dialogs.editar.cadastronovo.EditarNovoTelefone;
import com.automaster.client.ui.paineis.dialogs.editar.cadastronovo.EditarNovoUsuario;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.data.Record;
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.Overflow;
import com.smartgwt.client.types.VisibilityMode;
import com.smartgwt.client.util.BooleanCallback;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.ImgButton;
import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.events.CloseClickEvent;
import com.smartgwt.client.widgets.events.CloseClickHandler;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.DateItem;
import com.smartgwt.client.widgets.form.fields.RadioGroupItem;
import com.smartgwt.client.widgets.form.fields.SectionItem;
import com.smartgwt.client.widgets.form.fields.SelectItem;
import com.smartgwt.client.widgets.form.fields.TextItem;
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.util.ArrayList;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.TreeMap;

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

    private int contador = 0;
    // Pega o cdigo da Unidade do Usurio Logado Cliente ou Funiconrio
    private int codigoUnidade = Integer.parseInt(
            (Info.usuarioLogado.get("codUnidadeCliente") == null) ? Info.usuarioLogado.get("codUnidadeFuncionario")
                    : Info.usuarioLogado.get("codUnidadeCliente"));
    private ArrayList<TreeMap<String, String>> clienteEdicaoAuxiliar = new ArrayList<TreeMap<String, String>>();

    public EditarCliente(final TreeMap<String, ArrayList<TreeMap<String, String>>> clienteEdicao,
            final ListGrid enderecosTabBuscaCliente, final ListGrid telefonesTabBuscaCliente,
            final ListGrid emailsTabBuscaCliente, final ListGrid usuariosTabBuscaCliente,
            final ListGrid dadosClienteTabBuscaCliente) {
        //GWT.log(""+emailsTabBuscaCliente.getRecords().length);
        clienteEdicaoAuxiliar = clienteEdicao.get(clienteEdicao.firstKey());
        //Setando itens de configurao da Window EditarCliente
        final Window windAux = this;
        setTitle("Editar Cliente");
        setWidth(1200);
        setHeight100();
        setShowMinimizeButton(false);
        setShowCloseButton(false);
        setIsModal(true);
        setShowModalMask(true);
        centerInPage();
        setLayoutAlign(Alignment.CENTER);
        addCloseClickHandler(new CloseClickHandler() {

            @Override
            public void onCloseClick(CloseClickEvent event) {

                SC.warn("todas as alteraes j foram feitas!", new BooleanCallback() {

                    @Override
                    public void execute(Boolean value) {
                        if (value) {
                            windAux.destroy();
                        }
                    }
                });
                //GWT.log(""+clienteEdicao);
            }
        });
        //criando o Vlayout que ir armazenar o painelNovoCliente
        HLayout painelPai = new HLayout();
        painelPai.setWidth100();
        painelPai.setHeight100();
        painelPai.setAlign(Alignment.CENTER);
        //Criando o painel que ir armazenar to tab, sections e butoes
        VLayout painelNovoCliente = new VLayout();
        painelNovoCliente.setMembersMargin(15);
        painelNovoCliente.setWidth(1000);
        painelNovoCliente.setDefaultLayoutAlign(Alignment.CENTER);
        //criando o painel que ir armazenar os botoes cadastrar e limpar
        HLayout painelBotoes = new HLayout();
        painelBotoes.setMembersMargin(15);
        painelBotoes.setAlign(Alignment.CENTER);
        //criando o formulrio que armazena os itens de cadastro PF
        final DynamicForm formEditarCliente = new DynamicForm();
        formEditarCliente.setWidth100();
        formEditarCliente.setLayoutAlign(Alignment.CENTER);
        formEditarCliente.setAutoFocus(true);
        //criando radioGroup que o usurio escolhe o tipo de cliente a ser cadastrado
        final SelectItem unidade = new SelectItem();
        unidade.setTitle("Unidade");
        unidade.setName("unidade");
        unidade.setHint("<nbr>*</nbr>");

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

            @Override
            public void onFailure(Throwable caught) {
                throw new UnsupportedOperationException(
                        "Erro ao Listar as Unidades, entre em contato com Administrador!");
            }

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

                    for (TreeMap<String, String> unid : result) {
                        //valueMapUnid.put(unid.get("codUnidade"), unid.get("nome"));
                        valueMapUnid.put(unid.get("codUnidade"), unid.get("nome"));

                    }
                    unidade.setValueMap(valueMapUnid);
                }
            }

        });
        unidade.setDefaultValue(clienteEdicaoAuxiliar.get(0).get("codUnidade"));
        unidade.setRequired(true);
        unidade.setWidth(400);

        final DateItem datadeAdesao = new DateItem();
        datadeAdesao.setTitle("Data de Adeso.");
        datadeAdesao.setName("dataAdesao");
        datadeAdesao.setUseTextField(true);
        datadeAdesao.setHint("<nbr>*</nbr>");
        datadeAdesao.setUseMask(true);
        datadeAdesao.setDateFormatter(DateDisplayFormat.TOEUROPEANSHORTDATE);
        datadeAdesao.setRequired(true);
        datadeAdesao.setWidth(400);
        datadeAdesao.setValue(new Date(Long.parseLong(clienteEdicaoAuxiliar.get(0).get("dataAdesao"))));
        datadeAdesao.setDisabled(true);

        final RadioGroupItem tipoPessoa = new RadioGroupItem();
        tipoPessoa.setTitle("Tipo de Pessoa");
        LinkedHashMap<String, String> tp = new LinkedHashMap<>();
        tp.put("1", "Pessoa Fsica");
        tp.put("2", "Pessoa Jurdica");
        tipoPessoa.setValueMap(tp);
        tipoPessoa.setRequired(true);
        tipoPessoa.setValue(clienteEdicaoAuxiliar.get(0).get("tipoCliente"));
        tipoPessoa.setAlign(Alignment.CENTER);
        tipoPessoa.setDisabled(true);
        //criando os itens que a seo dados pessoais do formulrio
        final TextItem nomeRazaoSocial = new TextItem();
        nomeRazaoSocial.setName("nome");
        nomeRazaoSocial.setTitle("Nome");
        nomeRazaoSocial.setRequired(true);
        LengthRangeValidator tamanhoNome = new LengthRangeValidator();
        tamanhoNome.setMin(3);
        nomeRazaoSocial.setValidators(tamanhoNome);
        nomeRazaoSocial.setHint("<nbr>*</nbr>");
        nomeRazaoSocial.setKeyPressFilter("[a-zA-Z? ]");
        nomeRazaoSocial.setCharacterCasing(CharacterCasing.UPPER);
        nomeRazaoSocial.setWidth(400);
        nomeRazaoSocial.setValue(clienteEdicaoAuxiliar.get(0).get("nomeCliente"));

        final TextItem cpfCnpj = new TextItem();
        cpfCnpj.setName("cpf");
        cpfCnpj.setTitle("CPF");
        cpfCnpj.setMask("###.###.###-##");
        cpfCnpj.setRequired(true);
        cpfCnpj.setHint("<nbr>*</nbr>");
        //cpfCnpj.setHint("Somente Nmeros [0-9.]");
        cpfCnpj.setKeyPressFilter("<nbr>*</nbr>");
        cpfCnpj.setWidth(400);
        cpfCnpj.setValue((clienteEdicaoAuxiliar.get(0).get("tipoCliente").equalsIgnoreCase("1"))
                ? clienteEdicaoAuxiliar.get(0).get("cpf")
                : clienteEdicaoAuxiliar.get(0).get("cnpj"));

        final DateItem dataNascAbertura = new DateItem();
        dataNascAbertura.setTitle("Data de Nasc.");
        dataNascAbertura.setName("dataNasc");
        dataNascAbertura.setUseTextField(true);
        dataNascAbertura.setHint("<nbr>*</nbr>");
        dataNascAbertura.setUseMask(true);
        dataNascAbertura.setDateFormatter(DateDisplayFormat.TOEUROPEANSHORTDATE);
        dataNascAbertura.setRequired(true);
        dataNascAbertura.setWidth(400);
        Date dataFinal;
        if (clienteEdicaoAuxiliar.get(0).get("tipoCliente").equalsIgnoreCase("1")) {
            dataFinal = new Date(Long.parseLong(clienteEdicaoAuxiliar.get(0).get("dataNasc")));
        } else {
            dataFinal = new Date(Long.parseLong(clienteEdicaoAuxiliar.get(0).get("dataAbertura")));
        }
        dataNascAbertura.setValue(dataFinal);
        //
        final TextItem profissaoResponsavel = new TextItem();
        profissaoResponsavel.setName("profissao");
        profissaoResponsavel.setTitle("Profisso");
        profissaoResponsavel.setHint("<nbr>*</nbr>");
        profissaoResponsavel.setKeyPressFilter("[a-zA-Z? ]");
        profissaoResponsavel.setRequired(true);
        profissaoResponsavel.setCharacterCasing(CharacterCasing.UPPER);
        profissaoResponsavel.setWidth(400);
        profissaoResponsavel.setValue((clienteEdicaoAuxiliar.get(0).get("tipoCliente").equalsIgnoreCase("1"))
                ? clienteEdicaoAuxiliar.get(0).get("profissao")
                : clienteEdicaoAuxiliar.get(0).get("responsavel"));

        final TextItem empresaCargo = new TextItem();
        empresaCargo.setName("empresa");
        empresaCargo.setTitle("Empresa");
        empresaCargo.setHint("<nbr>*</nbr>");
        empresaCargo.setKeyPressFilter("[a-zA-Z? ]");
        empresaCargo.setRequired(true);
        empresaCargo.setCharacterCasing(CharacterCasing.UPPER);
        empresaCargo.setWidth(400);
        empresaCargo.setValue((clienteEdicaoAuxiliar.get(0).get("tipoCliente").equalsIgnoreCase("1"))
                ? clienteEdicaoAuxiliar.get(0).get("trabalhoPessoa")
                : clienteEdicaoAuxiliar.get(0).get("cargo"));
        //cria a seo para armazenar os dados pessoas de PF ou PJ
        final SectionItem dadosPessoais = new SectionItem();
        //Componentes da Tab
        SectionStack novoCliente = new SectionStack();
        //Botes
        final IButton salvar = new IButton("Salvar");
        salvar.setLayoutAlign(Alignment.CENTER);

        final SectionStackSection formSection = new SectionStackSection();
        formSection.setTitle("Cadastro de Clientes");
        formSection.setItems(formEditarCliente);
        formSection.setExpanded(true);
        // Inicio dos Botes de Adicionar e Remover
        ImgButton addEmail = new ImgButton();
        addEmail.setSrc("[SKIN]actions/add.png");
        addEmail.setSize(16);
        addEmail.setShowFocused(false);
        addEmail.setShowRollOver(false);
        addEmail.setShowDown(false);
        addEmail.setTooltip("Adicionar Email");

        ImgButton addTelefone = new ImgButton();
        addTelefone.setSrc("[SKIN]actions/add.png");
        addTelefone.setSize(16);
        addTelefone.setShowFocused(false);
        addTelefone.setShowRollOver(false);
        addTelefone.setShowDown(false);
        addTelefone.setTooltip("Adicionar Telefone");

        ImgButton addEndereco = new ImgButton();
        addEndereco.setSrc("[SKIN]actions/add.png");
        addEndereco.setSize(16);
        addEndereco.setShowFocused(false);
        addEndereco.setShowRollOver(false);
        addEndereco.setShowDown(false);
        addEndereco.setTooltip("Adicionar Endereo");

        ImgButton addUsuario = new ImgButton();
        addUsuario.setSrc("[SKIN]actions/add.png");
        addUsuario.setSize(16);
        addUsuario.setShowFocused(false);
        addUsuario.setShowRollOver(false);
        addUsuario.setShowDown(false);
        addUsuario.setTooltip("Adicionar Usurio");
        // FIm dos Botes de Adicionar
        final ListGridField codigoEnd = new ListGridField("codigo", "Cdigo");
        codigoEnd.setHidden(true);
        final ListGridField descricaoEndereco = new ListGridField("descricao", "Descrio");
        descricaoEndereco.setWidth(150);
        final ListGridField logradouro = new ListGridField("logradouro", "Logradouro");
        logradouro.setWidth(200);
        final ListGridField numero = new ListGridField("numero", "N");
        numero.setWidth(50);
        final ListGridField bairro = new ListGridField("bairro", "Bairro");
        final ListGridField cep = new ListGridField("cep", "CEP");
        cep.setWidth(60);
        final ListGridField estado = new ListGridField("estado", "UF");
        final ListGridField estadoCod = new ListGridField("estadoCod", "EstadoCod");
        estadoCod.setHidden(true);
        final ListGridField cidade = new ListGridField("cidade", "Cidade");
        final ListGridField cidadeCod = new ListGridField("cidadeCod", "CidadeCod");
        cidadeCod.setHidden(true);
        final ListGridField referencia = new ListGridField("referencia", "Referncia");
        referencia.setRequired(true);
        final ListGridField editarEnd = new ListGridField("editar", "Editar");
        editarEnd.setWidth(35);
        final ListGridField excluirEnd = new ListGridField("excluir", "Excluir");
        excluirEnd.setAlign(Alignment.CENTER);
        excluirEnd.setWidth(40);
        final ListGrid listEndereco = new ListGrid() {
            @Override
            protected Canvas createRecordComponent(final ListGridRecord record, Integer colNum) {

                String fieldName = this.getFieldName(colNum);
                final ListGrid listAux = this;
                //GWT.log("dentro da subinscrio");
                if (fieldName.equals("editar")) {
                    //GWT.log("dentro do IF");
                    HLayout recordCanvas = new HLayout(3);
                    recordCanvas.setHeight(22);
                    recordCanvas.setWidth100();
                    recordCanvas.setAlign(Alignment.CENTER);
                    ImgButton editImg = new ImgButton();
                    editImg.setShowDown(false);
                    editImg.setShowRollOver(false);
                    editImg.setLayoutAlign(Alignment.CENTER);
                    editImg.setSrc("[SKIN]actions/edit.png");
                    editImg.setPrompt("Editar endereo");
                    editImg.setHeight(16);
                    editImg.setWidth(16);
                    editImg.addClickHandler(new ClickHandler() {
                        public void onClick(ClickEvent event) {
                            EditarEndereco editEnd = new EditarEndereco(clienteEdicao, record, listAux,
                                    enderecosTabBuscaCliente);
                            editEnd.setAnimateTime(1200);
                            editEnd.animateShow(AnimationEffect.FADE);
                        }
                    });
                    recordCanvas.addMember(editImg);
                    return recordCanvas;
                } else if (fieldName.equals("excluir") && listAux.getRecordIndex(record) > 0) {
                    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("Excluir endereo");
                    excluirImg.setHeight(16);
                    excluirImg.setWidth(16);
                    excluirImg.addClickHandler(new ClickHandler() {
                        public void onClick(ClickEvent event) {
                            final Window janelaCarregando = new Window();
                            janelaCarregando.setShowTitle(false);
                            janelaCarregando.setWidth(100);
                            janelaCarregando.setHeight(50);
                            janelaCarregando.setShowEdges(false);
                            janelaCarregando.setShowCloseButton(false);
                            janelaCarregando.setShowMinimizeButton(false);
                            janelaCarregando.setIsModal(true);
                            janelaCarregando.setShowModalMask(true);
                            janelaCarregando.centerInPage();
                            janelaCarregando.setLayoutAlign(Alignment.CENTER);
                            final Label mensagem = new Label("Carregando..");
                            mensagem.setHeight(16);
                            new Timer() {
                                public void run() {
                                    if (contador != 100) {
                                        //destroy();
                                        contador += 1 + (int) (5 * Math.random());
                                        schedule(1 + (int) (50 * Math.random()));
                                        mensagem.setContents("Carregando: " + contador + "%");
                                        //GWT.log("!=100: "+contador);
                                        janelaCarregando.addItem(mensagem);
                                        janelaCarregando.setAnimateTime(1200);
                                        janelaCarregando.animateShow(AnimationEffect.FADE);

                                        if (contador >= 100) {
                                            mensagem.setContents("Carregando: 100%");
                                            // GWT.log("" + clienteEdicaoAuxiliar.size());                                            
                                            //GWT.log(""+record.getAttribute("codigo"));
                                            int linhaClicada = listAux.getRecordIndex(record);
                                            listAux.selectRecord(linhaClicada);
                                            listAux.removeSelectedData();
                                            int num = clienteEdicaoAuxiliar.size();
                                            int removidos = 0;
                                            for (int i = 0; i < num; i++) {
                                                TreeMap<String, String> endEditado = clienteEdicaoAuxiliar
                                                        .get(i - removidos);
                                                if (record.getAttribute("codigo")
                                                        .equalsIgnoreCase(endEditado.get("codEndereco"))) {
                                                    clienteEdicaoAuxiliar.remove(endEditado);
                                                    removidos++;
                                                }
                                            }

                                            Info.dbService.deletarEndereco(
                                                    Integer.parseInt(record.getAttribute("codigo")),
                                                    new AsyncCallback<Boolean>() {

                                                        @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(Boolean enderecoDeletado) {
                                                            if (enderecoDeletado == true) {
                                                                SC.say("Endereo excluido com sucesso!");
                                                            } else {
                                                                SC.say("ERRO ao excluir endereo!");
                                                            }
                                                        }
                                                    });
                                            clienteEdicao.put(clienteEdicaoAuxiliar.get(0).get("codCliente"),
                                                    clienteEdicaoAuxiliar);
                                            //listEndBuscaCliente.refreshRow(linhaClicada);
                                            enderecosTabBuscaCliente.selectRecord(linhaClicada);
                                            enderecosTabBuscaCliente.removeSelectedData();
                                            janelaCarregando.addItem(mensagem);
                                            janelaCarregando.setAnimateTime(1200);
                                            janelaCarregando.animateHide(AnimationEffect.FADE);
                                            contador = 100;
                                            janelaCarregando.destroy();
                                        }
                                    } else {
                                        contador = 0;
                                    }

                                }
                            }.schedule(50);
                        }
                    });
                    recordCanvas.addMember(excluirImg);
                    return recordCanvas;

                } else {
                    return null;
                }

            }
        };
        listEndereco.setCanPickFields(false);
        listEndereco.setFields(codigoEnd, descricaoEndereco, logradouro, numero, bairro, cep, cidade, cidadeCod,
                estado, estadoCod, referencia, editarEnd, excluirEnd);
        final SectionStackSection enderecoSection = new SectionStackSection();
        enderecoSection.setTitle("Endereos");
        enderecoSection.setItems(listEndereco);
        enderecoSection.setControls(addEndereco);
        enderecoSection.setExpanded(true);

        //Adicionando endereco na ListGrid
        ArrayList<TreeMap<String, String>> enderecos = clienteEdicao.get(clienteEdicao.firstKey());
        TreeMap<String, String> endAuxiliar = new TreeMap<String, String>();

        for (TreeMap<String, String> ende : enderecos) {
            if (enderecos.get(0).get("codEndereco") != null && endAuxiliar.get(ende.get("codEndereco")) == null) {
                Record novoEnd = new Record();
                novoEnd.setAttribute("codigo", ende.get("codEndereco"));
                novoEnd.setAttribute("descricao", ende.get("descricaoEndereco"));
                novoEnd.setAttribute("logradouro", ende.get("logradouro"));
                novoEnd.setAttribute("numero", ende.get("numeroEndereco"));
                novoEnd.setAttribute("bairro", ende.get("bairro"));
                novoEnd.setAttribute("cep", ende.get("cep"));
                novoEnd.setAttribute("cidadeCod", ende.get("codCidade"));
                novoEnd.setAttribute("cidade", ende.get("nomeCidade"));
                novoEnd.setAttribute("estadoCod", ende.get("codEstado"));
                novoEnd.setAttribute("estado", ende.get("estadoUf"));
                novoEnd.setAttribute("referencia", ende.get("referenciaEndereco"));
                listEndereco.addData(novoEnd);
                endAuxiliar.put(ende.get("codEndereco"), ende.get("codEndereco"));
            }
        }
        listEndereco.setShowRecordComponents(true);
        listEndereco.setShowRecordComponentsByCell(true);
        listEndereco.setShowAllRecords(true);
        listEndereco.setCanResizeFields(true);
        //criando coluna para grid telefone
        ListGridField codigoTel = new ListGridField("codigo", "Cdigo");
        codigoTel.setHidden(true);
        ListGridField descricaoTelefone = new ListGridField("descricao", "Descrio");
        descricaoTelefone.setAlign(Alignment.CENTER);
        ListGridField telefone = new ListGridField("numero", "Nmero");
        telefone.setAlign(Alignment.CENTER);
        ListGridField editarTel = new ListGridField("editar", "Editar");
        editarTel.setAlign(Alignment.CENTER);
        editarTel.setWidth(35);
        final ListGridField excluirTel = new ListGridField("excluir", "Excluir");
        excluirTel.setAlign(Alignment.CENTER);
        excluirTel.setWidth(40);
        //adicionando na lista grid de telefones
        final ListGrid listTelefone = new ListGrid() {
            @Override
            protected Canvas createRecordComponent(final ListGridRecord record, Integer colNum) {
                String fieldName = this.getFieldName(colNum);
                final ListGrid listAux = this;
                if (fieldName.equals("editar")) {
                    HLayout recordCanvas = new HLayout(3);
                    recordCanvas.setHeight(22);
                    recordCanvas.setWidth100();
                    recordCanvas.setAlign(Alignment.CENTER);
                    ImgButton editImg = new ImgButton();
                    editImg.setShowDown(false);
                    editImg.setShowRollOver(false);
                    editImg.setLayoutAlign(Alignment.CENTER);
                    editImg.setSrc("[SKIN]actions/edit.png");
                    editImg.setPrompt("Editar telefone");
                    editImg.setHeight(16);
                    editImg.setWidth(16);
                    editImg.addClickHandler(new ClickHandler() {
                        public void onClick(ClickEvent event) {
                            EditarTelefone editTel = new EditarTelefone(clienteEdicao, record, listAux,
                                    telefonesTabBuscaCliente);
                            editTel.setAnimateTime(1200);
                            editTel.animateShow(AnimationEffect.FADE);
                        }
                    });

                    recordCanvas.addMember(editImg);
                    return recordCanvas;
                } else if (fieldName.equals("excluir") && listAux.getRecordIndex(record) > 0) {
                    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("Excluir telefone");
                    excluirImg.setHeight(16);
                    excluirImg.setWidth(16);
                    excluirImg.addClickHandler(new ClickHandler() {
                        public void onClick(ClickEvent event) {
                            final Window janelaCarregando = new Window();
                            janelaCarregando.setShowTitle(false);
                            janelaCarregando.setWidth(100);
                            janelaCarregando.setHeight(50);
                            janelaCarregando.setShowEdges(false);
                            janelaCarregando.setShowCloseButton(false);
                            janelaCarregando.setShowMinimizeButton(false);
                            janelaCarregando.setIsModal(true);
                            janelaCarregando.setShowModalMask(true);
                            janelaCarregando.centerInPage();
                            janelaCarregando.setLayoutAlign(Alignment.CENTER);
                            final Label mensagem = new Label("Carregando..");
                            mensagem.setHeight(16);
                            new Timer() {
                                public void run() {
                                    if (contador != 100) {
                                        //destroy();
                                        contador += 1 + (int) (5 * Math.random());
                                        schedule(1 + (int) (50 * Math.random()));
                                        mensagem.setContents("Carregando: " + contador + "%");
                                        //GWT.log("!=100: "+contador);
                                        janelaCarregando.addItem(mensagem);
                                        janelaCarregando.setAnimateTime(1200);
                                        janelaCarregando.animateShow(AnimationEffect.FADE);

                                        if (contador >= 100) {
                                            mensagem.setContents("Carregando: 100%");
                                            // GWT.log("" + clienteEdicaoAuxiliar.size());                                            
                                            //(""+record.getAttribute("codigo"));
                                            int linhaClicada = listAux.getRecordIndex(record);
                                            listAux.selectRecord(linhaClicada);
                                            listAux.removeSelectedData();
                                            //listAux.refreshRow(listAux.getRecordIndex(record));
                                            int num = clienteEdicaoAuxiliar.size();
                                            int removidos = 0;
                                            for (int i = 0; i < num; i++) {
                                                TreeMap<String, String> endEditado = clienteEdicaoAuxiliar
                                                        .get(i - removidos);
                                                if (record.getAttribute("codigo")
                                                        .equalsIgnoreCase(endEditado.get("codFone"))) {
                                                    clienteEdicaoAuxiliar.remove(endEditado);
                                                    removidos++;
                                                }
                                            }
                                            Info.dbService.deletarFone(
                                                    Integer.parseInt(record.getAttribute("codigo")),
                                                    new AsyncCallback<Boolean>() {

                                                        @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(Boolean enderecoDeletado) {
                                                            if (enderecoDeletado == true) {
                                                                SC.say("Telefone excluido com sucesso!");
                                                            } else {
                                                                SC.say("ERRO ao excluir telefone!");
                                                            }
                                                        }
                                                    });
                                            clienteEdicao.put(clienteEdicaoAuxiliar.get(0).get("codCliente"),
                                                    clienteEdicaoAuxiliar);
                                            //GWT.log("" + clienteEdicaoAuxiliar.size());
                                            telefonesTabBuscaCliente.selectRecord(linhaClicada);
                                            telefonesTabBuscaCliente.removeSelectedData();
                                            janelaCarregando.addItem(mensagem);
                                            janelaCarregando.setAnimateTime(1200);
                                            janelaCarregando.animateHide(AnimationEffect.FADE);
                                            contador = 100;
                                            janelaCarregando.destroy();
                                        }
                                    } else {
                                        contador = 0;
                                    }

                                }
                            }.schedule(50);
                        }
                    });
                    recordCanvas.addMember(excluirImg);
                    return recordCanvas;

                } else {
                    return null;
                }

            }
        };
        listTelefone.setFields(codigoTel, descricaoTelefone, telefone, editarTel, excluirTel);
        listTelefone.setCanPickFields(false);
        listTelefone.setShowRecordComponents(true);
        listTelefone.setShowRecordComponentsByCell(true);
        listTelefone.setShowAllRecords(true);
        listTelefone.setCanResizeFields(true);

        final SectionStackSection telefoneSection = new SectionStackSection();
        telefoneSection.setTitle("Telefones");
        telefoneSection.setItems(listTelefone);
        telefoneSection.setControls(addTelefone);
        telefoneSection.setExpanded(true);
        ArrayList<TreeMap<String, String>> telefones = clienteEdicao.get(clienteEdicao.firstKey());
        TreeMap<String, String> telAuxiliar = new TreeMap<String, String>();
        for (TreeMap<String, String> tels : telefones) {
            if (telefones.get(0).get("codFone") != null && telAuxiliar.get(tels.get("codFone")) == null) {
                Record novoTel = new Record();
                novoTel.setAttribute("codigo", tels.get("codFone"));
                novoTel.setAttribute("descricao", tels.get("descricaoFone"));
                novoTel.setAttribute("numero", Info.formataTelefone(tels.get("numeroFone")));
                listTelefone.addData(novoTel);
                telAuxiliar.put(tels.get("codFone"), tels.get("codFone"));
            }
        }
        ListGridField codEmail = new ListGridField("codigo", "Cdigo");
        codEmail.setHidden(true);
        ListGridField descricaoEmail = new ListGridField("descricao", "Descrio");
        descricaoEmail.setAlign(Alignment.CENTER);
        //Coluna Email
        ListGridField email = new ListGridField("email", "Email");
        email.setAlign(Alignment.CENTER);
        ListGridField editarEmail = new ListGridField("editar", "Editar");
        editarEmail.setAlign(Alignment.CENTER);
        editarEmail.setWidth(35);
        final ListGridField excluirEmail = new ListGridField("excluir", "Excluir");
        excluirEmail.setAlign(Alignment.CENTER);
        excluirEmail.setWidth(40);
        //cria grid Emails
        final ListGrid listEmail = new ListGrid() {
            @Override
            protected Canvas createRecordComponent(final ListGridRecord record, Integer colNum) {

                String fieldName = this.getFieldName(colNum);
                final ListGrid listAux = this;
                if (fieldName.equals("editar")) {
                    HLayout recordCanvas = new HLayout(3);
                    recordCanvas.setHeight(22);
                    recordCanvas.setWidth100();
                    recordCanvas.setAlign(Alignment.CENTER);
                    ImgButton editImg = new ImgButton();
                    editImg.setShowDown(false);
                    editImg.setShowRollOver(false);
                    editImg.setLayoutAlign(Alignment.CENTER);
                    editImg.setSrc("[SKIN]actions/edit.png");
                    editImg.setPrompt("Editar email");
                    editImg.setHeight(16);
                    editImg.setWidth(16);
                    editImg.addClickHandler(new ClickHandler() {
                        public void onClick(ClickEvent event) {
                            EditarEmail editarEmail = new EditarEmail(clienteEdicao, record, listAux,
                                    emailsTabBuscaCliente);
                            editarEmail.setAnimateTime(1200);
                            editarEmail.animateShow(AnimationEffect.FADE);
                        }
                    });

                    recordCanvas.addMember(editImg);
                    return recordCanvas;
                } else 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("Excluir email");
                    excluirImg.setHeight(16);
                    excluirImg.setWidth(16);
                    excluirImg.addClickHandler(new ClickHandler() {
                        public void onClick(ClickEvent event) {
                            final Window janelaCarregando = new Window();
                            janelaCarregando.setShowTitle(false);
                            janelaCarregando.setWidth(100);
                            janelaCarregando.setHeight(50);
                            janelaCarregando.setShowEdges(false);
                            janelaCarregando.setShowCloseButton(false);
                            janelaCarregando.setShowMinimizeButton(false);
                            janelaCarregando.setIsModal(true);
                            janelaCarregando.setShowModalMask(true);
                            janelaCarregando.centerInPage();
                            janelaCarregando.setLayoutAlign(Alignment.CENTER);
                            final Label mensagem = new Label("Carregando..");
                            mensagem.setHeight(16);
                            new Timer() {
                                public void run() {
                                    if (contador != 100) {

                                        contador += 1 + (int) (5 * Math.random());
                                        schedule(1 + (int) (50 * Math.random()));
                                        mensagem.setContents("Carregando: " + contador + "%");
                                        //GWT.log("!=100: "+contador);
                                        janelaCarregando.addItem(mensagem);
                                        janelaCarregando.setAnimateTime(1200);
                                        janelaCarregando.animateShow(AnimationEffect.FADE);

                                        if (contador >= 100) {
                                            mensagem.setContents("Carregando: 100%");
                                            //GWT.log("" + clienteEdicaoAuxiliar.size());                                            
                                            //GWT.log(""+record.getAttribute("codigo"));
                                            int linhaClicada = listAux.getRecordIndex(record);
                                            listAux.selectRecord(linhaClicada);
                                            listAux.removeSelectedData();
                                            //listAux.refreshRow(listAux.getRecordIndex(record));
                                            ArrayList<TreeMap<String, String>> editor = clienteEdicao
                                                    .get(clienteEdicao.firstKey());
                                            for (TreeMap<String, String> editado : editor) {
                                                if (record.getAttribute("codigo")
                                                        .equalsIgnoreCase(editado.get("codEmail"))) {
                                                    editado.put("codEmail", null);
                                                    editado.put("descricaoEmail", null);
                                                    editado.put("email", null);
                                                    ;
                                                }
                                            }
                                            clienteEdicao.put(editor.get(0).get("codCliente"), editor);

                                            Info.dbService.deletarEmail(
                                                    Integer.parseInt(record.getAttribute("codigo")),
                                                    new AsyncCallback<Boolean>() {

                                                        @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(Boolean enderecoDeletado) {
                                                            if (enderecoDeletado == true) {
                                                                SC.say("Email excluido com sucesso!");
                                                            } else {
                                                                SC.say("ERRO ao excluir email!");
                                                            }
                                                        }
                                                    });
                                            //clienteEdicao.put(clienteEdicaoAuxiliar.get(0).get("codCliente"), clienteEdicaoAuxiliar);
                                            //GWT.log("" + clienteEdicao);
                                            emailsTabBuscaCliente.selectRecord(linhaClicada);
                                            emailsTabBuscaCliente.removeSelectedData();
                                            janelaCarregando.addItem(mensagem);
                                            janelaCarregando.setAnimateTime(1200);
                                            janelaCarregando.animateHide(AnimationEffect.FADE);
                                            contador = 100;
                                            janelaCarregando.destroy();
                                        }
                                    } else {
                                        contador = 0;
                                    }

                                }
                            }.schedule(50);
                        }
                    });
                    recordCanvas.addMember(excluirImg);
                    return recordCanvas;

                } else {
                    return null;
                }

            }
        };
        listEmail.setCanPickFields(false);
        listEmail.setFields(codEmail, descricaoEmail, email, editarEmail, excluirEmail);
        listEmail.setShowRecordComponents(true);
        listEmail.setShowRecordComponentsByCell(true);
        listEmail.setShowAllRecords(true);
        listEmail.setCanResizeFields(true);
        //cria a sections email que ir guardar a grid de emails
        final SectionStackSection emailSection = new SectionStackSection();
        emailSection.setTitle("Emails");
        emailSection.setItems(listEmail);
        emailSection.setControls(addEmail);
        emailSection.setExpanded(true);

        ArrayList<TreeMap<String, String>> emails = clienteEdicao.get(clienteEdicao.firstKey());
        TreeMap<String, String> emailAuxiliar = new TreeMap<String, String>();
        int i = 0;
        for (TreeMap<String, String> ems : emails) {
            if (emails.get(i).get("codEmail") != null) {
                if (emailAuxiliar.get(ems.get("codEmail")) == null) {
                    Record novoEmail = new Record();
                    novoEmail.setAttribute("codigo", ems.get("codEmail"));
                    novoEmail.setAttribute("descricao", ems.get("descricaoEmail"));
                    novoEmail.setAttribute("email", ems.get("email"));
                    listEmail.addData(novoEmail);
                    emailAuxiliar.put(ems.get("codEmail"), ems.get("codEmail"));
                }
                i = i + 1;
            } else {
                i = i + 1;
            }
        }
        ListGridField codUsuario = new ListGridField("codigo", "Cdigo");
        codUsuario.setHidden(true);
        ListGridField gridUsuario = new ListGridField("usuario", "Usurio");
        gridUsuario.setAlign(Alignment.CENTER);
        ListGridField gridSenha = new ListGridField("senha", "Senha");
        gridSenha.setAlign(Alignment.CENTER);
        final ListGridField statusCod = new ListGridField("statusCod", "Status");
        statusCod.setHidden(true);
        final ListGridField status = new ListGridField("status", "Status");
        final ListGridField codGrupo = new ListGridField("codGrupo", "cdigoGrupo");
        codGrupo.setHidden(true);
        final ListGridField grupo = new ListGridField("grupo", "grupo");
        final ListGridField reset = new ListGridField("resetUsuario", "Reset");
        final ListGridField resetCod = new ListGridField("resetCod", "Reset");
        resetCod.setHidden(true);
        ListGridField editarUsuario = new ListGridField("editar", "Editar");
        editarUsuario.setAlign(Alignment.CENTER);
        editarUsuario.setWidth(35);
        final ListGridField excluirUsuario = new ListGridField("excluir", "Excluir");
        excluirUsuario.setAlign(Alignment.CENTER);
        excluirUsuario.setWidth(40);
        final ListGrid listUsuario = new ListGrid() {
            @Override
            protected Canvas createRecordComponent(final ListGridRecord record, Integer colNum) {

                String fieldName = this.getFieldName(colNum);
                final ListGrid listAux = this;
                if (fieldName.equals("editar")) {
                    HLayout recordCanvas = new HLayout(3);
                    recordCanvas.setHeight(22);
                    recordCanvas.setWidth100();
                    recordCanvas.setAlign(Alignment.CENTER);
                    ImgButton editImg = new ImgButton();
                    editImg.setShowDown(false);
                    editImg.setShowRollOver(false);
                    editImg.setLayoutAlign(Alignment.CENTER);
                    editImg.setSrc("[SKIN]actions/edit.png");
                    editImg.setPrompt("Editar usurio");
                    editImg.setHeight(16);
                    editImg.setWidth(16);
                    editImg.addClickHandler(new ClickHandler() {
                        public void onClick(ClickEvent event) {
                            EditarUsuario editarUsuario = new EditarUsuario(clienteEdicao, record, listAux,
                                    usuariosTabBuscaCliente);
                            editarUsuario.setAnimateTime(1200);
                            editarUsuario.animateShow(AnimationEffect.FADE);
                        }
                    });

                    recordCanvas.addMember(editImg);
                    return recordCanvas;
                } else if (fieldName.equals("excluir") && listAux.getRecordIndex(record) > 0) {
                    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("Excluir usurio");
                    excluirImg.setHeight(16);
                    excluirImg.setWidth(16);
                    excluirImg.addClickHandler(new ClickHandler() {
                        public void onClick(ClickEvent event) {
                            final Window janelaCarregando = new Window();
                            janelaCarregando.setShowTitle(false);
                            janelaCarregando.setWidth(100);
                            janelaCarregando.setHeight(50);
                            janelaCarregando.setShowEdges(false);
                            janelaCarregando.setShowCloseButton(false);
                            janelaCarregando.setShowMinimizeButton(false);
                            janelaCarregando.setIsModal(true);
                            janelaCarregando.setShowModalMask(true);
                            janelaCarregando.centerInPage();
                            janelaCarregando.setLayoutAlign(Alignment.CENTER);
                            final Label mensagem = new Label("Carregando..");
                            mensagem.setHeight(16);
                            new Timer() {
                                public void run() {
                                    if (contador != 100) {
                                        //destroy();
                                        contador += 1 + (int) (5 * Math.random());
                                        schedule(1 + (int) (50 * Math.random()));
                                        mensagem.setContents("Carregando: " + contador + "%");
                                        //GWT.log("!=100: "+contador);
                                        janelaCarregando.addItem(mensagem);
                                        janelaCarregando.setAnimateTime(1200);
                                        janelaCarregando.animateShow(AnimationEffect.FADE);

                                        if (contador >= 100) {
                                            mensagem.setContents("Carregando: 100%");
                                            //GWT.log("" + clienteEdicaoAuxiliar.size());                                            
                                            //GWT.log(""+record.getAttribute("codigo"));
                                            int linhaClicada = listAux.getRecordIndex(record);
                                            listAux.selectRecord(linhaClicada);
                                            listAux.removeSelectedData();
                                            //listAux.refreshRow(listAux.getRecordIndex(record));
                                            int num = clienteEdicaoAuxiliar.size();
                                            int removidos = 0;
                                            if (num > 1) {
                                                for (int i = 0; i < num; i++) {
                                                    TreeMap<String, String> endEditado = clienteEdicaoAuxiliar
                                                            .get(i - removidos);
                                                    if (record.getAttribute("codigo")
                                                            .equalsIgnoreCase(endEditado.get("codUsuario"))) {
                                                        clienteEdicaoAuxiliar.remove(endEditado);
                                                        removidos++;
                                                    }
                                                }
                                            }
                                            Info.dbService.deletarUsuario(
                                                    Integer.parseInt(record.getAttribute("codigo")),
                                                    new AsyncCallback<Boolean>() {

                                                        @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(Boolean enderecoDeletado) {
                                                            if (enderecoDeletado == true) {
                                                                SC.say("Usurio excluido com sucesso!");
                                                            } else {
                                                                SC.say("ERRO ao excluir usurio!");
                                                            }
                                                        }
                                                    });
                                            clienteEdicao.put(clienteEdicaoAuxiliar.get(0).get("codCliente"),
                                                    clienteEdicaoAuxiliar);
                                            usuariosTabBuscaCliente.selectRecord(linhaClicada);
                                            usuariosTabBuscaCliente.removeSelectedData();
                                            janelaCarregando.addItem(mensagem);
                                            janelaCarregando.setAnimateTime(1200);
                                            janelaCarregando.animateHide(AnimationEffect.FADE);
                                            contador = 100;
                                            janelaCarregando.destroy();
                                        }
                                    } else {
                                        contador = 0;
                                    }

                                }
                            }.schedule(50);
                        }
                    });
                    recordCanvas.addMember(excluirImg);
                    return recordCanvas;

                } else {
                    return null;
                }

            }
        };
        listUsuario.setCanPickFields(false);
        listUsuario.setFields(codUsuario, gridUsuario, gridSenha, status, codGrupo, grupo, reset, resetCod,
                editarUsuario, excluirUsuario);
        listUsuario.setShowRecordComponents(true);
        listUsuario.setShowRecordComponentsByCell(true);
        listUsuario.setShowAllRecords(true);
        listUsuario.setCanResizeFields(true);
        final SectionStackSection usuarioSection = new SectionStackSection();
        usuarioSection.setTitle("Usurios");
        usuarioSection.setItems(listUsuario);
        usuarioSection.setControls(addUsuario);
        usuarioSection.setExpanded(true);

        ArrayList<TreeMap<String, String>> usuarios = clienteEdicao.get(clienteEdicao.firstKey());
        TreeMap<String, String> usuarioAuxiliar = new TreeMap<String, String>();
        if (usuarios.get(0).get("codUsuario") != null) {
            for (TreeMap<String, String> users : usuarios) {
                if (usuarioAuxiliar.get(users.get("codUsuario")) == null) {
                    Record novoUser = new Record();
                    novoUser.setAttribute("codigo", users.get("codUsuario"));
                    novoUser.setAttribute("usuario", users.get("usuario"));
                    novoUser.setAttribute("senha", users.get("senha"));
                    novoUser.setAttribute("statusCod", users.get("ativoUsuario"));
                    novoUser.setAttribute("status",
                            ((users.get("ativoUsuario").equalsIgnoreCase("t")) ? "Ativo" : "Bloqueado"));
                    novoUser.setAttribute("codGrupo", users.get("codGrupo"));
                    novoUser.setAttribute("grupo", users.get("nomeGrupo"));
                    novoUser.setAttribute("resetUsuario",
                            ((users.get("resetUsuario").equalsIgnoreCase("t")) ? "Resetado" : "Resetar"));
                    novoUser.setAttribute("resetCod", users.get("resetUsuario"));
                    listUsuario.addData(novoUser);
                    //GWT.log("reset: "+users.get("resetUsuario"));
                    usuarioAuxiliar.put(users.get("codUsuario"), users.get("codUsuario"));
                }
            }
        }
        if (tipoPessoa.getValue().equals("2")) {
            dadosPessoais.setDefaultValue("Dados da Empresa");
            dadosPessoais.setSectionExpanded(true);

            nomeRazaoSocial.redraw();
            nomeRazaoSocial.setName("razao");
            nomeRazaoSocial.setTitle("Razo Social");
            nomeRazaoSocial.setKeyPressFilter("[a-zA-Z? 0-9]");

            cpfCnpj.redraw();
            cpfCnpj.setName("cnpj");
            cpfCnpj.setTitle("CNPJ");
            cpfCnpj.setMask("##.###.###/####-##");

            dataNascAbertura.redraw();
            dataNascAbertura.setName("dataAbertura");
            dataNascAbertura.setTitle("Data de Abertura.");

            profissaoResponsavel.redraw();
            profissaoResponsavel.setName("responsavel");
            profissaoResponsavel.setTitle("Responsvel");

            empresaCargo.redraw();
            empresaCargo.setName("cargo");
            empresaCargo.setTitle("Cargo");

        } else {
            dadosPessoais.setDefaultValue("Dados Pessoais");
            dadosPessoais.setSectionExpanded(true);

            nomeRazaoSocial.redraw();
            nomeRazaoSocial.setName("nome");
            nomeRazaoSocial.setTitle("Nome");
            nomeRazaoSocial.setKeyPressFilter("[a-zA-Z? ]");

            cpfCnpj.redraw();
            cpfCnpj.setTitle("CPF");
            cpfCnpj.setName("cpf");
            cpfCnpj.setMask("###.###.###-##");

            dataNascAbertura.redraw();
            dataNascAbertura.setTitle("Data de Nasc.");
            dataNascAbertura.setName("dataNasc");

            profissaoResponsavel.redraw();
            profissaoResponsavel.setName("profissao");
            profissaoResponsavel.setTitle("Profisso");

            empresaCargo.redraw();
            empresaCargo.setName("empresa");
            empresaCargo.setTitle("Empresa");

        }

        //Desenha o formulrio com todos os itens na tab Novo Cliente.
        formEditarCliente.setFields(unidade, datadeAdesao, tipoPessoa, dadosPessoais, nomeRazaoSocial, cpfCnpj,
                dataNascAbertura, profissaoResponsavel, empresaCargo);

        //Ao do boto para adicionar nova linha na ListGrid Endereo
        addEndereco.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {

                EditarNovoEndereco dialogEndereco = new EditarNovoEndereco(clienteEdicao, listEndereco,
                        enderecosTabBuscaCliente);
                dialogEndereco.setAnimateTime(1200);
                dialogEndereco.animateShow(AnimationEffect.FADE);
            }
        });
        //Ao do boto para adicionar nova linha na ListGrid Telefone 
        addTelefone.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {

                EditarNovoTelefone novoTel = new EditarNovoTelefone(clienteEdicao, listTelefone,
                        telefonesTabBuscaCliente);
                novoTel.setAnimateTime(1200);
                novoTel.animateShow(AnimationEffect.FADE);
            }
        });
        //Ao do boto para adicionar nova linha na ListGrid Email
        addEmail.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                EditarNovoEmail novoEmail = new EditarNovoEmail(clienteEdicao, listEmail, emailsTabBuscaCliente);
                novoEmail.setAnimateTime(1200);
                novoEmail.animateShow(AnimationEffect.FADE);
            }
        });
        //Ao do boto para adicionar nova linha na ListGrid Usurio
        addUsuario.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                EditarNovoUsuario dialogNovoUser = new EditarNovoUsuario(clienteEdicao, listUsuario,
                        usuariosTabBuscaCliente);
                dialogNovoUser.setAnimateTime(1200);
                dialogNovoUser.animateShow(AnimationEffect.FADE);
            }
        });

        salvar.addClickHandler(new ClickHandler() {

            @Override
            public void onClick(ClickEvent event) {
                if (formEditarCliente.validate()) {
                    contador = 0;
                    final Window janelaCarregando = new Window();
                    janelaCarregando.setShowTitle(false);
                    janelaCarregando.setWidth(100);
                    janelaCarregando.setHeight(50);
                    janelaCarregando.setShowEdges(false);
                    janelaCarregando.setShowCloseButton(false);
                    janelaCarregando.setShowMinimizeButton(false);
                    janelaCarregando.setIsModal(true);
                    janelaCarregando.setShowModalMask(true);
                    janelaCarregando.centerInPage();
                    janelaCarregando.setLayoutAlign(Alignment.CENTER);
                    final Label mensagem = new Label("Carregando..");
                    mensagem.setHeight(16);

                    new Timer() {
                        public void run() {

                            if (contador != 100) {
                                //destroy();
                                contador += 1 + (int) (5 * Math.random());
                                schedule(1 + (int) (5 * Math.random()));
                                mensagem.setContents("Carregando: " + contador + "%");
                                //GWT.log("!=100: "+contador);
                                janelaCarregando.addItem(mensagem);
                                janelaCarregando.setAnimateTime(1200);
                                janelaCarregando.animateShow(AnimationEffect.FADE);

                                if (contador >= 100) {
                                    ArrayList<TreeMap<String, String>> editor = clienteEdicao
                                            .get(clienteEdicao.firstKey());
                                    for (TreeMap<String, String> editado : editor) {
                                        if (editado.get("codCliente").equalsIgnoreCase(clienteEdicao.firstKey())) {
                                            editado.put("codCliente", clienteEdicao.firstKey());
                                            editado.put("codUnidade", unidade.getValueAsString());
                                            editado.put("nomeCliente", nomeRazaoSocial.getValueAsString());
                                            editado.put("dataAdesao",
                                                    String.valueOf(datadeAdesao.getValueAsDate().getTime()));
                                            editado.put("tipoCliente", tipoPessoa.getValueAsString());
                                        }
                                    }
                                    clienteEdicao.put(editor.get(0).get("codCliente"), editor);
                                    //GWT.log("Cliente edit:" + clienteEdicao);
                                    TreeMap<String, String> clienteEditado = new TreeMap<String, String>();
                                    clienteEditado.put("codCliente", clienteEdicao.firstKey());
                                    clienteEditado.put("unidadeCodUnidade", unidade.getValueAsString());
                                    clienteEditado.put("nome", nomeRazaoSocial.getValueAsString());
                                    Date dataAdesao = datadeAdesao.getValueAsDate();
                                    clienteEditado.put("tipo", tipoPessoa.getValueAsString());

                                    Info.dbService.alterarCliente(clienteEditado, dataAdesao,
                                            new AsyncCallback<Boolean>() {

                                                @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(Boolean clienteEditadoBD) {
                                                    //GWT.log("" + clienteEditadoBD);
                                                    if (clienteEditadoBD == true) {
                                                        if (clienteEdicao.get(clienteEdicao.firstKey()).get(0)
                                                                .get("tipoCliente").equals("1")) {
                                                            TreeMap<String, String> pessoaEditada = new TreeMap<String, String>();
                                                            pessoaEditada.put("codCliente",
                                                                    clienteEdicao.firstKey());
                                                            pessoaEditada.put("codPessoa",
                                                                    clienteEdicao.get(clienteEdicao.firstKey())
                                                                            .get(0).get("codPessoa"));
                                                            pessoaEditada.put("cpf", cpfCnpj.getValueAsString());
                                                            Date dataNascimento = dataNascAbertura.getValueAsDate();
                                                            pessoaEditada.put("profissao",
                                                                    profissaoResponsavel.getValueAsString());
                                                            pessoaEditada.put("empresa",
                                                                    empresaCargo.getValueAsString());
                                                            //GWT.log("antes do mtodo alterarPessoa");
                                                            Info.dbService.alterarPessoa(pessoaEditada,
                                                                    dataNascimento, new AsyncCallback<Boolean>() {

                                                                        @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(
                                                                                Boolean resultPessoaEditada) {
                                                                            if (resultPessoaEditada == true) {
                                                                                // GWT.log("Linha 1");
                                                                                ArrayList<TreeMap<String, String>> editor = clienteEdicao
                                                                                        .get(clienteEdicao
                                                                                                .firstKey());
                                                                                //GWT.log("Linha 2");
                                                                                //GWT.log("" + clienteEdicao.firstKey());
                                                                                for (TreeMap<String, String> editado : editor) {
                                                                                    //GWT.log("Linha 3");
                                                                                    //GWT.log("codCliente: " + editado.get("codCliente"));
                                                                                    if (editado.get("codCliente")
                                                                                            .equalsIgnoreCase(
                                                                                                    clienteEdicao
                                                                                                            .firstKey())) {
                                                                                        //GWT.log("Linha: " + clienteEdicao.get(clienteEdicao.firstKey()).get(0).get("codPessoa"));
                                                                                        editado.put("codPessoa",
                                                                                                clienteEdicao.get(
                                                                                                        clienteEdicao
                                                                                                                .firstKey())
                                                                                                        .get(0)
                                                                                                        .get("codPessoa"));
                                                                                        editado.put("cpf", cpfCnpj
                                                                                                .getValueAsString());
                                                                                        editado.put("dataNasc",
                                                                                                String.valueOf(
                                                                                                        dataNascAbertura
                                                                                                                .getValueAsDate()
                                                                                                                .getTime()));
                                                                                        editado.put("profissao",
                                                                                                profissaoResponsavel
                                                                                                        .getValueAsString());
                                                                                        editado.put(
                                                                                                "trabalhoPessoa",
                                                                                                empresaCargo
                                                                                                        .getValueAsString());
                                                                                    }
                                                                                }
                                                                                clienteEdicao.put(
                                                                                        editor.get(0)
                                                                                                .get("codCliente"),
                                                                                        editor);
                                                                                //GWT.log("Cliente Pessoa: " + clienteEdicao);
                                                                                dadosClienteTabBuscaCliente
                                                                                        .selectAllRecords();
                                                                                dadosClienteTabBuscaCliente
                                                                                        .removeSelectedData();
                                                                                Record cliente = new Record();
                                                                                cliente.setAttribute("codigo",
                                                                                        clienteEdicao.firstKey());
                                                                                cliente.setAttribute("nome",
                                                                                        nomeRazaoSocial
                                                                                                .getValueAsString());
                                                                                cliente.setAttribute("cpf",
                                                                                        Info.formataCPF(cpfCnpj
                                                                                                .getValueAsString()));
                                                                                cliente.setAttribute("dataNasc",
                                                                                        dataNascAbertura
                                                                                                .getValueAsDate());
                                                                                cliente.setAttribute("dataAdesao",
                                                                                        datadeAdesao
                                                                                                .getValueAsDate());
                                                                                cliente.setAttribute("unidade",
                                                                                        unidade.getDisplayValue());
                                                                                dadosClienteTabBuscaCliente
                                                                                        .addData(cliente);
                                                                                //SC.say("Cliente pessoa atualizado com sucesso");
                                                                            }

                                                                        }
                                                                    });
                                                        } else {
                                                            if (clienteEdicao.get(clienteEdicao.firstKey()).get(0)
                                                                    .get("tipoCliente").equals("2")) {
                                                                TreeMap<String, String> pessoaEditada = new TreeMap<String, String>();
                                                                pessoaEditada.put("codCliente",
                                                                        clienteEdicao.firstKey());
                                                                pessoaEditada.put("codEmpresa",
                                                                        clienteEdicao.get(clienteEdicao.firstKey())
                                                                                .get(0).get("codEmpresa"));
                                                                pessoaEditada.put("cnpj",
                                                                        cpfCnpj.getValueAsString());
                                                                Date dataAbertura = dataNascAbertura
                                                                        .getValueAsDate();
                                                                pessoaEditada.put("responsavel",
                                                                        profissaoResponsavel.getValueAsString());
                                                                pessoaEditada.put("cargo",
                                                                        empresaCargo.getValueAsString());
                                                                //GWT.log("antes do mtodo alterar Empresa");
                                                                Info.dbService.alterarEmpresa(pessoaEditada,
                                                                        dataAbertura, new AsyncCallback<Boolean>() {

                                                                            @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(
                                                                                    Boolean resultPessoaEditada) {
                                                                                if (resultPessoaEditada == true) {
                                                                                    //GWT.log("Linha 1 Empresa");
                                                                                    ArrayList<TreeMap<String, String>> editor = clienteEdicao
                                                                                            .get(clienteEdicao
                                                                                                    .firstKey());
                                                                                    //GWT.log("Linha 2 Empresa");
                                                                                    //GWT.log("" + clienteEdicao.firstKey());
                                                                                    for (TreeMap<String, String> editado : editor) {
                                                                                        //GWT.log("Linha 3 Empresa");
                                                                                        //GWT.log("codCliente: " + editado.get("codCliente"));
                                                                                        if (editado
                                                                                                .get("codCliente")
                                                                                                .equalsIgnoreCase(
                                                                                                        clienteEdicao
                                                                                                                .firstKey())) {
                                                                                            // GWT.log("Linha: " + clienteEdicao.get(clienteEdicao.firstKey()).get(0).get("codEmpresa"));
                                                                                            editado.put(
                                                                                                    "codEmpresa",
                                                                                                    clienteEdicao
                                                                                                            .get(clienteEdicao
                                                                                                                    .firstKey())
                                                                                                            .get(0)
                                                                                                            .get("codEmpresa"));
                                                                                            editado.put("cnpj",
                                                                                                    cpfCnpj.getValueAsString());
                                                                                            editado.put(
                                                                                                    "dataAbertura",
                                                                                                    String.valueOf(
                                                                                                            dataNascAbertura
                                                                                                                    .getValueAsDate()
                                                                                                                    .getTime()));
                                                                                            editado.put(
                                                                                                    "responsavel",
                                                                                                    profissaoResponsavel
                                                                                                            .getValueAsString());
                                                                                            editado.put("cargo",
                                                                                                    empresaCargo
                                                                                                            .getValueAsString());
                                                                                        }
                                                                                    }
                                                                                    clienteEdicao.put(
                                                                                            editor.get(0).get(
                                                                                                    "codCliente"),
                                                                                            editor);
                                                                                    //GWT.log("Cliente Empresa: " + clienteEdicao);
                                                                                    dadosClienteTabBuscaCliente
                                                                                            .selectAllRecords();
                                                                                    dadosClienteTabBuscaCliente
                                                                                            .removeSelectedData();
                                                                                    Record cliente = new Record();
                                                                                    cliente.setAttribute("codigo",
                                                                                            clienteEdicao
                                                                                                    .firstKey());
                                                                                    cliente.setAttribute("nome",
                                                                                            nomeRazaoSocial
                                                                                                    .getValueAsString());
                                                                                    cliente.setAttribute("cnpj",
                                                                                            Info.formataCNPJ(cpfCnpj
                                                                                                    .getValueAsString()));
                                                                                    cliente.setAttribute(
                                                                                            "dataAbert",
                                                                                            dataNascAbertura
                                                                                                    .getValueAsDate());
                                                                                    cliente.setAttribute(
                                                                                            "dataAdesao",
                                                                                            datadeAdesao
                                                                                                    .getValueAsDate());
                                                                                    cliente.setAttribute("unidade",
                                                                                            unidade.getDisplayValue());
                                                                                    dadosClienteTabBuscaCliente
                                                                                            .addData(cliente);

                                                                                }

                                                                            }
                                                                        });
                                                            }
                                                        }
                                                    } else {
                                                        SC.say("Erro ao alterar os dados do cliente!");
                                                    }
                                                }
                                            });
                                    janelaCarregando.addItem(mensagem);
                                    janelaCarregando.setAnimateTime(1200);
                                    janelaCarregando.animateHide(AnimationEffect.FADE);
                                    SC.say("Cliente atualizado com sucesso");
                                    contador = 100;
                                    janelaCarregando.destroy();
                                    windAux.destroy();
                                }
                            } else {
                                contador = 0;
                            }

                        }
                    }.schedule(50);

                }

            }

        });

        novoCliente.setSections(formSection, enderecoSection, telefoneSection, emailSection, usuarioSection);
        novoCliente.setVisibilityMode(VisibilityMode.MULTIPLE);
        novoCliente.setAnimateSections(true);
        novoCliente.setWidth100();
        novoCliente.setHeight100();
        novoCliente.setOverflow(Overflow.VISIBLE);

        painelBotoes.addMember(salvar);

        painelNovoCliente.addMember(novoCliente);
        painelNovoCliente.addMember(painelBotoes);
        //Desenhando o formulrio na Tela
        painelPai.addMember(painelNovoCliente);
        //GWT.log(""+clienteEdicao.size());
        addItem(painelPai);

    }
}