br.org.acessobrasil.ases.ferramentas_de_reparo.vista.imagem.PanelDescricaoImagens.java Source code

Java tutorial

Introduction

Here is the source code for br.org.acessobrasil.ases.ferramentas_de_reparo.vista.imagem.PanelDescricaoImagens.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.imagem;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.Arrays;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
import javax.swing.SwingConstants;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
import javax.swing.text.SimpleAttributeSet;

import org.apache.commons.httpclient.HttpException;
import org.xhtmlrenderer.simple.XHTMLPanel;

import br.org.acessobrasil.ases.entidade.EstadoSilvinha;
import br.org.acessobrasil.nucleuSilva.util.PegarPaginaWEB;
import br.org.acessobrasil.silvinha.util.lang.TokenLang;
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.silvinha.vista.panels.PainelStatusBar;
import br.org.acessobrasil.silvinha.vista.panels.SuperPainelCentral;
import br.org.acessobrasil.silvinha2.mli.Ferramenta_Imagens;
import br.org.acessobrasil.silvinha2.mli.GERAL;
import br.org.acessobrasil.silvinha2.mli.TradPainelAvaliacao;
import br.org.acessobrasil.silvinha2.mli.TradPainelRelatorio;
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 descrever imagens
 * @author Renato Nati
 */
public class PanelDescricaoImagens extends SuperPainelCentral implements ActionListener, OnChangeListener {
    /**
     * Serial default
     */
    private static final long serialVersionUID = 4808373827580204059L;

    public ArrayList<FerramentaDescricaoModel> posicaoeTag;

    public String nomeArquivo;

    public String codigo;

    SalvaAlteracoes salvaAlteracoes;

    public int inicial = 0;

    public static final int ARQUIVO = 0;

    public static final int CONTEUDO = 1;

    private int posTagRepInit;

    JMenuItem btnSalvar;

    boolean original = false;

    private int posTagRepEnd;
    public JButton reverter;
    public ActionEvent buttonAction;

    private String textoSelecionado;

    /**
     * Mostra a imagem sem descrio
     */
    XHTMLPanel imagemSemDesc;

    // JEditorPane imagemSemDesc;

    // JLabel imagemSemDesc;

    ArTextPainelCorrecao arTextPainelCorrecao;

    public G_TextAreaSourceCode textAreaSourceCode;

    FrameSilvinha parentFrame;

    private JButton salvar;

    private JButton abrir;

    private JButton cancelar;

    private JPanel pnRegra;

    private JLabel lbRegras1;

    private JLabel lbRegras2;

    private JPanel pnSetaDescricao;

    public JTextArea conteudoDoAlt;

    private JScrollPane spTextoDescricao;

    TArParticipRotulo tArParticipRotulo;

    String strConteudoalt;

    private JPanel pnListaErros;

    private JScrollPane scrollPanetabLinCod;

    TabelaDescricao tableLinCod;

    private JPanel pnBotoes;

    private JButton adicionar;

    public JButton analiseSistematica;

    JButton aplicar;

    private ArrayList<String> conteudoParticRotulo;

    DefaulTableModelNotEditable dtm;

    protected static String enderecoPagina;

    public static void main(String[] args) {

        Ferramenta_Imagens.carregaTexto(TokenLang.LANG);

    }

    public PanelDescricaoImagens(String codHtml, int conteudoOuArquivo, FrameSilvinha parentFrame,
            String endPagina) {
        enderecoPagina = endPagina;
        EstadoSilvinha.setLinkAtual(endPagina);
        //this.enderecoPagina = FrameSilvinha.getLinkAtual();
        Ferramenta_Imagens.carregaTexto(TokenLang.LANG);
        this.parentFrame = parentFrame;
        posicaoeTag = new ArrayList<FerramentaDescricaoModel>();
        new FerramentaDescricaoCtrl(this, codHtml, conteudoOuArquivo);
        initComponentsEscalavel(posicaoeTag);

    }

