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

public class MagicSquare_Swap extends Applet {
/****************************************************************/
/*								*/
/*	Class MagicSquare_Swap: A demo program for swapping	*/
/*		integers in a magic square solver		*/
/*								*/
/*		Copyright (C) 1996 by Yasusi Kanada		*/
/*		Last Modified: 9/16/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 = {2, 3};
   protected int[] columns = {2, 4};
   protected int[] values = {1, 4};

   public boolean action(Event e, Object arg) {
      if ("Swap".equals(arg)) {
         int temp = values[0];
         values[0] = values[1];
         values[1] = 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("Swap"));
   }

}
