import java.beans.*;
import javax.swing.*;

/**
 * A PropertyLabel is a JLabel that responds to appropriate
 * propertyChange messages by changing its text.
 * 
 * @author  Prof. David Bernstein, James Madison University
 * @version 1.0
 */
public class PropertyLabel extends JLabel implements PropertyChangeListener
{
  private static final long serialVersionUID = 1L;

  private String property;

  /**
   * Explicit value constructor.
   * 
   * @param property  The property being displayed
   * @param value     The initial value to display
   */
  public PropertyLabel(String property, Object value)
  {
    super(value.toString());
    this.property = property;
    setBorder(BorderFactory.createTitledBorder(property));
  }

  /**
   * Handle propertyChange messages.
   * 
   * @param evt  The event that generated the message
   */
  public void propertyChange(PropertyChangeEvent evt)
  {
    if (property.equals(evt.getPropertyName()))
    {
      String text = evt.getNewValue().toString();
      setText(text);
    }
  }
}
