br.org.acessobrasil.ases.ferramentas_de_reparo.vista.label.PainelLabel.java Source code

Java tutorial

Introduction

Here is the source code for br.org.acessobrasil.ases.ferramentas_de_reparo.vista.label.PainelLabel.java

Source

/*******************************************************************************
 * Copyright 2005, 2006, 2007, 2008 Acessibilidade Brasil
 * Este arquivo  parte do programa ASES - Avaliador e Simulador para AcessibilidadE de Stios
 * O ASES  um software livre; voc pode redistribui-lo e/ou modifica-lo dentro dos termos da Licena Pblica Geral GNU como
 * publicada pela Fundao do Software Livre (FSF); na verso 2 da Licena, ou (na sua opnio) qualquer verso posterior.
 * Este programa  distribuido na esperana que possa ser  util, mas SEM NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAO a qualquer  MERCADO ou APLICAO EM PARTICULAR. Veja a Licena Pblica Geral GNU para maiores detalhes.
 * Voc deve ter recebido uma cpia da Licena Pblica Geral GNU, sob o ttulo "LICENCA.txt", junto com este programa, se no, escreva para a Fundao do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *******************************************************************************/

/*******************************************************************************
 * Copyright (c) 2005, 2006, 2007 Acessibilidade Brasil.
 * 
 * This file is part of ASES.
 *
 * ASES is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 * A copy of the license can be found at 
 * http://www.gnu.org/copyleft/lesser.txt.
 *******************************************************************************/

package br.org.acessobrasil.ases.ferramentas_de_reparo.vista.label;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.ColorModel;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextPane;
import javax.swing.SwingConstants;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumnModel;
import javax.swing.text.AttributeSet;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyleContext;
import javax.swing.text.StyledDocument;

import org.apache.commons.httpclient.HttpException;

import br.org.acessobrasil.ases.entidade.EstadoSilvinha;
import br.org.acessobrasil.ases.nucleo.InterfClienteDoNucleo;
import br.org.acessobrasil.ases.nucleo.InterfNucleos;
import br.org.acessobrasil.ases.nucleo.MethodFactNucleos;
import br.org.acessobrasil.ases.nucleo.adapters.entidade.ArmazenaErroOuAviso;
import br.org.acessobrasil.nucleuSilva.util.PegarPaginaWEB;
import br.org.acessobrasil.silvinha.util.AlteradorDeCsv;
import br.org.acessobrasil.silvinha.util.lang.TokenLang;
import br.org.acessobrasil.silvinha.vista.componentes.MenuSilvinha;
import br.org.acessobrasil.silvinha.vista.configs.CoresDefault;
import br.org.acessobrasil.silvinha.vista.frames.classePrincipal.FrameSilvinha;
import br.org.acessobrasil.silvinha.vista.frames.mensagens.Creditos;
import br.org.acessobrasil.silvinha2.mli.GERAL;
import br.org.acessobrasil.silvinha2.mli.LabelPanel;
import br.org.acessobrasil.silvinha2.mli.TradPainelAvaliacao;
import br.org.acessobrasil.silvinha2.mli.TradPainelRelatorio;
import br.org.acessobrasil.silvinha2.mli.XHTML_Panel;
import br.org.acessobrasil.silvinha2.util.G_File;
import br.org.acessobrasil.silvinha2.util.G_TextAreaSourceCode;
import br.org.acessobrasil.silvinha2.util.SalvaAlteracoes;
import br.org.acessobrasil.silvinha2.util.TxtBuffer;
import br.org.acessobrasil.silvinha2.util.onChange.OnChange;
import br.org.acessobrasil.silvinha2.util.onChange.OnChangeListener;

/**
 * UI para colocar rtulos
 * @author Renato Nati
 */
public class PainelLabel extends JPanel implements ActionListener, OnChangeListener {
    /**
     * 
     */

    private static final long serialVersionUID = 4808373827580204059L;

    public ArrayList<FerramentaLabelModel> posicaoeTag;

    public String nomeArquivo;

    public String codigo;

    public int inicial = 0;

    public static final int ARQUIVO = 0;

    public static final int CONTEUDO = 1;

    private int posTagRepInit;

    JMenuItem btnSalvar;

    private int posTagRepEnd;

    private String textoSelecionado;

    private ArTextPainelCorrecao arTextPainelCorrecao;

    private G_TextAreaSourceCode textAreaSourceCode;

    FrameSilvinha parentFrame;

    // private ConteudoCorrecaoLabel scrollPaneCorrecaoLabel;
    private JMenuBar menuBar;

    private JButton salvar;

    private JButton abrir;

    private JButton cancelar;

    // private JPanel panelLegenda;

    SalvaAlteracoes salvaAlteracoes;

    private JPanel pnRegra;
    JButton reverter;
    private JLabel lbRegras1;

    private JLabel lbRegras2;

    private JPanel pnParticRotulo;

    private JScrollPane spParticRotulo;

    private TArParticipRotulo tArParticipRotulo;

    private JPanel pnListaErros;

    private JScrollPane scrollPanetabLinCod;

    private TabelaCorrecaoLabel tableLinCod;

    private JPanel pnBotoes;

    private JButton adicionar;

    private JButton aplicarRotulo;

    private ArrayList<String> conteudoParticRotulo;
    public boolean original;
    DefaulTableModelNotEditable dtm;

    public static void main(String[] args) {
        // new FerramentaLabelPanel("C:\\pv2.15_3.13_faltaDeLabel.html");
        LabelPanel.carregaTexto(TokenLang.LANG);

    }

    public PainelLabel(String codHtml, int conteudoOuArquivo, FrameSilvinha parentFrame) {
        this.parentFrame = parentFrame;
        posicaoeTag = new ArrayList<FerramentaLabelModel>();

        @SuppressWarnings("unused")
        FerramentaLabelCtrl flc = new FerramentaLabelCtrl(codHtml);
        if (posicaoeTag.size() > 0) {
            initComponentsEscalavel(posicaoeTag);
        } else {
            // JOptionPane.showMessageDialog(null, "Pgina sem erros de
            // associao de rtulos");
            initComponentsEscalavel(posicaoeTag);
        }
    }

    public PainelLabel(FrameSilvinha parentFrame) {
        this.parentFrame = parentFrame;
        posicaoeTag = new ArrayList<FerramentaLabelModel>();
        new FerramentaLabelCtrl(TxtBuffer.getContent());
        initComponentsEscalavel(posicaoeTag);
    }

    public PainelLabel(ArrayList<FerramentaLabelModel> erros) {
        initComponentsEscalavel(erros);
    }

