package howto;

import java.awt.*;

public class FigPoly extends java.applet.Applet implements Figure
{
   private Panel p;

   private CardLayout cl;

   private NewCanvas nc;

   private Choice ch;

   public void init()
   {
      setBackground(Color.white);

      setLayout(new BorderLayout());

      Panel p1;

      p = new Panel();

      p.setLayout(cl = new CardLayout());

      p.add("Polygon", p1 = new Panel());

      p1.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));

      p1.add(new Label("drawPolygon ( ... )"));

      p.add("Filled Polygon", p1 = new Panel());

      p1.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));

      p1.add(new Label("fillPolygon ( ... )"));

      add("North", p);

      nc = new NewCanvas(this);

      add("Center", nc);

      p1 = new Panel();

      p1.add(new Button("Draw"));

      ch = new Choice();

      ch.addItem("Polygon");
      ch.addItem("Filled Polygon");

      p1.add(ch);

      add("South", p1);
   }

   public void paintCallback(Graphics g)
   {
      Polygon pg = new Polygon();

      pg.addPoint(220, 30);
      pg.addPoint(300, 35);
      pg.addPoint(320, 95);
      pg.addPoint(275, 70);
      pg.addPoint(210, 100);
      pg.addPoint(180, 50);

      if (ch.getSelectedItem().equals("Polygon"))
         g.drawPolygon(pg);
      else if (ch.getSelectedItem().equals("Filled Polygon"))
         g.fillPolygon(pg);
   }

   public boolean action(Event e, Object o)
   {
      if (o.equals("Draw"))
      {
         nc.repaint();

         return true;
      }
      else if (o.equals("Polygon"))
      {
         cl.show(p, (String)o);

         nc.repaint();

         return true;
      }
      else if (o.equals("Filled Polygon"))
      {
         cl.show(p, (String)o);

         nc.repaint();

         return true;
      }

      return false;
   }

   public Dimension preferredSize()
   {
      return new Dimension(500, 200);
   }

   public static void main(String [] args)
   {
      Frame f = new Frame("Rectangle");

      FigPoly fp = new FigPoly();

      fp.init();

      f.add("Center", fp);

      f.pack();
      f.show();
   }
}