    public PanelDescricaoImagens(String codHtml, int conteudoOuArquivo, FrameSilvinha parentFrame) {
        enderecoPagina = EstadoSilvinha.getLinkAtual();
        Ferramenta_Imagens.carregaTexto(TokenLang.LANG);
        this.parentFrame = parentFrame;
        // this.parentFrame.setTitle(Ferramenta_Imagens.TITULO_DESC_IMG);
        posicaoeTag = new ArrayList<FerramentaDescricaoModel>();
        new FerramentaDescricaoCtrl(this, codHtml, conteudoOuArquivo);
        initComponentsEscalavel(posicaoeTag);
    }

    private void initComponentsEscalavel(ArrayList<FerramentaDescricaoModel> erros) {
        Ferramenta_Imagens.carregaTexto(TokenLang.LANG);
        JPanel regraFonteBtn = new JPanel();
        regraFonteBtn.setLayout(new BorderLayout());

        textAreaSourceCode = new G_TextAreaSourceCode();
        textAreaSourceCode.setTipoHTML();
        new OnChange(textAreaSourceCode, this);

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

        // scrollPaneCorrecaoLabel = new ConteudoCorrecaoLabel();
        analiseSistematica = new JButton();
        salvar = new JButton();
        abrir = new JButton();
        cancelar = new JButton();
        strConteudoalt = new String();
        // panelLegenda = new JPanel();
        btnSalvar = new JMenuItem(GERAL.BTN_SALVAR);

        pnRegra = new JPanel();
        lbRegras1 = new JLabel();
        lbRegras2 = new JLabel();
        pnSetaDescricao = new JPanel();
        spTextoDescricao = new JScrollPane();
        tArParticipRotulo = new TArParticipRotulo(this);
        conteudoDoAlt = new JTextArea();
        pnListaErros = new JPanel();
        scrollPanetabLinCod = new JScrollPane();
        /**
         * Mostra pro usurio a imagem que est sem descrio
         */
        imagemSemDesc = new XHTMLPanel();

        pnBotoes = new JPanel();
        salvar.setEnabled(false);
        salvaAlteracoes = TxtBuffer.getInstanciaSalvaAlteracoes(textAreaSourceCode.getTextPane(), salvar,
                new JMenuItem(), parentFrame);
        adicionar = new JButton();
        aplicar = new JButton();
        conteudoParticRotulo = new ArrayList<String>();
        analiseSistematica.setEnabled(false);
        // 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(Ferramenta_Imagens.TITULO_REGRA));
            pnRegra.setLayout(new GridLayout(2, 1));
            pnRegra.add(lbRegras1);
            lbRegras1.setText(Ferramenta_Imagens.REGRAP1);
            lbRegras2.setText(Ferramenta_Imagens.REGRAP2);
            lbRegras1.setHorizontalAlignment(SwingConstants.CENTER);
            lbRegras2.setHorizontalAlignment(SwingConstants.CENTER);
            pnRegra.add(lbRegras1);
            pnRegra.add(lbRegras2);
            pnRegra.setPreferredSize(new Dimension(700, 60));
        }

        // G_URLIcon.setIcon(lbTemp,
        // "http://pitecos.blogs.sapo.pt/arquivo/pai%20natal%20o5.%20jpg.jpg");
        JScrollPane sp = new JScrollPane();

        sp.setViewportView(imagemSemDesc);
        sp.setPreferredSize(new Dimension(500, 300));

        // ======== pnDescricao ========

