/*
 * Fichero: EjemploJTextPane.java
 * Autor: Chuidiang
 * Fecha: 27/03/07 19:29
 */
package chuidiang.ejemplos.JEditorPane;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.WindowConstants;
import javax.swing.text.BadLocationException;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;


/**
 * Ejemplo de un JTextPane
 *
 @author Chuidiang
 *
 */
public class EjemploJTextPane
{
    /**
     * Crea un nuevo objeto EjemploJTextPane.
     */
    public EjemploJTextPane()
    {
        try
        {
            // Creación de la ventana de ejemplo
            JFrame v = new JFrame("JTextPane");
            JTextPane editor = new JTextPane();
            JScrollPane scroll = new JScrollPane(editor);
            v.getContentPane().add(scroll);
            v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

            // Atributos para cada uno de las frases.
            SimpleAttributeSet attrs = new SimpleAttributeSet();

            // En negrita
            StyleConstants.setBold(attrs, true);
            editor.getStyledDocument()
                  .insertString(
                editor.getStyledDocument().getLength()"Negrita", attrs);
            insertaNuevaLinea(editor);

            // En cursiva
            StyleConstants.setItalic(attrs, true);
            StyleConstants.setBold(attrs, false);
            editor.getStyledDocument()
                  .insertString(
                editor.getStyledDocument().getLength()"cursiva", attrs);
            insertaNuevaLinea(editor);

            // Ponemos el cursor al final del texto
            editor.setCaretPosition(editor.getStyledDocument().getLength());

            // Un icono
            ImageIcon icono = new ImageIcon("d:/viejo.gif");
            editor.insertIcon(icono);
            insertaNuevaLinea(editor);

            // Ponemos el cursor al final del texto
            editor.setCaretPosition(editor.getStyledDocument().getLength());

            // insertamos un JButton
            JButton boton = new JButton("Pulsame");
            editor.insertComponent(boton);

            // Visualizamos la ventana.
            v.pack();
            v.setVisible(true);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    /**
     * main de la clase
     *
     @param args se ignoran
     */
    public static void main(String[] args)
    {
        new EjemploJTextPane();
    }

    /**
     * Inserta un fin de linea en el editor
     *
     @param editor Editor en el que poner el fin de línea
     *
     @throws BadLocationException Si se intenta insertar fuera del texto.
     */
    private void insertaNuevaLinea(JTextPane editor)
        throws BadLocationException
    {
      // Atributos null
        editor.getStyledDocument()
              .insertString(
            editor.getStyledDocument().getLength(),
            System.getProperty("line.separator")null);
    }
}