//********************************************************************
//  SmilingFacePanel.java       Author: Lewis/Loftus
//
//  Demonstrates the use of a separate panel class.
//********************************************************************

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

public class SmilingFacePanel extends JPanel
{
   private final int BASEX = 120, BASEY = 60; // base point for head

   //-----------------------------------------------------------------
   //  Constructor: Sets up the main characteristics of this panel.
   //-----------------------------------------------------------------
   public SmilingFacePanel ()
   {
      setBackground (Color.blue);
      setPreferredSize (new Dimension(320, 200));
      setFont (new Font("Arial", Font.BOLD, 16));
   }

   //-----------------------------------------------------------------
   //  Draws a face.
   //-----------------------------------------------------------------
   public void paintComponent (Graphics page)
   {
      super.paintComponent (page);

      page.setColor (Color.yellow);
      page.fillOval (BASEX, BASEY, 80, 80);  // head
      page.fillOval (BASEX-5, BASEY+20, 90, 40);  // ears

      page.setColor (Color.black);
      page.drawOval (BASEX+20, BASEY+30, 15, 7);  // eyes
      page.drawOval (BASEX+45, BASEY+30, 15, 7);

      page.fillOval (BASEX+25, BASEY+31, 5, 5);   // pupils
      page.fillOval (BASEX+50, BASEY+31, 5, 5);

      page.drawArc (BASEX+20, BASEY+25, 15, 7, 0, 180);  // eyebrows
      page.drawArc (BASEX+45, BASEY+25, 15, 7, 0, 180);

      page.drawArc (BASEX+35, BASEY+40, 15, 10, 180, 180);  // nose
      page.drawArc (BASEX+20, BASEY+50, 40, 15, 180, 180);  // mouth

      page.setColor (Color.white);
      page.drawString ("Always remember that you are unique!",
                       BASEX-105, BASEY-15);
      page.drawString ("Just like everyone else.", BASEX-45, BASEY+105);
   }
}