        // ---- Salvar ----
        salvar.setText(Ferramenta_Imagens.BTN_SALVAR);
        salvar.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                salvarActionPerformed(e);
            }
        });

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

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

        abrir.setToolTipText(Ferramenta_Imagens.DICA_ABRIR_HTML);
        abrir.getAccessibleContext().setAccessibleDescription(Ferramenta_Imagens.DICA_ABRIR_HTML);
        abrir.getAccessibleContext().setAccessibleName(Ferramenta_Imagens.DICA_ABRIR_HTML);
        abrir.setBounds(165, 0, 150, 25);

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

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

        analiseSistematica.setText(GERAL.ANALISE_SISTEMATICA);
        analiseSistematica.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                buttonAction = e;
                Thread t = new Thread(new Runnable() {
                    public void run() {
                        PainelStatusBar.showProgTarReq();
                        parentFrame.setCursor(new Cursor(Cursor.WAIT_CURSOR));
                        analiseSistematicaActionPerformed(buttonAction);
                        parentFrame.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
                        PainelStatusBar.hideProgTarReq();
                    }
                });
                t.setPriority(9);
                t.start();

            }
        });

        analiseSistematica.setToolTipText(GERAL.DICA_ANALISE_SISTEMATICA);
        analiseSistematica.getAccessibleContext().setAccessibleDescription(GERAL.DICA_ANALISE_SISTEMATICA);
        analiseSistematica.getAccessibleContext().setAccessibleName(GERAL.DICA_ANALISE_SISTEMATICA);
        analiseSistematica.setBounds(480, 0, 150, 25);
        // ======== pnParticRotulo ========

        pnSetaDescricao.setBorder(criaBorda(Ferramenta_Imagens.TITULO_DIGITE_O_ALT));
        GridBagConstraints cons = new GridBagConstraints();
        GridBagLayout layout = new GridBagLayout();
        cons.fill = GridBagConstraints.BOTH;
        cons.weighty = 1;
        cons.weightx = 0.80;

        pnSetaDescricao.setLayout(layout);
        cons.anchor = GridBagConstraints.SOUTHEAST;
        cons.insets = new Insets(0, 0, 0, 10);
        conteudoDoAlt.addKeyListener(new KeyListener() {
            public void keyPressed(KeyEvent arg0) {
            }

            public void keyTyped(KeyEvent arg0) {
            }

            public void keyReleased(KeyEvent arg0) {
                if (conteudoDoAlt.getText().length() == 0) {
                    System.out.println("conteudo vazio");
                    aplicar.setEnabled(false);

                } else if (tableLinCod.getSelectedRow() != -1) {
                    System.out.println("com conteudo");
                    aplicar.setEnabled(true);

                }
            }
        });
        // ======== spParticRotulo ========
        {
            spTextoDescricao.setViewportView(conteudoDoAlt);
        }

        // lbRegras1.setText(Reparo_Imagens.REGRAP2);
        // lbRegras1.setHorizontalAlignment(SwingConstants.CENTER);

        // pnRegra.add(lbRegras1);

        pnSetaDescricao.add(spTextoDescricao, cons);
        cons.weightx = 0.20;
        pnSetaDescricao.setPreferredSize(new Dimension(400, 60));

        // ======== pnListaErros ========
        {

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

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

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

            adicionar.setToolTipText(Ferramenta_Imagens.DICA_ADICIONAR);
            adicionar.getAccessibleContext().setAccessibleDescription(Ferramenta_Imagens.DICA_ADICIONAR);
            adicionar.getAccessibleContext().setAccessibleName(Ferramenta_Imagens.DICA_ADICIONAR);
            adicionar.setBounds(10, 5, 150, 25);
            // pnBotoes.add(adicionar);

            // ---- aplicarRotulo ----
            aplicar.setEnabled(false);
            aplicar.setText(Ferramenta_Imagens.BTN_APLICAR);
            aplicar.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {

                    aplicarRotuloActionPerformed(e);
                }
            });

            aplicar.setToolTipText(Ferramenta_Imagens.DICA_APLICAR);
            aplicar.getAccessibleContext().setAccessibleDescription(Ferramenta_Imagens.DICA_APLICAR);
            aplicar.getAccessibleContext().setAccessibleName(Ferramenta_Imagens.DICA_APLICAR);
            aplicar.setBounds(10, 5, 150, 25);
            pnBotoes.add(aplicar);
        }

        /*
         * Colocar os controles
         */
        pnRegra.setBackground(CoresDefault.getCorPaineis());
        regraFonteBtn.add(pnRegra, BorderLayout.NORTH);
        textAreaSourceCode.setBorder(criaBorda(""));
        textAreaSourceCode.setBackground(CoresDefault.getCorPaineis());

        JSplitPane splitPane = null;

        Dimension minimumSize = new Dimension(0, 0);
        // JScrollPane ajudaScrollPane = new
        // JScrollPane(ajuda,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

        sp.setMinimumSize(minimumSize);
        sp.setPreferredSize(new Dimension(150, 90));
        splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, sp, textAreaSourceCode);
        splitPane.setOneTouchExpandable(true);
        // splitPane.set
        // splitPane.setDividerLocation(0.95);
        int w = parentFrame.getWidth();
        int s = w / 4;
        splitPane.setDividerLocation(s);

        // regraFonteBtn.add(scrollPaneCorrecaoLabel, BorderLayout.CENTER);
        regraFonteBtn.add(splitPane, 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());
        pnSetaDescricao.setBackground(CoresDefault.getCorPaineis());
        pnSetaDescricao.add(pnBotoes, cons);
        textoErrosBtn.add(pnSetaDescricao, 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);
        if (!original) {
            reverter = new JButton("Reverter");
            reverter.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    setVisible(false);
                    TxtBuffer.setContent(TxtBuffer.getContentOriginal());
                    parentFrame.showPainelFerramentaImgPArq(TxtBuffer.getContentOriginal(), enderecoPagina);
                    setVisible(true);
                }
            });
            //reverter.setActionCommand("Reverter");
            reverter.setText(TradPainelRelatorio.REVERTER);
            reverter.setToolTipText(TradPainelRelatorio.DICA_REVERTER);
            reverter.getAccessibleContext().setAccessibleDescription(TradPainelRelatorio.DICA_REVERTER);
            reverter.getAccessibleContext().setAccessibleName(TradPainelRelatorio.DICA_REVERTER);
            if (EstadoSilvinha.conteudoEmPainelResumo) {
                reverter.setBounds(640, 0, 150, 25);
            } else {
                reverter.setBounds(480, 0, 150, 25);
            }
            pnSalvarCancelar.add(reverter);
        }

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

        this.setVisible(true);

    }

    private void AbrirActionPerformed(ActionEvent e) {
        abrirArquivoLocal();
    }

    /**
     * Abre um arquivo Local
     * 
     */
    private void abrirArquivoLocal() {
        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());
            // frameSilvinha.setTitle(arquivo.getFile().getName() + " - " +
            // XHTMLPanel.TITULO);

            enderecoPagina = temp.getFile().getAbsolutePath();

            TxtBuffer.setContentOriginal(temp.read(), "0");
            parentFrame.showPainelFerramentaImgPArq(temp.read(), enderecoPagina);
            String path = temp.getUrlPath();
            // System.out.print(path);
            EstadoSilvinha.setLinkAtual(path);
        }
    }

    private void CancelarActionPerformed(ActionEvent e) {

        salvaAlteracoes.cancelar();
    }

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

    private void adicionarActionPerformed(ActionEvent e) {
        textoSelecionado = textAreaSourceCode.getTextPane().getSelectedText();
        if (textoSelecionado == null) {
            // System.out.println(GERAL.SEM_TEXTO_SELECIONADO);
        } 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 analiseSistematicaActionPerformed(ActionEvent e) {
        parentFrame.showPainelFerramentaDescricaoAnaliseGeral(
                (String) dtm.getValueAt(tableLinCod.getSelectedRow(), 2), enderecoPagina, this);

        // new AnaliseGeral
    }

    private void aplicarRotuloActionPerformed(ActionEvent e) {
        aplicar.setEnabled(false);
        strConteudoalt = conteudoDoAlt.getText().replace("\n", " ");
        salvaAlteracoes.setAlterado();

        conteudoParticRotulo = null;
        conteudoParticRotulo = tArParticipRotulo.getTextoEPos();

        String codHTML = textAreaSourceCode.getTextPane().getText().replace("\r", "");
        //*
        String tag = codHTML.substring(getPosTagRepInit(), getPosTagRepEnd());
        textAreaSourceCode.getTextPane().select(getPosTagRepInit(), getPosTagRepEnd());
        tag = tag.replaceAll("alt=\".*?\"", "");
        tag = tag.replaceAll("  ", " ");
        if (tag.endsWith("/>")) {
            tag = tag.substring(0, tag.length() - 2) + " alt=\"" + strConteudoalt + "\" />";
        } else {
            tag = tag.substring(0, tag.length() - 1) + " alt=\"" + strConteudoalt + "\" >";
        }
        arTextPainelCorrecao.setTextoParaSelecionado(tag);
        //System.out.println("tag="+tag);
        /*/
        if (codHTML.charAt(getPosTagRepEnd() + corretordePosicoesdoControle - 2) == '/') {
           textAreaSourceCode.getTextPane().select(getPosTagRepEnd() + corretordePosicoesdoControle - 2, getPosTagRepEnd() + corretordePosicoesdoControle);
           arTextPainelCorrecao.setTextoParaSelecionado(" alt=\"" + strConteudoalt + "\"/>");
        } else {
           textAreaSourceCode.getTextPane().select(getPosTagRepEnd() + corretordePosicoesdoControle - 1, getPosTagRepEnd() + corretordePosicoesdoControle);
           arTextPainelCorrecao.setTextoParaSelecionado(" alt=\"" + strConteudoalt + "\">");
        }
        //*/
        tArParticipRotulo.apagaTexto();
        codigo = textAreaSourceCode.getTextPane().getText();

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

    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;
    }

    /**
     * Abre uma URL
     * 
     */
    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.showPainelFerramentaImgPArq(codHtml, url);
                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);
            }
        }
    }

    public void actionPerformed(ActionEvent e) {
        String cmd = e.getActionCommand();
        if (cmd == "Salvar") {
            salvaAlteracoes.salvar();

        } else if (cmd == "Abrir") {
            abrirArquivoLocal();
        } else if (cmd.equals("SelecionarTudo")) {
            textAreaSourceCode.getTextPane().selectAll();
            textAreaSourceCode.getTextPane().requestFocus();
        } else if (cmd == "SaveAs") {
            salvaAlteracoes.salvarComo();
            // salvarComo();
        } else if (cmd == "AbrirURL") {
            abreUrl();
        } else if (cmd == "Sair") {
            salvaAlteracoes.sair();
        } else if (cmd == "Desfazer") {
            textAreaSourceCode.undo();
        } else if (cmd == "AumentaFonte") {
            textAreaSourceCode.aumentaFontSize();
        } else if (cmd == "DiminuiFonte") {
            textAreaSourceCode.diminuiFontSize();
        } else if (cmd == "Creditos") {
            new Creditos();
        } else if (cmd == "Contraste") {
            textAreaSourceCode.autoContraste();

            int selectedStart = 0;
            int selectedEnd = 0;
            int corretordePosicoesdoLabel = 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++;
            }

            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)) {

                }
                /*
                 * 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();

            TabelaDescricao 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;
            // Adaptao 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();
        }
    }

    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<FerramentaDescricaoModel>();

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

    @Override
    public boolean showBarraUrl() {
        return false;
    }

    public void setPanelOriginal(PanelDescricaoImagens 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) {
            salvaAlteracoes.setNomeDoArquivoEmDisco(null);
            TxtBuffer.setContentOriginal(temp.read(), "0");
            parentFrame.showPainelFerramentaImgPArq(temp.read(), path);
        }
    }

    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.showPainelFerramentaImgPArq(codHtml, 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);
            }
        }
    }

    public static String getEnderecoPagina() {
        return enderecoPagina;
    }

    public static void setEnderecoPagina(String enderecoPagina) {
        PanelDescricaoImagens.enderecoPagina = enderecoPagina;
    }

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