import java.awt.*;
import java.applet.*;
import java.util.*;

public class MagicSquare_Rotate extends Applet {
/****************************************************************/
/*								*/
/*	Class MagicSquare_Rotate: A demo program for rotating	*/
/*		integers in a magic square solver		*/
/*								*/
/*		Copyright (C) 1996 by Yasusi Kanada		*/
/*		Last Modified: 11/23/96				*/
/*								*/
/****************************************************************/

   final int N = 5;
   final int drawing_step = 30;
   final int drawing_size = N * drawing_step;
   final int font_size = drawing_step * 3 / 5;

   protected int offset;

   protected int[] rows = {1, 3, 4};
   protected int[] columns = {2, 4, 1};
   protected int[] values = {1, 4, 3};

   public boolean action(Event e, Object arg) {
      if ("Rotate".equals(arg)) {
         int temp = values[0];
         values[0] = values[1];
	 values[1] = values[2];
         values[2] = temp;
         repaint();
         return true;
      } else {
         return false;
      };
   }

   public void paint(Graphics g) {
      offset = 8;
      for (int i = 0; i <= N; i++) {
         int grid_coord = i * drawing_step;
         g.drawLine(offset, offset + grid_coord,
                    offset + drawing_size - 1, offset + grid_coord);
         g.drawLine(offset + grid_coord, offset,
                    offset + grid_coord, offset + drawing_size - 1);
      };
      offset = offset + drawing_step / 10;
      Font old_font = g.getFont();
      g.setFont(new Font("TimesRoman", Font.PLAIN, font_size));
      for (int i = 0; i < columns.length; i++) {
         g.drawString("" + values[i],
		      offset + columns[i] * drawing_step + drawing_step * 1/4,
                      offset + rows[i] * drawing_step + drawing_step * 2/3);
      };
      g.setFont(old_font);
   }

   public void init() {
      setLayout(new BorderLayout());
      add("South", new Button("Rotate"));
   }

}
