import java.awt.event.*;
import java.awt.*;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JButton;
import javax.swing.JLabel;

/**
 * Demonstrates using a JTextArea in a JScrollPane and
 * anonymous inner classes for event listeners
 *
 * @author Mark Hall
 * @version 1.0
 */
public class TextAreaExample extends JPanel {
  private JTextArea mMyText = new JTextArea(10, 30);
  private JButton mEditableToggle = new JButton("Toggle Edit");
  public TextAreaExample() {
    super();
    setLayout(new BorderLayout());
    add(mEditableToggle, BorderLayout.NORTH);
    JScrollPane scrollPane = new JScrollPane(mMyText);
    add(scrollPane, BorderLayout.CENTER);
    mMyText.setText("Mark's scrollable text area");
    mEditableToggle.addActionListener(new ActionListener() {
	public void actionPerformed(ActionEvent e) {
	  boolean editable = !mMyText.isEditable();
	  mMyText.setEditable(editable);
	  String message = ((editable == true) 
			    ? " editable " 
			    : " not editable ");
	  mMyText.append("\n---------"+message+"--------");
	}
      });
  }

  public static void main(String [] args) {
    TextAreaExample myPanel = new TextAreaExample();
    JFrame myFrame = new JFrame();
    myFrame.setContentPane(myPanel);
    myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    myFrame.pack();
    myFrame.setVisible(true);
  }
}
