/*
   draw9: reading from and writing to disks
*/

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

public class Draw9 extends Draw8
{
   Item newItem() { return (Item)(new Item9()); }

   Item9 item9(int i) { return (Item9)item[i]; }

   LocalTextIO textIO = new LocalTextIO();
   StringTokenizer st;

   // CONTROL-R TO READ A DRAWING FROM A FILE
   // CONTROL-W TO WRITE A DRAWING TO A FILE

   public boolean keyUp(Event e, int key) {
      String fileName;

      switch (key) {

      case 23: // CONTROL W
         if ((fileName = getFileName()) == null)
            return true;

         String s = "nItems " + nItems + "\n";

         for (int i = 0 ; i < nItems ; i++)
            s += item9(i).toString();
         textIO.save(fileName, s);

         return true;

      case 18: // CONTROL R
         if ((fileName = getFileName()) == null)
            return true;

         clear();

         st = new StringTokenizer(textIO.load(fileName));
         st.nextToken();
         nItems = (new Integer(st.nextToken())).intValue();

         for (int i = 0 ; i < nItems ; i++)
            item[i] = newItem();
         for (int i = 0 ; i < nItems ; i++)
            item9(i).parse(st, item);

         return true;

      default:
         return super.keyUp(e, key);
      }
   }

   String getFileName() {
      int i = itemAt(mx, my);
      if (i < 0)
         return null;
      String name = item9(i).text;
      if (name.length() == 0)
         return null;
      deleteItem(i);
      return name + ".drw";
   }
}


