/**
   @version 1.30 2000-05-12
   @author Cay Horstmann
*/

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class TextAreaTest 
{
   public static void main(String[] args)
   {  
      TextAreaFrame frame = new TextAreaFrame();
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.show();
   }
}

/**
   A frame with a text area and buttons for text editing
*/
class TextAreaFrame extends JFrame
{  
   public TextAreaFrame()
   {  
      setTitle("TextAreaTest");
      setSize(WIDTH, HEIGHT);

      Container contentPane = getContentPane();

      buttonPanel = new JPanel();

      // add button to append text into the text area

      JButton insertButton = new JButton("Insert");
      buttonPanel.add(insertButton);
      insertButton.addActionListener(new
         ActionListener()
         {
            public void actionPerformed(ActionEvent event)
            {
               textArea.append("The quick brown fox "
                  + "jumps over the lazy dog. ");
            }
         });

      // add button to turn line wrapping on and off

      wrapButton = new JButton("Wrap");
      buttonPanel.add(wrapButton);
      wrapButton.addActionListener(new
         ActionListener()
         {
            public void actionPerformed(ActionEvent evt)
            {  
               boolean wrap = !textArea.getLineWrap();
               textArea.setLineWrap(wrap);
               scrollPane.validate();
               wrapButton.setText(wrap ? "No Wrap" : "Wrap");
            }
         });
    
      contentPane.add(buttonPanel, BorderLayout.SOUTH);

      // add a text area with scroll bars
      
      textArea = new JTextArea(8, 40);
      scrollPane = new JScrollPane(textArea);

      contentPane.add(scrollPane, BorderLayout.CENTER);
   }

   public static final int WIDTH = 300;
   public static final int HEIGHT = 300;  

   private JTextArea textArea;
   private JScrollPane scrollPane;
   private JPanel buttonPanel;
   private JButton wrapButton;
}