    private void initComponentsEscalavel(ArrayList<FerramentaLabelModel> erros) {

        LabelPanel.carregaTexto(TokenLang.LANG);
        JPanel regraFonteBtn = new JPanel();
        regraFonteBtn.setLayout(new BorderLayout());

        textAreaSourceCode = new G_TextAreaSourceCode();
        textAreaSourceCode.setTipoHTML();

        //parentFrame.setJMenuBar(this.criaMenuBar());

        // parentFrame.setTitle("Associador de rtulos");
        tableLinCod = new TabelaCorrecaoLabel(erros);
        arTextPainelCorrecao = new ArTextPainelCorrecao();

        salvar = new JButton();
        salvar.setEnabled(false);
        //btnSalvar.setEnabled(false);
        abrir = new JButton();
        cancelar = new JButton();
        // panelLegenda = new JPanel();
        salvaAlteracoes = TxtBuffer.getInstanciaSalvaAlteracoes(textAreaSourceCode.getTextPane(), salvar,
                new JMenuItem(), parentFrame);
        new OnChange(textAreaSourceCode, this);

        pnRegra = new JPanel();
        lbRegras1 = new JLabel();
        lbRegras2 = new JLabel();
        pnParticRotulo = new JPanel();
        spParticRotulo = new JScrollPane();
        tArParticipRotulo = new TArParticipRotulo();

        pnListaErros = new JPanel();
        scrollPanetabLinCod = new JScrollPane();

        pnBotoes = new JPanel();

        adicionar = new JButton();
        aplicarRotulo = new JButton();
        conteudoParticRotulo = new ArrayList<String>();
        // setJMenuBar(this.criaMenuBar());
        // ======== this ========
        // setTitle("Associe explicitamente os r\u00f3tulos aos respectivos
        // controles:");

        setBackground(CoresDefault.getCorPaineis());
        Container contentPane = this;// ??
        contentPane.setLayout(new GridLayout(2, 1));

        // ======== pnRegra ========
        {
            pnRegra.setBorder(criaBorda(LabelPanel.TITULO_REGRA));
            pnRegra.setLayout(new GridLayout(2, 1));
            pnRegra.add(lbRegras1);
            lbRegras1.setText(LabelPanel.REGRAP1);
            lbRegras2.setText(LabelPanel.REGRAP2);
            lbRegras1.setHorizontalAlignment(SwingConstants.CENTER);
            lbRegras2.setHorizontalAlignment(SwingConstants.CENTER);
            pnRegra.add(lbRegras1);
            pnRegra.add(lbRegras2);
            pnRegra.setPreferredSize(new Dimension(700, 60));
        }

        // ======== pnDescricao ========
        {
            // ---- Salvar ----
            salvar.setText(GERAL.BTN_SALVAR);
            salvar.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    System.out.println("btn_salvar.actionPerformed()");
                    salvarActionPerformed(e);
                }
            });

            salvar.setToolTipText(GERAL.DICA_SALVAR);
            salvar.getAccessibleContext().setAccessibleDescription(GERAL.DICA_SALVAR);
            salvar.getAccessibleContext().setAccessibleName(GERAL.DICA_SALVAR);
            salvar.setBounds(10, 0, 150, 25);

            abrir.setText(GERAL.BTN_ABRIR);
            abrir.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    AbrirActionPerformed(e);
                }
            });

            abrir.setToolTipText(LabelPanel.DICA_ABRIR);
            abrir.getAccessibleContext().setAccessibleDescription(LabelPanel.DICA_ABRIR);
            abrir.getAccessibleContext().setAccessibleName(LabelPanel.DICA_ABRIR);
            abrir.setBounds(165, 0, 150, 25);

            cancelar.setText(LabelPanel.TELA_ANTERIOR);
            cancelar.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    CancelarActionPerformed(e);
                }
            });

            cancelar.setToolTipText(LabelPanel.DICA_TELA_ANTERIOR);
            cancelar.getAccessibleContext().setAccessibleDescription(LabelPanel.DICA_TELA_ANTERIOR);
            cancelar.getAccessibleContext().setAccessibleName(LabelPanel.DICA_TELA_ANTERIOR);
            cancelar.setBounds(320, 0, 150, 25);

            // ======== pnParticRotulo ========
            {
                pnParticRotulo.setBorder(criaBorda(LabelPanel.TITULO_PARTCP_DO_ROTULO));
                pnParticRotulo.setLayout(new BorderLayout());

                // ======== spParticRotulo ========
                {
                    spParticRotulo.setViewportView(tArParticipRotulo);
                }
                pnParticRotulo.add(spParticRotulo, BorderLayout.CENTER);
                pnParticRotulo.setPreferredSize(new Dimension(780, 80));
            }
            // ======== pnListaErros ========
            {

                pnListaErros.setBorder(criaBorda(LabelPanel.TITULO_TABELA));
                pnListaErros.setLayout(new BorderLayout());
                // ======== scrollPanetabLinCod ========
                {
                    scrollPanetabLinCod.setViewportView(tableLinCod);
                }
                pnListaErros.add(scrollPanetabLinCod, BorderLayout.CENTER);
            }
            // ======== pnBotoes ========
            {

                // pnBotoes.setBorder(criaBorda(""));

                pnBotoes.setLayout(null);
                // ---- adicionar ----
                adicionar.setText(GERAL.BTN_ADICIONAR);
                adicionar.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {

                        adicionarActionPerformed(e);
                    }
                });

                adicionar.setToolTipText(LabelPanel.BTN_ADICIONAR_TOOLTIP);
                adicionar.getAccessibleContext().setAccessibleDescription(LabelPanel.BTN_ADICIONAR_TOOLTIP);
                adicionar.getAccessibleContext().setAccessibleName(LabelPanel.BTN_ADICIONAR_TOOLTIP);
                adicionar.setBounds(10, 5, 150, 25);
                pnBotoes.add(adicionar);

                // ---- aplicarRotulo ----
                aplicarRotulo.setEnabled(false);
                aplicarRotulo.setText(LabelPanel.BTN_APLICAR_ROTULO);
                aplicarRotulo.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {
                        aplicarRotuloActionPerformed(e);
                    }
                });

                aplicarRotulo.setToolTipText(LabelPanel.BTN_APLICAR_ROTULO_TOOLTIP);
                aplicarRotulo.getAccessibleContext()
                        .setAccessibleDescription(LabelPanel.BTN_APLICAR_ROTULO_TOOLTIP);
                aplicarRotulo.getAccessibleContext().setAccessibleName(LabelPanel.BTN_APLICAR_ROTULO_TOOLTIP);
                aplicarRotulo.setBounds(165, 5, 150, 25);
                pnBotoes.add(aplicarRotulo);
            }
        }
        /*
         * Colocar os controles
         */
        pnRegra.setBackground(CoresDefault.getCorPaineis());
        regraFonteBtn.add(pnRegra, BorderLayout.NORTH);
        textAreaSourceCode.setBorder(criaBorda(""));
        textAreaSourceCode.setBackground(CoresDefault.getCorPaineis());
        regraFonteBtn.add(textAreaSourceCode, BorderLayout.CENTER);
        pnBotoes.setPreferredSize(new Dimension(600, 35));
        pnBotoes.setBackground(CoresDefault.getCorPaineis());
        regraFonteBtn.add(pnBotoes, BorderLayout.SOUTH);
        regraFonteBtn.setBackground(CoresDefault.getCorPaineis());
        contentPane.add(regraFonteBtn);

        JPanel textoErrosBtn = new JPanel();
        textoErrosBtn.setLayout(new BorderLayout());
        pnParticRotulo.setBackground(CoresDefault.getCorPaineis());
        textoErrosBtn.add(pnParticRotulo, BorderLayout.NORTH);
        textoErrosBtn.add(pnListaErros, BorderLayout.CENTER);
        JPanel pnSalvarCancelar = new JPanel();
        pnSalvarCancelar.setLayout(null);
        pnSalvarCancelar.setPreferredSize(new Dimension(600, 35));
        pnSalvarCancelar.add(salvar);
        pnSalvarCancelar.add(abrir);
        pnSalvarCancelar.add(cancelar);
        pnSalvarCancelar.setBackground(CoresDefault.getCorPaineis());
        if (!original) {
            reverter = new JButton("Reverter");
            reverter.setText(TradPainelRelatorio.REVERTER);
            reverter.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    setVisible(false);
                    TxtBuffer.setContent(TxtBuffer.getContentOriginal());
                    parentFrame.showPainelFerramentaLabelPArq(TxtBuffer.getContentOriginal());
                    setVisible(true);
                }
            });
            //reverter.setActionCommand("Reverter");
            reverter.setToolTipText(TradPainelRelatorio.DICA_REVERTER);
            reverter.getAccessibleContext().setAccessibleDescription(TradPainelRelatorio.DICA_REVERTER);
            reverter.getAccessibleContext().setAccessibleName(TradPainelRelatorio.DICA_REVERTER);
            reverter.setBounds(485, 0, 150, 25);
            pnSalvarCancelar.add(reverter);
        }

        textoErrosBtn.add(pnSalvarCancelar, BorderLayout.SOUTH);
        pnListaErros.setBackground(CoresDefault.getCorPaineis());
        if (tableLinCod.getRowCount() == 0)
            tableLinCod.addLinha(0, 0, GERAL.DOC_SEM_ERROS);
        textoErrosBtn.add(pnListaErros, BorderLayout.CENTER);
        contentPane.setBackground(CoresDefault.getCorPaineis());
        contentPane.add(textoErrosBtn);

        this.setVisible(true);

    }

    private void AbrirActionPerformed(ActionEvent e) {
        G_File caminhoRecente = new G_File("config/html_recente.txt");
        String a[] = { ".html", ".htm" };
        G_File temp = new G_File(caminhoRecente.read(), a);
        if (temp.getFile() != null) {
            caminhoRecente.write(temp.getFile().getAbsolutePath());
            TxtBuffer.setContentOriginal(temp.read(), "0");
            parentFrame.showPainelFerramentaLabelPArq(temp.read());
        }
    }

    private void abrir() {
        G_File caminhoRecente = new G_File("config/html_recente.txt");
        String a[] = { ".html", ".htm" };
        G_File temp = new G_File(caminhoRecente.read(), a);
        if (temp.getFile() != null) {
            caminhoRecente.write(temp.getFile().getAbsolutePath());
            TxtBuffer.setContentOriginal(temp.read(), "0");
            parentFrame.showPainelFerramentaLabelPArq(temp.read());
        }
    }

    private void abreUrl() {
        String url;
        url = JOptionPane.showInputDialog(this, GERAL.DIGITE_ENDERECO, "http://");
        PegarPaginaWEB ppw = new PegarPaginaWEB();
        if (url != null) {
            try {
                String codHtml = ppw.getContent(url);
                TxtBuffer.setContentOriginal(codHtml, "0");
                parentFrame.showPainelFerramentaLabelPArq(codHtml);
                EstadoSilvinha.setLinkAtual(url);
            } catch (HttpException e1) {
                JOptionPane.showMessageDialog(this, TradPainelAvaliacao.AVISO_NAO_CONECTOU,
                        TradPainelAvaliacao.AVISO, JOptionPane.WARNING_MESSAGE);
            } catch (Exception e1) {
                JOptionPane.showMessageDialog(this, TradPainelAvaliacao.AVISO_VERIFIQUE_URL,
                        TradPainelAvaliacao.AVISO, JOptionPane.WARNING_MESSAGE);
            }
        }
    }

    private void CancelarActionPerformed(ActionEvent e) {
        salvaAlteracoes.cancelar();
        /*
         * int escolha=9999; if(textoModificado){
         * escolha=JOptionPane.showConfirmDialog(null, "deseja Salvar as
         * alteraes?");
         * 
         * 
         * if(escolha==0){ salvar(); parentFrame.showLastActivePanel(); }else
         * if(escolha==1){ parentFrame.showLastActivePanel(); }
         * 
         * }else{ parentFrame.showLastActivePanel(); }
         */

    }

    private void salvarActionPerformed(ActionEvent e) {
        salvaAlteracoes.salvar();
    }

    private void adicionarActionPerformed(ActionEvent e) {
        textoSelecionado = textAreaSourceCode.getTextPane().getSelectedText();
        if (textoSelecionado == null) {
            System.out.println(LabelPanel.SEM_TEXTO_SELEC);
        } else {
            if (tableLinCod.getRowCount() > 0 && tableLinCod.getSelectedRow() != -1) {
                arTextPainelCorrecao.setColorForSelectedText(new Color(255, 204, 102), new Color(0, 0, 0));
                // scrollPaneCorrecaoLabel.setColorForSelectedText(new
                // Color(255, 204, 102), new Color(0, 0, 0));
                tArParticipRotulo.addTexto(textoSelecionado, textAreaSourceCode.getTextPane().getSelectionStart(),
                        textAreaSourceCode.getTextPane().getSelectionEnd());
            }
        }
    }

    private void aplicarRotuloActionPerformed(ActionEvent e) {
        aplicarRotulo.setEnabled(false);
        salvaAlteracoes.setAlterado();
        // salvar.setEnabled(true);
        // btnSalvar.setEnabled(true);
        int selectedStart = 0;
        int selectedEnd = 0;
        int caret = getPosTagRepInit();
        boolean possuiId = false;
        int corretordePosicoesdoLabel = 0;
        int corretordePosicoesdoControle = 0;
        ArrayList<Integer> ordenador = new ArrayList<Integer>();
        ArrayList<String> conteudoParticRotuloOrdenado = new ArrayList<String>();
        conteudoParticRotulo = null;
        conteudoParticRotulo = tArParticipRotulo.getTextoEPos();
        String[] conteudo = new String[3];
        String codHTML = textAreaSourceCode.getTextPane().getText().replace("\r", "");
        //System.out.println(codHTML.substring((Integer) (getPosTagRepEnd() + corretordePosicoesdoControle - 1), (getPosTagRepEnd() + corretordePosicoesdoControle - 1) + 36));
        //Descobre o ultimo indice
        while (codHTML.indexOf("SIL" + inicial) != -1) {
            inicial++;
        }
        StringBuilder identificador = new StringBuilder();
        String tag = codHTML.substring(getPosTagRepInit(), getPosTagRepEnd());
        System.out.println("tag='" + tag + "'");
        int posId = tag.indexOf("id=");
        int posAspa;
        char caract = '_';
        if (posId != -1) {
            posAspa = posId + "id=".length();
            caract = tag.charAt(posAspa);
            int posFinalValId;
            if (caract == '\'') {
                posFinalValId = tag.indexOf('\'', posId + "id=".length() + 1);
            } else if (caract == '\"') {
                posFinalValId = tag.indexOf('\"', posId + "id=".length() + 1);
            } else {
                posFinalValId = tag.indexOf(' ', posId + "id=".length());
                if (posFinalValId == -1) {
                    posFinalValId = tag.indexOf('>', posId + "id=".length() + 1);
                }
                posFinalValId--;

            }
            possuiId = true;
            if (caract == '\"' || caract == '\'') {
                identificador.append(tag.substring(posAspa + 1, posFinalValId));
            } else {
                identificador.append(tag.substring(posAspa, posFinalValId + 1));
            }

        } else {
            identificador.append("SIL" + inicial);
        }

        String strId = identificador.toString();
        for (String conteudoPR : conteudoParticRotulo) {
            conteudo = conteudoPR.split("@");
            ordenador.add(Integer.parseInt(conteudo[1]));
        }

        int[] ordem = new int[ordenador.size()];
        for (int i = 0; i < ordem.length; i++) {
            ordem[i] = ordenador.get(i);
        }

        Arrays.sort(ordem);

        for (int i = 0; i < ordem.length; i++) {
            for (String conteudoPR : conteudoParticRotulo) {
                conteudo = conteudoPR.split("@");

                if (Integer.parseInt(conteudo[1]) == ordem[i]) {
                    conteudoParticRotuloOrdenado.add(conteudoPR);
                }

            }
        }
        for (String conteudoPR : conteudoParticRotuloOrdenado) {
            conteudo = conteudoPR.split("@");

            System.out.println("posico: " + Integer.parseInt(conteudo[1]));

        }

        for (String conteudoPR : conteudoParticRotuloOrdenado) {

            conteudo = conteudoPR.split("@");
            conteudo[0] = "<label for=\"" + strId + "\">" + conteudo[0] + "</label>";
            selectedStart = Integer.parseInt(conteudo[1]) + corretordePosicoesdoLabel;
            selectedEnd = Integer.parseInt(conteudo[2]) + corretordePosicoesdoLabel;
            //so conta o que foi acrescentado
            corretordePosicoesdoLabel += ("<label for=\"" + strId + "\"></label>").length();

            if ((selectedStart < getPosTagRepInit() + corretordePosicoesdoLabel)) {
                corretordePosicoesdoControle = corretordePosicoesdoLabel;

            }
            /*
             * if((selectedStart>getPosTagRepInit()+corretordePosicoesdoLabel)){
             * //arTextPainelCorrecao.select(selectedStart+("id=x").length(),
             * selectedEnd+("id=x").length());
             * 
             * }else{ }
             */
            textAreaSourceCode.getTextPane().select(selectedStart, selectedEnd);

            arTextPainelCorrecao.setTextoParaSelecionado(conteudo[0]);

            arTextPainelCorrecao.setASet(
                    arTextPainelCorrecao.getSc().addAttributes(SimpleAttributeSet.EMPTY, SimpleAttributeSet.EMPTY));
            textAreaSourceCode.getTextPane().select(0, textAreaSourceCode.getTextPane().getText().length());
            arTextPainelCorrecao.setColorForSelectedText(new Color(255, 255, 255), new Color(0, 0, 0));
            textAreaSourceCode.getTextPane().setCharacterAttributes(arTextPainelCorrecao.getASet(), false);

        }
        if (!possuiId) {
            char c = codHTML.charAt(getPosTagRepEnd() - 2);
            if (c == '/') {
                textAreaSourceCode.getTextPane().select(getPosTagRepEnd() + corretordePosicoesdoControle - 2,
                        getPosTagRepEnd() + corretordePosicoesdoControle);
                arTextPainelCorrecao.setTextoParaSelecionado(" id=\"" + strId + "\"/>");
            } else {
                textAreaSourceCode.getTextPane().select(getPosTagRepEnd() + corretordePosicoesdoControle - 1,
                        getPosTagRepEnd() + corretordePosicoesdoControle);
                arTextPainelCorrecao.setTextoParaSelecionado(" id=\"" + strId + "\">");
            }
        }

        tArParticipRotulo.apagaTexto();
        codigo = textAreaSourceCode.getTextPane().getText();

        //G_File arq = new G_File("C:\\ buffer");
        //arq.write(textAreaSourceCode.getTextPane().getText());
        new FerramentaLabelCtrl(codigo, true);
        textAreaSourceCode.coloreSource();
        tableLinCod.delAtualLinha();
        textAreaSourceCode.getTextPane().setCaretPosition(caret);
        TxtBuffer.setContent(textAreaSourceCode.getTextPane().getText());
    }

    private class FerramentaLabelCtrl implements InterfClienteDoNucleo {
        AlteradorDeCsv alteradorDeCsv;
        /**
         * Indica se salva o CSV
         */
        private boolean salva = false;

        private InterfNucleos nucleo;

        ArrayList<ArmazenaErroOuAviso> errosP2;

        public FerramentaLabelCtrl() {
        }

        public FerramentaLabelCtrl(String conteudo) {
            if (conteudo == null)
                return;

            nucleo = MethodFactNucleos.mFNucleos("Estruturado");
            nucleo.setCodHTML(conteudo);
            if (EstadoSilvinha.orgao == 2) {

                nucleo.setWCAGEMAG(InterfNucleos.EMAG);
            } else {

                nucleo.setWCAGEMAG(InterfNucleos.WCAG);
            }

            nucleo.addCliente(this);
            nucleo.avalia();
            codigo = nucleo.getCodHTMLOriginal();

        }

        public FerramentaLabelCtrl(String conteudo, boolean salva) {

            if (conteudo == null)
                return;
            this.salva = salva;
            if (EstadoSilvinha.conteudoEmPainelResumo) {
                alteradorDeCsv = new AlteradorDeCsv(EstadoSilvinha.hashCodeAtual);
            }
            nucleo = MethodFactNucleos.mFNucleos("Estruturado");
            nucleo.setCodHTML(conteudo);
            if (EstadoSilvinha.orgao == 2) {

                nucleo.setWCAGEMAG(InterfNucleos.EMAG);
            } else {

                nucleo.setWCAGEMAG(InterfNucleos.WCAG);
            }

            nucleo.addCliente(this);
            nucleo.avalia();
            codigo = nucleo.getCodHTMLOriginal();

        }

        private void reload() {
            //G_File arq = new G_File("C:\\ buffer");
            G_File arq = new G_File("");

            // errosP2.clear();
            posicaoeTag.clear();
            nucleo = MethodFactNucleos.mFNucleos("Estruturado");
            nucleo.setCodHTML(arq.read());
            if (EstadoSilvinha.orgao == 2) {

                nucleo.setWCAGEMAG(InterfNucleos.EMAG);
            } else {

                nucleo.setWCAGEMAG(InterfNucleos.WCAG);
            }

            nucleo.addCliente(this);
            nucleo.avalia();
            codigo = nucleo.getCodHTMLOriginal();

            tableLinCod.clearTab();
            tableLinCod.initComponents(posicaoeTag);

        }

        public void avisosP1(ArrayList<ArmazenaErroOuAviso> armazenaErroOuAviso) {
            if (salva && EstadoSilvinha.conteudoEmPainelResumo) {
                String valor = alteradorDeCsv.getAvisoP1(EstadoSilvinha.hashCodeAtual);

                valor = alteradorDeCsv.reconstroiComBarraENovoValor(valor, armazenaErroOuAviso.size());

                alteradorDeCsv.setAvisoP1(EstadoSilvinha.hashCodeAtual, valor);
            }
        }

        public void avisosP2(ArrayList<ArmazenaErroOuAviso> armazenaErroOuAviso) {
            if (salva && EstadoSilvinha.conteudoEmPainelResumo) {
                String valor = alteradorDeCsv.getAvisoP2(EstadoSilvinha.hashCodeAtual);

                valor = alteradorDeCsv.reconstroiComBarraENovoValor(valor, armazenaErroOuAviso.size());

                alteradorDeCsv.setAvisoP2(EstadoSilvinha.hashCodeAtual, valor);
            }
        }

        public void avisosP3(ArrayList<ArmazenaErroOuAviso> armazenaErroOuAviso) {
            if (salva && EstadoSilvinha.conteudoEmPainelResumo) {
                String valor = alteradorDeCsv.getAvisoP3(EstadoSilvinha.hashCodeAtual);

                valor = alteradorDeCsv.reconstroiComBarraENovoValor(valor, armazenaErroOuAviso.size());

                alteradorDeCsv.setAvisoP3(EstadoSilvinha.hashCodeAtual, valor);
            }
        }

        public void errosP1(ArrayList<ArmazenaErroOuAviso> armazenaErroOuAviso) {
            if (salva && EstadoSilvinha.conteudoEmPainelResumo) {
                String valor = alteradorDeCsv.getErroP1(EstadoSilvinha.hashCodeAtual);
                valor = alteradorDeCsv.reconstroiComBarraENovoValor(valor, armazenaErroOuAviso.size());

                alteradorDeCsv.setErroP1(EstadoSilvinha.hashCodeAtual, valor);
            }

        }

        public void errosP2(ArrayList<ArmazenaErroOuAviso> armazenaErroOuAviso) {
            if (salva && EstadoSilvinha.conteudoEmPainelResumo) {
                String valor = alteradorDeCsv.getErroP2(EstadoSilvinha.hashCodeAtual);
                valor = alteradorDeCsv.reconstroiComBarraENovoValor(valor, armazenaErroOuAviso.size());

                alteradorDeCsv.setErroP2(EstadoSilvinha.hashCodeAtual, valor);
            }
            errosP2 = armazenaErroOuAviso;
        }

        public void errosP3(ArrayList<ArmazenaErroOuAviso> armazenaErroOuAviso) {
            if (salva && EstadoSilvinha.conteudoEmPainelResumo) {
                String valor = alteradorDeCsv.getErroP3(EstadoSilvinha.hashCodeAtual);
                valor = alteradorDeCsv.reconstroiComBarraENovoValor(valor, armazenaErroOuAviso.size());

                alteradorDeCsv.setErroP3(EstadoSilvinha.hashCodeAtual, valor);
            }
        }

        public void fimDaAvaliacao() {
            if (salva && EstadoSilvinha.conteudoEmPainelResumo) {
                alteradorDeCsv.escreveEmDisco();
            }
            this.salva = false;
            if (nucleo.getCodWcagEmag() == InterfNucleos.EMAG) {
                for (ArmazenaErroOuAviso aEA : errosP2) {
                    if (aEA.getIdTextoRegra().equals("2.15")) {
                        FerramentaLabelModel errado = new FerramentaLabelModel(aEA.getLinha(), aEA.getColuna());
                        errado.setTexto(aEA.getTagCompleta());
                        posicaoeTag.add(errado);
                    }
                }
            } else if (nucleo.getCodWcagEmag() == InterfNucleos.WCAG) {
                for (ArmazenaErroOuAviso aEA : errosP2) {
                    if (aEA.getIdTextoRegra().equals("12.4")) {
                        FerramentaLabelModel errado = new FerramentaLabelModel(aEA.getLinha(), aEA.getColuna());
                        errado.setTexto(aEA.getTagCompleta());
                        posicaoeTag.add(errado);
                    }
                }
            }
        }

        public void linksAchadosPeloNucleo(HashSet<String> links) {

        }

        public ArrayList<FerramentaLabelModel> getPosicaoeTag() {
            return posicaoeTag;
        }

        public void setPosicaoeTag(ArrayList<FerramentaLabelModel> posiceTag) {
            posicaoeTag = posiceTag;
        }

    }

    private class FerramentaLabelModel {
        /**
         * Linha onde a tag est localizada.
         */
        private int linha;

        /**
         * Coluna onde a tag est localizada.
         */
        private int coluna;

        private String texto;

        /**
         * Construtor de Posicao.
         * 
         * @param posLinha
         *            Linha onde est a tag.
         * @param posCol
         *            Coluna onde est a tag.
         */
        public FerramentaLabelModel(final int posLinha, final int posCol) {

            this.linha = posLinha;
            this.coluna = posCol;
        }

        public FerramentaLabelModel() {
        }

        /**
         * @see java.lang.Object#toString()
         * @return Retorna as coordenadas da tag HTML (linha,coluna).
         */
        @Override
        public String toString() {
            return this.linha + " | " + this.coluna;
        }

        /**
         * @return Retorna o valor de coluna.
         */
        public int getColuna() {
            return coluna;
        }

        /**
         * @param numCol
         *            Seta o valor de coluna.
         */
        public void setColuna(final int numCol) {
            this.coluna = numCol;
        }

        /**
         * @return Retorna o valor de linha.
         */
        public int getLinha() {
            return linha;
        }

        /**
         * @param numLinha
         *            Seta o valor de linha.
         */
        public void setLinha(final int numLinha) {
            this.linha = numLinha;
        }

        public String getTexto() {
            return texto;
        }

        public void setTexto(String texto) {
            this.texto = texto;
        }

    }

    private class TabelaCorrecaoLabel extends JTable implements MouseListener {
        private static final long serialVersionUID = 1L;

        private TabelaCorrecaoLabel(ArrayList<FerramentaLabelModel> erros) {
            initComponents(erros);

        }

        private void initComponents(ArrayList<FerramentaLabelModel> erros) {
            cria();

            for (FerramentaLabelModel flm : erros) {
                addLinha(flm.getLinha(), flm.getColuna(), flm.getTexto());
            }
        }

        private void cria() {
            dtm = new DefaulTableModelNotEditable();
            dtm.setColumnIdentifiers(new String[] { GERAL.LINHA, GERAL.COLUNA, GERAL.TAG });
            this.addMouseListener(this);
            setModel(dtm);
            {
                TableColumnModel cm = getColumnModel();
                cm.getColumn(0).setMaxWidth(50);
                cm.getColumn(1).setMaxWidth(50);
                // cm.getColumn(2).setMaxWidth(600);
            }
        }

        public void clearTab() {
            cria();
        }

        public void addLinha(int linha, int coluna, String codigo) {
            try {
                if (dtm.getRowCount() > 0)
                    if (Integer.parseInt(String.valueOf(dtm.getValueAt(0, 0))) == 0
                            && Integer.parseInt(String.valueOf(dtm.getValueAt(0, 1))) == 0)
                        dtm.removeRow(0);
            } catch (Exception e) {
                System.err.println("dtm.getValueAt(0,0)=" + dtm.getValueAt(0, 0) + " dtm.getValueAt(0,1)="
                        + dtm.getValueAt(0, 0));
                e.printStackTrace();
            }
            try {
                dtm.addRow(new Object[] { linha, coluna, codigo });
            } catch (Exception e) {
                System.err.println("linha=" + linha + " coluna=" + coluna + " codigo='" + codigo + "'");
                e.printStackTrace();
            }
        }

        public void delAtualLinha() {
            dtm.removeRow(this.getSelectedRow());
        }

        public void mouseClickedbkp(MouseEvent e) {

            arTextPainelCorrecao.selectAll();
            arTextPainelCorrecao.setColorForSelectedText(new Color(255, 255, 255), new Color(0, 0, 0));
            arTextPainelCorrecao.formataHTML();
            tArParticipRotulo.apagaTexto();
            aplicarRotulo.setEnabled(false);
            TabelaCorrecaoLabel tcl = ((TabelaCorrecaoLabel) e.getComponent());
            int linha = (Integer) dtm.getValueAt(tcl.getSelectedRow(), 0);
            int coluna = (Integer) dtm.getValueAt(tcl.getSelectedRow(), 1);
            int posAtual = 0;
            int posFinal = 0;
            String codHTML = arTextPainelCorrecao.getText().replace("\r", "");
            int i;
            for (i = 0; i < (linha - 1); i++) {
                posAtual = codHTML.indexOf("\n", posAtual + 1);
            }
            i = 0;
            // gambiarra provisria
            posFinal = codHTML.indexOf((String) dtm.getValueAt(tcl.getSelectedRow(), 2), posAtual + coluna);
            while (codHTML.charAt(posFinal + i) != '>') {
                i++;
            }

            setPosTagRepInit(posFinal);
            setPosTagRepEnd(posFinal + i + 1);

            arTextPainelCorrecao.select(getPosTagRepInit(), getPosTagRepEnd());

            arTextPainelCorrecao.setColorForSelectedText(new Color(255, 255, 255), new Color(255, 0, 0));
            arTextPainelCorrecao.setUnderline();
        }

        public void selectTag() {

        }

        public void mouseClicked(MouseEvent e) {
            new Thread(new Runnable() {
                public void run() {
                    System.gc();
                }

            }).start();
            TabelaCorrecaoLabel tcl = ((TabelaCorrecaoLabel) e.getComponent());
            int linha = (Integer) dtm.getValueAt(tcl.getSelectedRow(), 0);
            int coluna = (Integer) dtm.getValueAt(tcl.getSelectedRow(), 1);
            if (linha == 0 && coluna == 0) {
                return;
            }
            textAreaSourceCode.getTextPane().selectAll();
            arTextPainelCorrecao.setColorForSelectedText(new Color(255, 255, 255), new Color(0, 0, 0));
            textAreaSourceCode.coloreSource();
            // arTextPainelCorrecao.formataHTML();
            tArParticipRotulo.apagaTexto();
            aplicarRotulo.setEnabled(false);

            int endTag = 0;
            int posAtual = 0;
            int posFinal = 0;
            String codHTML = textAreaSourceCode.getTextPane().getText().replace("\r", "");
            int i;
            for (i = 0; i < (linha - 1); i++) {
                posAtual = codHTML.indexOf("\n", posAtual + 1);
            }
            i = 0;
            // gambiarra provisria
            posFinal = codHTML.indexOf((String) dtm.getValueAt(tcl.getSelectedRow(), 2), posAtual + coluna);
            while (codHTML.charAt(posFinal + i) != '>') {
                i++;
            }

            setPosTagRepInit(posFinal);
            setPosTagRepEnd(posFinal + i + 1);

            textAreaSourceCode.goToLine(linha);
            textAreaSourceCode.getTextPane().select(getPosTagRepInit(), getPosTagRepEnd());

            arTextPainelCorrecao.setColorForSelectedText(Color.decode("0xEEEEEE"), new Color(255, 0, 0));
            arTextPainelCorrecao.setUnderline();
            // TODO Auto-generated method stub

        }

        public void mouseEntered(MouseEvent e) {
            // TODO Auto-generated method stub

        }

        public void mouseExited(MouseEvent e) {
            // TODO Auto-generated method stub

        }

        public void mousePressed(MouseEvent e) {
            // TODO Auto-generated method stub

        }

        public void mouseReleased(MouseEvent e) {
            // TODO Auto-generated method stub

        }
    }

    private class ArTextPainelCorrecao extends JTextPane implements MouseListener {
        private StyledDocument styledDocument;

        private DefaultStyledDocument doc = null;

        private ArrayList<String> modificados = new ArrayList<String>();

        private Style defautStyle = null;

        private Style mainStyle = null;

        private JTextPane texto;

        private AttributeSet aSet;

        private StyleContext sc;

        private ArTextPainelCorrecao() {
            initComponents();

        }

        private void initComponents() {
            textAreaSourceCode.getTextPane().setEditable(true);
            testaRTF();
        }

        /**
         * Troca o texto da rea seleciona pelo parametro
         * 
         * @param texto
         */
        private void setTextoParaSelecionado(String texto) {

            int intTemp = 0;
            int startSelect = textAreaSourceCode.getTextPane().getSelectionStart();
            int endSelect = textAreaSourceCode.getTextPane().getSelectionEnd();
            String codHTML = textAreaSourceCode.getTextPane().getText();

            // observao: o JtextArea no identifica \r
            // apenas \n, de modo que tem que compensar a falta de \r
            // o getSelectionStart() no conta o \r
            intTemp = 0;
            while (codHTML.indexOf("\r", intTemp + 1) != -1) {
                intTemp = codHTML.indexOf("\r", intTemp + 1);

                if (intTemp < startSelect) {
                    startSelect++;
                    endSelect++;

                }
                if (intTemp > startSelect) {
                    endSelect++;

                }
                if (intTemp > endSelect) {
                    break;
                }

            }
            intTemp = 0;
            //TODO 
            String novoCodigo = codHTML.substring(0, startSelect) + texto
                    + codHTML.substring(endSelect - 0, codHTML.length());
            textAreaSourceCode.getTextPane().setText(novoCodigo);

            sc = StyleContext.getDefaultStyleContext();

            defautStyle = sc.getStyle(StyleContext.DEFAULT_STYLE);

            mainStyle = sc.addStyle("MainStyle", defautStyle);
            StyleConstants.setForeground(mainStyle, new Color(0, 0, 255));
            aSet = sc.addAttributes(SimpleAttributeSet.EMPTY, mainStyle);
            textAreaSourceCode.getTextPane().select(startSelect, endSelect - 1);
            textAreaSourceCode.getTextPane().setCharacterAttributes(aSet, false);

        }

        /**
         * Troca o texto da rea seleciona pelo parametro
         * 
         * @param texto
         * @deprecated
         */
        public void setTextoParaSelecionadoBKP(String texto) {

            int intTemp = 0;
            int startSelect = getSelectionStart();
            int endSelect = getSelectionEnd();
            int contEnter = 0;
            String codHTML = getText();

            // observao: o JtextArea no identifica \r
            // apenas \n, de modo que tem que compensar a falta de \r
            // o getSelectionStart() no conta o \r
            intTemp = 0;
            while (codHTML.indexOf("\r", intTemp + 1) != -1) {
                intTemp = codHTML.indexOf("\r", intTemp + 1);

                if (intTemp < startSelect) {
                    startSelect++;
                    endSelect++;

                }
                if (intTemp > startSelect) {
                    endSelect++;

                }
                if (intTemp > endSelect) {
                    break;
                }

            }
            intTemp = 0;
            setText(codHTML.substring(0, startSelect) + texto + codHTML.substring(endSelect - 0, codHTML.length()));

            sc = StyleContext.getDefaultStyleContext();

            defautStyle = sc.getStyle(StyleContext.DEFAULT_STYLE);

            mainStyle = sc.addStyle("MainStyle", defautStyle);
            StyleConstants.setForeground(mainStyle, new Color(0, 0, 255));
            aSet = sc.addAttributes(SimpleAttributeSet.EMPTY, mainStyle);

            this.select(startSelect, endSelect - 1);
            this.setCharacterAttributes(aSet, false);

        }

        public void testaRTF() {

            sc = StyleContext.getDefaultStyleContext();

            defautStyle = sc.getStyle(StyleContext.DEFAULT_STYLE);
            mainStyle = sc.addStyle("MainStyle", defautStyle);

            aSet = sc.addAttributes(SimpleAttributeSet.EMPTY, mainStyle);
            // codigo=codigo.replace("\r","\t");

            textAreaSourceCode.getTextPane().setText(codigo.replaceAll("\r", ""));
            //textAreaSourceCode.getTextPane().setText(textAreaSourceCode.getTextPane().getText().replaceAll("\r", ""));

            textAreaSourceCode.getTextPane().setCharacterAttributes(aSet, false);

            textAreaSourceCode.coloreSource();
            textAreaSourceCode.getTextPane().addMouseListener(this);

        }

        public void setUnderline() {
            sc = StyleContext.getDefaultStyleContext();

            defautStyle = sc.getStyle(StyleContext.DEFAULT_STYLE);
            mainStyle = sc.addStyle("MainStyle", defautStyle);

            StyleConstants.setUnderline(mainStyle, true);

            aSet = sc.addAttributes(SimpleAttributeSet.EMPTY, mainStyle);

            textAreaSourceCode.getTextPane().setCharacterAttributes(aSet, false);

        }

        public void setColorForSelectedText(Color background, Color foreground) {
            sc = StyleContext.getDefaultStyleContext();

            defautStyle = sc.getStyle(StyleContext.DEFAULT_STYLE);
            mainStyle = sc.addStyle("MainStyle", defautStyle);

            if (textAreaSourceCode.getAutoContrasteTipo() == 0) {
                StyleConstants.setBold(mainStyle, true);
                StyleConstants.setBackground(mainStyle, background);
                StyleConstants.setForeground(mainStyle, foreground);

            } else if (textAreaSourceCode.getAutoContrasteTipo() == 1) {
                StyleConstants.setBold(mainStyle, true);
                StyleConstants.setBackground(mainStyle, Color.BLACK);
                StyleConstants.setForeground(mainStyle, Color.WHITE);

            } else if (textAreaSourceCode.getAutoContrasteTipo() == 2) {
                StyleConstants.setBold(mainStyle, true);
                StyleConstants.setBackground(mainStyle, Color.WHITE);
                StyleConstants.setForeground(mainStyle, Color.BLACK);
            }

            aSet = sc.addAttributes(SimpleAttributeSet.EMPTY, mainStyle);

            textAreaSourceCode.getTextPane().setCharacterAttributes(aSet, false);
            addModificados(textAreaSourceCode.getTextPane().getSelectionStart(),
                    textAreaSourceCode.getTextPane().getSelectionEnd(), background.getRed(), background.getGreen(),
                    background.getBlue());
        }

        public void mouseClicked(MouseEvent e) {

            if (e.getClickCount() == 2) {
                JTextPane txtSource = ((JTextPane) e.getComponent());
                int posClick = txtSource.getCaretPosition();
                String codHTML = txtSource.getText().replace("\r", "");

                int abreTag = codHTML.indexOf("<", posClick);
                int fechaTag = codHTML.indexOf(">", posClick);
                if (!(fechaTag < abreTag && fechaTag != -1)) {
                    // no est dentro de tag
                    return;
                }
                boolean achou = false;
                for (int i = fechaTag; i >= 0; i--) {
                    if (codHTML.charAt(i) == '<') {
                        abreTag = i;
                        achou = true;
                        break;
                    }
                }
                if (achou) {
                    // Seleciona a tag
                    System.out.print("abreTag=" + abreTag + "\n");
                    System.out.print("fechaTag=" + fechaTag + "\n");
                    textAreaSourceCode.getTextPane().select(abreTag, fechaTag + 1);
                }
            }
        }

        public void mouseClickedBKP(MouseEvent e) {
            if (e.getClickCount() == 1) {
                StyleContext sc = StyleContext.getDefaultStyleContext();
                // AttributeSet aSet = sc.addAttribute(SimpleAttributeSet.EMPTY,
                // StyleConstants.Bold, true);
                AttributeSet aSet = sc.addAttribute(SimpleAttributeSet.EMPTY, StyleConstants.Underline, true);
                // AttributeSet aSet = sc.addAttribute(SimpleAttributeSet.EMPTY,
                // StyleConstants.Foreground, Color.BLUE);
                JTextPane txtSource = ((JTextPane) e.getComponent());
                int posClick = txtSource.getCaretPosition();
                System.out.println("init" + posClick + "\n");
                int countEnter = 0, countTab = 0, ocorrencia1 = 0, intTemp = 0;

                while (txtSource.getText().indexOf("\t", intTemp + 1) < posClick
                        && txtSource.getText().indexOf("\t", intTemp + 1) != -1) {
                    intTemp = ((JTextPane) e.getComponent()).getText().indexOf("\t", intTemp + 1);
                    posClick++;
                    if (intTemp < posClick) {
                        countEnter++;
                    }
                }
                intTemp = 0;
                while (((JTextPane) e.getComponent()).getText().indexOf("\n", intTemp + 1) < posClick
                        && ((JTextPane) e.getComponent()).getText().indexOf("\n", intTemp + 1) != -1) {
                    intTemp = ((JTextPane) e.getComponent()).getText().indexOf("\n", intTemp + 1);
                    posClick++;
                    if (intTemp < posClick) {
                        countEnter++;
                    }
                }

                String conteudo = ((JTextPane) e.getComponent()).getText();
                System.out.println(posClick);
                int firstPosFechaTag = 0;
                int firstPosAbreTag = 0;

                boolean isTag = false;
                firstPosFechaTag = conteudo.indexOf(">", posClick);
                firstPosAbreTag = conteudo.indexOf("<", posClick);

                // posClick+=countEnter;

                firstPosFechaTag = firstPosFechaTag - countEnter;
                firstPosAbreTag = firstPosAbreTag - countEnter;

                if (firstPosFechaTag < firstPosAbreTag && firstPosFechaTag > -1) {

                    isTag = true; // *
                } else {
                    isTag = false;
                }

                if (firstPosAbreTag == -1) {

                    isTag = true; // *
                }

                if (firstPosFechaTag == -1) {
                    isTag = false;
                }

                if (isTag) {
                    ocorrencia1 = 0;
                    intTemp = 0;
                    while (conteudo.indexOf("<", intTemp + 1) < posClick
                            && conteudo.indexOf("<", intTemp + 1) != -1) {
                        intTemp = conteudo.indexOf("<", intTemp + 1);
                        if (intTemp < (posClick)) {
                            ocorrencia1 = intTemp;
                        }

                    }

                    ocorrencia1 = ocorrencia1 - countEnter;
                    System.out.println("CalcEnter" + countEnter);
                    System.out.println("posClick" + posClick);
                    System.out.println("Ocorrencia1" + ocorrencia1 + "\n");
                    System.out.println("FechaTag" + firstPosFechaTag + "\n");
                    textAreaSourceCode.getTextPane().select(ocorrencia1, firstPosFechaTag + 1);

                }

            }

        }

        public void mouseEntered(MouseEvent e) {

        }

        public void mouseExited(MouseEvent e) {

        }

        public void mousePressed(MouseEvent e) {

            // this.setSelectionColor(new Color(123,123,132));

        }

        public void mouseReleased(MouseEvent e) {

        }

        public AttributeSet getASet() {
            return aSet;
        }

        public void setASet(AttributeSet set) {
            aSet = set;
        }

        public Style getDefautStyle() {
            return defautStyle;
        }

        public void setDefautStyle(Style defautStyle) {
            this.defautStyle = defautStyle;
        }

        public DefaultStyledDocument getDoc() {
            return doc;
        }

        public void setDoc(DefaultStyledDocument doc) {
            this.doc = doc;
        }

        public Style getMainStyle() {
            return mainStyle;
        }

        public void setMainStyle(Style mainStyle) {
            this.mainStyle = mainStyle;
        }

        public StyleContext getSc() {
            return sc;
        }

        public void setSc(StyleContext sc) {
            this.sc = sc;
        }

        public JTextPane getTexto() {
            return texto;
        }

        public void setTexto(JTextPane texto) {
            this.texto = texto;
        }

        public ArrayList<String> getModificados() {
            return modificados;
        }

        public void setModificados(ArrayList<String> modificados) {
            this.modificados = modificados;
        }

        public void addModificados(int inicio, int fim, int r, int g, int b) {

            modificados.add(inicio + "@" + fim + "@" + r + "@" + g + "@" + b);
        }

        /**
         * Formata o fonte em HTML
         */
        private void formataHTML() {
            setText(getText().replaceAll("\r", ""));
            Pattern pattern = Pattern.compile("<.*?>", Pattern.DOTALL);
            Matcher matcher = pattern.matcher(getText());
            while (matcher.find()) {
                String tag = matcher.group();
                int iniTag = matcher.start();
                Pattern ptnPriEsp = Pattern.compile("\\s");
                Matcher matPriEsp = ptnPriEsp.matcher(tag);
                setColorRange(iniTag, matcher.end(), Color.BLUE);
                if (matPriEsp.find()) {
                    int iniEsp = matPriEsp.start();
                    iniTag += iniEsp;
                    Pattern att = Pattern.compile("\\b\\w+\\b");
                    Matcher matAtt = att.matcher(tag.substring(iniEsp));
                    while (matAtt.find()) {
                        String achado = matAtt.group();
                        setColorRange(iniTag + matAtt.start(), iniTag + matAtt.end(), Color.decode("0xF07700"));
                    }
                    Pattern ptnAspas = Pattern.compile("\".*?\"");
                    Matcher matAspas = ptnAspas.matcher(tag.substring(iniEsp));
                    while (matAspas.find()) {
                        String achado = matAspas.group();
                        setColorRange(iniTag + matAspas.start(), iniTag + matAspas.end(), /*
                                                                                          * new
                                                                                          * Color(255,0,255)
                                                                                          */
                                Color.decode("0xFF00FF"));
                    }
                }

            }
            Pattern patternCom = Pattern.compile("<!\\-\\-.*?\\-\\->", Pattern.DOTALL);
            matcher = patternCom.matcher(getText());
            while (matcher.find()) {
                int ini = matcher.start();
                int fim = matcher.end();
                setColorRange(ini, fim, Color.decode("0x007700"));
            }

        }

        private void setColorRange(int ini, int fim, Color cor) {

            select(ini, fim);
            // select(startSelect,endSelect);
            sc = StyleContext.getDefaultStyleContext();

            defautStyle = sc.getStyle(StyleContext.DEFAULT_STYLE);
            mainStyle = sc.addStyle("MainStyle", defautStyle);
            StyleConstants.setForeground(mainStyle, cor);
            // StyleConstants.setBackground(mainStyle, cor);

            aSet = sc.addAttributes(SimpleAttributeSet.EMPTY, mainStyle);

            this.setCharacterAttributes(aSet, false);

        }

    }

    private class TArParticipRotulo extends JTextArea {

        ArrayList<TArParticipRotulo> ant;

        ArrayList<String> conteudo = new ArrayList<String>();

        ArrayList<String> posicoes = new ArrayList<String>();

        ArrayList<String> conteudoComPosicoes = new ArrayList<String>();

        public TArParticipRotulo() {
            this.setEditable(false);
        }

        public void addTexto(String texto, int posicaoInicial, int posicaoFinal) {
            // ant.add(this);

            // if(tableLinCod.getRowCount()>0 &&
            // tableLinCod.getSelectedRow()!=-1){
            aplicarRotulo.setEnabled(true);// }

            conteudo.add(texto);
            posicoes.add(String.valueOf(posicaoInicial) + "@" + String.valueOf(posicaoFinal));

            super.setText(conteudo.toString().substring(1, conteudo.toString().length() - 1));

        }

        public void apagaTexto() {
            // ant.add(this);
            conteudo = new ArrayList<String>();
            posicoes = new ArrayList<String>();
            conteudoComPosicoes = new ArrayList<String>();
            super.setText("");

        }

        public ArrayList<String> getTextoEPos() {
            conteudoComPosicoes = new ArrayList<String>();
            for (int n = 0; n < conteudo.size(); n++) {
                conteudoComPosicoes.add(conteudo.get(n) + "@" + posicoes.get(n));

            }
            return conteudoComPosicoes;
        }

    }

    private static class Desfazer {
        ArrayList<TArParticipRotulo> ant;

        public static void run() {

        }

    }

    private static class Refazer {

        public static void run() {

        }

    }

    public int getPosTagRepEnd() {
        return posTagRepEnd;
    }

    public void setPosTagRepEnd(int posTagRepEnd) {
        this.posTagRepEnd = posTagRepEnd;
    }

    public int getPosTagRepInit() {
        return posTagRepInit;
    }

    public void setPosTagRepInit(int posTagRepInit) {
        this.posTagRepInit = posTagRepInit;
    }

    private class DefaulTableModelNotEditable extends DefaultTableModel {

        public boolean isCellEditable(int row, int column) {

            return false;

        }
    }

    private JMenuBar criaMenuBar() {
        menuBar = new JMenuBar();

        menuBar.setBackground(parentFrame.corDefault);

        JMenu menuArquivo = new JMenu(GERAL.ARQUIVO);
        menuArquivo.setMnemonic('A');
        menuArquivo.setMnemonic(KeyEvent.VK_A);
        menuArquivo.setBackground(parentFrame.corDefault);

        JMenu avaliadores = new JMenu();
        MenuSilvinha menuSilvinha = new MenuSilvinha(parentFrame, null);
        menuSilvinha.criaMenuAvaliadores(avaliadores);
        // menuArquivo.add(avaliadores);
        // menuArquivo.add(new JSeparator());

        JMenuItem btnAbrir = new JMenuItem(GERAL.BTN_ABRIR);
        btnAbrir.addActionListener(this);
        btnAbrir.setActionCommand("Abrir");
        btnAbrir.setMnemonic('A');
        btnAbrir.setAccelerator(
                javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, ActionEvent.CTRL_MASK));
        btnAbrir.setMnemonic(KeyEvent.VK_A);
        btnAbrir.setToolTipText(GERAL.DICA_ABRIR);
        btnAbrir.getAccessibleContext().setAccessibleDescription(GERAL.DICA_ABRIR);
        menuArquivo.add(btnAbrir);

        JMenuItem btnAbrirUrl = new JMenuItem(br.org.acessobrasil.silvinha2.mli.XHTML_Panel.BTN_ABRIR_URL);
        btnAbrirUrl.addActionListener(this);
        btnAbrirUrl.setActionCommand("AbrirURL");
        btnAbrirUrl.setMnemonic('U');
        btnAbrirUrl.setAccelerator(
                javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_U, ActionEvent.CTRL_MASK));
        btnAbrirUrl.setMnemonic(KeyEvent.VK_U);
        btnAbrirUrl.setToolTipText(br.org.acessobrasil.silvinha2.mli.XHTML_Panel.DICA_ABRIR);
        btnAbrirUrl.getAccessibleContext()
                .setAccessibleDescription(br.org.acessobrasil.silvinha2.mli.XHTML_Panel.DICA_ABRIR);
        menuArquivo.add(btnAbrirUrl);

        btnSalvar = new JMenuItem(GERAL.BTN_SALVAR);
        btnSalvar.addActionListener(this);
        btnSalvar.setActionCommand("Salvar");
        btnSalvar.setMnemonic('S');
        btnSalvar.setAccelerator(
                javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, ActionEvent.CTRL_MASK));
        btnSalvar.setMnemonic(KeyEvent.VK_S);
        btnSalvar.getAccessibleContext().setAccessibleDescription(GERAL.DICA_SALVAR);
        menuArquivo.add(btnSalvar);

        JMenuItem btnSalvarAs = new JMenuItem(GERAL.BTN_SALVAR_COMO);
        btnSalvarAs.addActionListener(this);
        btnSalvarAs.setActionCommand("SaveAs");
        btnSalvarAs.setMnemonic('c');
        btnSalvarAs.setMnemonic(KeyEvent.VK_C);
        // btnSalvarAs.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N,
        // ActionEvent.CTRL_MASK));
        btnSalvarAs.setToolTipText(GERAL.DICA_SALVAR_COMO);
        btnSalvarAs.getAccessibleContext().setAccessibleDescription(GERAL.DICA_SALVAR_COMO);
        menuArquivo.add(btnSalvarAs);

        menuArquivo.add(new JSeparator());

        JMenuItem btnFechar = new JMenuItem(GERAL.SAIR);
        btnFechar.addActionListener(this);
        btnFechar.setActionCommand("Sair");
        btnFechar.setMnemonic('a');
        btnFechar.setMnemonic(KeyEvent.VK_A);
        btnFechar.setToolTipText(GERAL.DICA_SAIR);
        btnFechar.getAccessibleContext().setAccessibleDescription(GERAL.DICA_SAIR);
        menuArquivo.add(btnFechar);

        menuBar.add(menuArquivo);

        menuBar.add(this.criaMenuEditar());

        menuBar.add(avaliadores);
        JMenu menuSimuladores = new JMenu();
        menuSilvinha.criaMenuSimuladores(menuSimuladores);
        menuBar.add(menuSimuladores);

        JMenu mnFerramenta = new JMenu();
        menuSilvinha.criaMenuFerramentas(mnFerramenta);
        menuBar.add(mnFerramenta);

        JMenu menuAjuda = new JMenu(XHTML_Panel.AJUDA);
        menuSilvinha.criaMenuAjuda(menuAjuda);
        menuBar.add(menuAjuda);

        return menuBar;
    }

    /**
     * Cria o menu editar do Frame Principal
     * 
     * @param menu
     */
    private JMenu criaMenuEditar() {
        JMenu menu = new JMenu(GERAL.EDITAR);
        menu.setBackground(parentFrame.corDefault);
        menu.setMnemonic('E');
        menu.setMnemonic(KeyEvent.VK_E);

        JMenuItem btnContraste = new JMenuItem(GERAL.ALTERAR_CONTRASTE);
        btnContraste.addActionListener(this);
        btnContraste.setActionCommand("Contraste");
        // btnAumenta.setMnemonic('F');
        // btnAumenta.setMnemonic(KeyEvent.VK_F);
        // btnAumenta.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ADD,
        // ActionEvent.CTRL_MASK));
        btnContraste.setToolTipText(GERAL.DICA_CONTRASTE);
        btnContraste.getAccessibleContext().setAccessibleDescription(GERAL.DICA_CONTRASTE);
        menu.add(btnContraste);

        JMenuItem btnAumenta = new JMenuItem(GERAL.AUMENTA_FONTE);
        btnAumenta.addActionListener(this);
        btnAumenta.setActionCommand("AumentaFonte");
        // btnAumenta.setMnemonic('F');
        // btnAumenta.setMnemonic(KeyEvent.VK_F);
        btnAumenta.setAccelerator(
                javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_ADD, ActionEvent.CTRL_MASK));
        btnAumenta.setToolTipText(GERAL.DICA_AUMENTA_FONTE);
        btnAumenta.getAccessibleContext().setAccessibleDescription(GERAL.DICA_AUMENTA_FONTE);
        menu.add(btnAumenta);

        JMenuItem btnDiminui = new JMenuItem(GERAL.DIMINUI_FONTE);
        btnDiminui.addActionListener(this);
        btnDiminui.setActionCommand("DiminuiFonte");
        // btnDiminui.setMnemonic('F');
        // btnDiminui.setMnemonic(KeyEvent.VK_F);
        btnDiminui.setAccelerator(
                javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_SUBTRACT, ActionEvent.CTRL_MASK));
        btnDiminui.setToolTipText(GERAL.DICA_DIMINUI_FONTE);
        btnDiminui.getAccessibleContext().setAccessibleDescription(GERAL.DICA_DIMINUI_FONTE);
        menu.add(btnDiminui);

        menu.add(new JSeparator());

        JMenuItem btnProcurar = new JMenuItem(GERAL.PROCURAR);
        btnProcurar.addActionListener(this);
        btnProcurar.setActionCommand("Procurar");
        btnProcurar.setMnemonic('P');
        btnProcurar.setMnemonic(KeyEvent.VK_P);
        btnProcurar.setAccelerator(
                javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F, ActionEvent.CTRL_MASK));
        btnProcurar.setToolTipText(GERAL.DICA_PROCURAR);
        btnProcurar.getAccessibleContext().setAccessibleDescription(GERAL.DICA_PROCURAR);
        menu.add(btnProcurar);

        JMenuItem btnSelecionarTudo = new JMenuItem(GERAL.SELECIONAR_TUDO);
        btnSelecionarTudo.addActionListener(this);
        btnSelecionarTudo.setActionCommand("SelecionarTudo");
        btnSelecionarTudo.setMnemonic('T');
        btnSelecionarTudo.setMnemonic(KeyEvent.VK_T);
        btnSelecionarTudo.setAccelerator(
                javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T, ActionEvent.CTRL_MASK));
        btnSelecionarTudo.setToolTipText(GERAL.DICA_SELECIONAR_TODO_CSS);
        btnSelecionarTudo.getAccessibleContext().setAccessibleDescription(GERAL.DICA_SELECIONAR_TODO_CSS);
        menu.add(btnSelecionarTudo);

        JMenuItem btnDesfazer = new JMenuItem(GERAL.DESFAZER);
        btnDesfazer.addActionListener(this);
        btnDesfazer.setActionCommand("Desfazer");
        btnDesfazer.setMnemonic('z');
        btnDesfazer.setMnemonic(KeyEvent.VK_Z);
        btnDesfazer.getAccessibleContext().setAccessibleDescription(GERAL.DICA_DESFAZER);
        btnDesfazer.setAccelerator(
                javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Z, ActionEvent.CTRL_MASK));
        menu.add(btnDesfazer);
        menu.setEnabled(true);
        return menu;
    }

    public void actionPerformed(ActionEvent e) {
        String cmd = e.getActionCommand();

        if (cmd == "Salvar") {
            System.out.println("action Salvar");
            salvaAlteracoes.salvar();

        } else if (cmd == "Abrir") {
            // abrirArquivo();

            abrir();
        } else if (cmd.equals("SelecionarTudo")) {
            textAreaSourceCode.getTextPane().selectAll();
            textAreaSourceCode.getTextPane().requestFocus();
        } else if (cmd == "AbrirURL") {
            abreUrl();

        } else if (cmd == "SaveAs") {
            salvaAlteracoes.salvarComo();
        } else if (cmd == "Creditos") {
            new Creditos();
        } else if (cmd == "Sair") {
            salvaAlteracoes.sair();
        } else if (cmd == "Desfazer") {
            // boxCode.undo();
            // boxCode.coloreSource();
            // reavalia(boxCode.getText());
        } else if (cmd == "AumentaFonte") {
            textAreaSourceCode.aumentaFontSize();
        } else if (cmd == "DiminuiFonte") {
            textAreaSourceCode.diminuiFontSize();
        } else if (cmd == "Contraste") {
            textAreaSourceCode.autoContraste();

            int selectedStart = 0;
            int selectedEnd = 0;
            int corretordePosicoesdoLabel = 0;
            int corretordePosicoesdoControle = 0;
            ArrayList<Integer> ordenador = new ArrayList<Integer>();
            ArrayList<String> conteudoParticRotuloOrdenado = new ArrayList<String>();
            conteudoParticRotulo = null;
            conteudoParticRotulo = tArParticipRotulo.getTextoEPos();
            String[] conteudo = new String[3];
            String codHTML = textAreaSourceCode.getTextPane().getText().replace("\r", "");
            System.out.println(codHTML.substring((Integer) (getPosTagRepEnd() + corretordePosicoesdoControle - 1),
                    (getPosTagRepEnd() + corretordePosicoesdoControle - 1) + 36));

            while (codHTML.indexOf("SIL" + inicial) != -1) {
                inicial++;
            }

            ColorModel cm = tArParticipRotulo.getColorModel();

            for (String conteudoPR : conteudoParticRotulo) {
                conteudo = conteudoPR.split("@");
                ordenador.add(Integer.parseInt(conteudo[1]));
            }

            int[] ordem = new int[ordenador.size()];
            for (int i = 0; i < ordem.length; i++) {
                ordem[i] = ordenador.get(i);
            }

            Arrays.sort(ordem);

            for (int i = 0; i < ordem.length; i++) {
                for (String conteudoPR : conteudoParticRotulo) {
                    conteudo = conteudoPR.split("@");

                    if (Integer.parseInt(conteudo[1]) == ordem[i]) {
                        conteudoParticRotuloOrdenado.add(conteudoPR);
                    }

                }
            }
            for (String conteudoPR : conteudoParticRotuloOrdenado) {
                conteudo = conteudoPR.split("@");

                System.out.println("posico: " + Integer.parseInt(conteudo[1]));

            }

            for (String conteudoPR : conteudoParticRotuloOrdenado) {

                conteudo = conteudoPR.split("@");
                conteudo[0] = "<label for=\"SIL" + inicial + "\">" + conteudo[0] + "</label>";
                selectedStart = Integer.parseInt(conteudo[1]) + corretordePosicoesdoLabel;
                selectedEnd = Integer.parseInt(conteudo[2]) + corretordePosicoesdoLabel;
                // corretordePosicoesdoLabel += ("<label for=\"SIL" + inicial +
                // "\"></label>").length();

                if ((selectedStart < getPosTagRepInit() + corretordePosicoesdoLabel)) {
                    corretordePosicoesdoControle = corretordePosicoesdoLabel;

                }
                /*
                 * if((selectedStart>getPosTagRepInit()+corretordePosicoesdoLabel)){
                 * //arTextPainelCorrecao.select(selectedStart+("id=x").length(),
                 * selectedEnd+("id=x").length());
                 * 
                 * }else{ }
                 */
                // scrollPaneCorrecaoLabel.getTextPane().select(selectedStart,
                // selectedEnd);
                // arTextPainelCorrecao.setTextoParaSelecionado(conteudo[0]);
                arTextPainelCorrecao.setASet(arTextPainelCorrecao.getSc().addAttributes(SimpleAttributeSet.EMPTY,
                        SimpleAttributeSet.EMPTY));
                textAreaSourceCode.getTextPane().select(selectedStart, selectedEnd);
                arTextPainelCorrecao.setColorForSelectedText(new Color(255, 204, 102), new Color(0, 0, 0));
                textAreaSourceCode.getTextPane().setCharacterAttributes(arTextPainelCorrecao.getASet(), false);

            }

            // arTextPainelCorrecao.formataHTML();
            // tArParticipRotulo.apagaTexto();

            TabelaCorrecaoLabel tcl = tableLinCod;
            int linha = (Integer) dtm.getValueAt(tcl.getSelectedRow(), 0);
            int coluna = (Integer) dtm.getValueAt(tcl.getSelectedRow(), 1);
            int endTag = 0;
            int posAtual = 0;
            int posFinal = 0;
            codHTML = textAreaSourceCode.getTextPane().getText().replace("\r", "");
            int i;
            for (i = 0; i < (linha - 1); i++) {
                posAtual = codHTML.indexOf("\n", posAtual + 1);
            }
            i = 0;
            // gambiarra provisria
            posFinal = codHTML.indexOf((String) dtm.getValueAt(tcl.getSelectedRow(), 2), posAtual + coluna);
            while (codHTML.charAt(posFinal + i) != '>') {
                i++;
            }

            setPosTagRepInit(posFinal);
            setPosTagRepEnd(posFinal + i + 1);

            textAreaSourceCode.goToLine(linha);
            textAreaSourceCode.getTextPane().select(getPosTagRepInit(), getPosTagRepEnd());

            arTextPainelCorrecao.setColorForSelectedText(Color.decode("0xEEEEEE"), new Color(255, 0, 0));
            arTextPainelCorrecao.setUnderline();
            // TODO Auto-generated method stub
            // tArParticipRotulo.apagaTexto();

        }

    }

    private Border criaBorda(String titulo) {
        Border bordaLinhaPreta = BorderFactory.createLineBorder(new Color(0, 0, 0), 1);
        Border borda = BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(),
                new TitledBorder(bordaLinhaPreta, titulo));
        Border bordaFinal = BorderFactory.createCompoundBorder(borda, BorderFactory.createEmptyBorder(0, 4, 4, 5));
        return bordaFinal;
    }

    public void altTextFocusLost() {
        System.out.println("altTextFocusLost");
        reload();
    }

    public void reload() {
        posicaoeTag = new ArrayList<FerramentaLabelModel>();

        codigo = textAreaSourceCode.getTextPane().getText();
        int caret = textAreaSourceCode.getTextPane().getCaretPosition();
        new FerramentaLabelCtrl(codigo);
        textAreaSourceCode.coloreSource();
        textAreaSourceCode.getTextPane().setCaretPosition(caret);
        TxtBuffer.setContent(codigo);
        tableLinCod.clearTab();
        for (FerramentaLabelModel flm : posicaoeTag) {
            tableLinCod.addLinha(flm.getLinha(), flm.getColuna(), flm.getTexto());
        }
    }

    public void setPanelOriginal(PainelLabel ferrLabelPanelNaoEditavel) {

        ferrLabelPanelNaoEditavel.textAreaSourceCode.getTextPane().setEditable(false);
        ferrLabelPanelNaoEditavel.original = true;
        ferrLabelPanelNaoEditavel.pnBotoes.setVisible(false);
    }

    /**
     * Avalia o arquivo
     * 
     * @param path
     *            caminho
     */
    public void avaliaArq(String path) {
        System.out.println("avaliaArq painelObjeto");
        G_File temp = new G_File(path);
        if (temp.getFile() != null) {

            TxtBuffer.setContentOriginal(temp.read(), "0");
            parentFrame.showPainelFerramentaLabelPArq(temp.read());
        }
    }

    public void avaliaUrl(String url) {
        PegarPaginaWEB ppw = new PegarPaginaWEB();
        if (url != null) {
            salvaAlteracoes.setNomeDoArquivoEmDisco(null);
            try {
                String codHtml = ppw.getContent(url);
                TxtBuffer.setContentOriginal(codHtml, "0");
                parentFrame.showPainelFerramentaLabelPArq(codHtml);
            } catch (HttpException e1) {
                e1.printStackTrace();
                JOptionPane.showMessageDialog(this, TradPainelAvaliacao.AVISO_NAO_CONECTOU,
                        TradPainelAvaliacao.AVISO, JOptionPane.WARNING_MESSAGE);
            } catch (Exception e1) {
                e1.printStackTrace();
                JOptionPane.showMessageDialog(this, TradPainelAvaliacao.AVISO_VERIFIQUE_URL,
                        TradPainelAvaliacao.AVISO, JOptionPane.WARNING_MESSAGE);
            }
        }
    }

    public G_TextAreaSourceCode getScrollPaneCorrecaoLabel() {
        return textAreaSourceCode;
    }
}
//