/* 
 * File:   VasarlasAblak.java
 * Szerzo: Ondi Attila (att@ludens.elte.hu)
 * Leiras: Itt lehet megvasarolni a Hallgatoi jegyzetboltban
 *         kaphato konyveket az elektronikus-penztarca alkalmazas
 *         segitsegevel
 */

import java.awt.*;
import java.awt.event.*;
import java.io.*;

/* A Jegyzetbolti vasarlasokhoz szukseges osztaly */
class VasarlasAblak extends Frame 
                    implements ActionListener, 
                               MouseMotionListener,  
                               MouseListener, 
                               Runnable
{
   Button visszaButton, /* vissza a Jegyzetboltba */
          kiveszButton, /* kivalasztott konyv levetele a listarol */
          hozzaadButton, /* uj konyv kivalasztasa */
          fizetButton; /* ezzel lehet fizetni */
   Label osszegLabel, /* a kivalasztott konyvek aranak osszege */
         limitLabel, /* a limit cimkeje */
         egyenlegLabel; /* a rendelkezesre allo penz mennyisege */
   List arList, /* a konyvek aranak listaja */
        mitadList, /* a vasarolhato konyvek listaja */
        mennyitList; /* a kivalasztott konyvek darabszamanak listaja */
   int mennyit[]; /* a kivalasztott konyvek darabszama */
   String jelszo = new String(); /* a vasarlo altal begepelt jelszo */
   Thread thread; /* a gyuru megjeleneset, eltuneset figyelo szal */
   String iButtonID = new String(""); /* a legelso megjeleno gyuru azonositoja */
   DataInputStream dis; /* a vasarolhato konyveket es arukat tartalmazo file */

   final int LISTAMERET = 10; /* mennyi elem latszodjon a listakbol */

   /* 
    * az ablak megjelenitese (konstruktor) 
    */
   public VasarlasAblak() 
   {

      setLayout(new BorderLayout());
      
      setSize(800, 300);
      setResizable(false);
      setLocation(0,150);
      
      /* a 'vissza' gombot tartalmazo panel */
      Panel gombPanel = new Panel();
      {
       gombPanel.setLayout(new FlowLayout());
       visszaButton = new Button("Vissza a Jegyzetboltba");
       {
        gombPanel.add(visszaButton);
        visszaButton.addActionListener(this);
       }
       add("South",gombPanel);
      }

      /* a listakat tartalmazo panel */
      Panel vasarolPanel = new Panel();
      {
       vasarolPanel.setLayout(new BorderLayout());
       Panel aruPanel = new Panel();
       {
        aruPanel.setLayout(new FlowLayout());
        Panel mitadPanel = new Panel();
        {
         mitadPanel.setLayout(new BorderLayout());
         {
          mitadPanel.add("North",new Label("\u00c1ru neve:"));
          mitadPanel.add("Center",new Label(""));
         }
         mitadList = new List(LISTAMERET,false);
         {
         /* file-bol olvassuk a konyvek nevet */
         try
         {
            dis = new DataInputStream(new FileInputStream(new File("mitadList.txt")));
            String s = read(dis);
            while(!s.equals(""))
            {
               mitadList.addItem(s);
               s = read(dis);
            }
         }
         catch(FileNotFoundException e)
         {
            System.out.println("File nem talalhato: mitadList.txt");
            mitadList.addItem("FILE NEM TAL\u00c1LHAT\u00d3");
         }
          mitadList.select(0);
          mitadList.addMouseMotionListener(this);
          mitadList.addMouseListener(this);
          mitadPanel.add("South",mitadList);
         }
         aruPanel.add(mitadPanel);
        }
        Panel arPanel = new Panel();
        {
         arPanel.setLayout(new BorderLayout());
         {
          arPanel.add("North",new Label("\u00c1r:"));
          arPanel.add("Center",new Label(""));
         }
         arList = new List(LISTAMERET,false);
         {
         /* file-bol olvassuk a konyvek arat */
         try
         {
            dis = new DataInputStream(new FileInputStream(new File("arList.txt")));
            String s = read(dis);
            try
            {
               Integer.parseInt(s);
            }
            /* ha nem szamot olvastunk */
            catch(NumberFormatException e) 
            {
               s = new String("");
            }
            while(!s.equals(""))
            {
               arList.addItem(s);
               s = read(dis);
               try
               {
                  Integer.parseInt(s);
               }
               /* ha nem szamot olvastunk */
               catch(NumberFormatException e)
               {
                  s = new String("");
               }
            }
         }
         catch(FileNotFoundException e)
         {
            System.out.println("File nem talalhato: arList.txt");
            mitadList.addItem("FILE NEM TAL\u00c1LHAT\u00d3");
         }
         /* ha tobb ar van felsorolva, mint konyv */
         while(mitadList.getItemCount()<arList.getItemCount())
         {
            arList.remove(arList.getItemCount()-1);
         }
         /* ha tobb konyv van felsorolva, mint ar */
         while(arList.getItemCount()<mitadList.getItemCount())
         {
            mitadList.remove(mitadList.getItemCount()-1);
         }
          arList.select(0);
          arList.addMouseMotionListener(this);
          arList.addMouseListener(this);
          arPanel.add("South",arList);
         }
         aruPanel.add(arPanel);
        }
        /* a kijelolt konyv kivetele a valasztottak kozul */
        kiveszButton = new Button("<");
        {
         aruPanel.add(kiveszButton);
         kiveszButton.addActionListener(this);
        }
        /* a kijelolt konyv hozzaadasa a valasztottakhoz */
        hozzaadButton = new Button(">");
        {
         aruPanel.add(hozzaadButton);
         hozzaadButton.addActionListener(this);
        }
        /* melyik konyvbol mennyit valasztottak ki */
        Panel mennyitPanel = new Panel();
        {
         mennyitPanel.setLayout(new BorderLayout());
         {
          mennyitPanel.add("North",new Label("V\u00e1lasztott "+
                                             "mennyis\u00e9g:"));
          mennyitPanel.add("Center",new Label(""));
         }
         mennyitList = new List(LISTAMERET,false);
         {
          mennyit = new int[mitadList.getItemCount()];
          for(int i = 0;i<mitadList.getItemCount();i++)
          {
             mennyit[i] = 0;
             mennyitList.addItem(Integer.toString(mennyit[i]),i);
          }
          mennyitList.select(0);
          mennyitList.addMouseMotionListener(this);
          mennyitList.addMouseListener(this);
          mennyitPanel.add("South",mennyitList);
         }
         aruPanel.add(mennyitPanel);
        }
        /* a vasarlashoz szukseges gombok es cimkek */
        Panel vasarPanel = new Panel();
        {
         vasarPanel.setLayout(new BorderLayout());
         Panel osszegPanel = new Panel();
         {
          osszegPanel.setLayout(new FlowLayout());
          {
           {
            osszegPanel.add(new Label(" \u00f6sszeg: "));
           }
           osszegLabel = new Label("0");
            osszegPanel.add(osszegLabel);
          }
          vasarPanel.add("North",osszegPanel);
         }
         Panel vmiPanel = new Panel();
         {
          vmiPanel.setLayout(new BorderLayout());
          Panel limitPanel = new Panel();
          {
           limitPanel.setLayout(new FlowLayout());
           {
            limitPanel.add(new Label("     limit: "));
           }
           limitLabel = 
              new Label(Integer.toString(Gyuru.eszkoz.limitKerdez()));
            limitPanel.add(limitLabel);
           vmiPanel.add("North",limitPanel);
          }
          Panel egyenlegPanel = new Panel();
          {
           egyenlegPanel.setLayout(new FlowLayout());
           {
            egyenlegPanel.add(new Label("egyenleg: "));
           }
           egyenlegLabel = 
              new Label(Integer.toString(Gyuru.eszkoz.egyenlegKerdez()));
            egyenlegPanel.add(egyenlegLabel);
           vmiPanel.add("South",egyenlegPanel);
          }
          vasarPanel.add("Center",vmiPanel);
         }
         fizetButton = new Button("Fizet!");
         {
          vasarPanel.add("South",fizetButton);
          fizetButton.addActionListener(this);
         }
         aruPanel.add(vasarPanel);
        }
        vasarolPanel.add("North",aruPanel);
       }
       add("Center",vasarolPanel);
      }
      /* a szal elinditasa */
      thread = new Thread(this);
      thread.start();
   }

   /* 
    * a gyuru megjeleneset es eltuneset figyelo szal futasa 
    */
   public void run()
   {
      boolean haveiButton = !(Gyuru.eszkoz.eszkozJelen()&&
                              Gyuru.eszkoz.appletJelen());
      while (true)
      {
         try
         {
            /* varunk egy kicsit */
            Thread.sleep(250);
         }
         catch (InterruptedException e)
         {
         }

         try
         {
            /* ha nincs kifizetendo osszeg, ne legyen aktiv a fizetes gomb */
            if(haveiButton&&(Integer.parseInt(osszegLabel.getText())!=0))
            {
               fizetButton.setEnabled(true);
            }
            else
            {
               fizetButton.setEnabled(false);
            }

            /* Ellenorzi az eltuno gyurut */
            if (haveiButton&& 
                !(Gyuru.eszkoz.eszkozJelen()&&
                  Gyuru.eszkoz.appletJelen()))
            {
               haveiButton = false;
               setTitle("V\u00e1s\u00e1rl\u00e1s (nincs eszk\u00f6z jelen)");
               kiveszButton.setEnabled(false);
               hozzaadButton.setEnabled(false);
               limitLabel.setVisible(false);
               egyenlegLabel.setVisible(false);
               /*fizetButton.setEnabled(false);*/
            }
            /* Ellenorzi a megjeleno gyurut */
            else if (!haveiButton&& 
                     (Gyuru.eszkoz.eszkozJelen()&&
                      Gyuru.eszkoz.appletJelen()))
            {
               haveiButton = true;
               if(iButtonID.equals(""))
               {
                  iButtonID = Gyuru.eszkoz.getiButtonID();
               }
               else
               {
               }
               if(!iButtonID.equals(Gyuru.eszkoz.getiButtonID()))
               {
                  setTitle("V\u00e1s\u00e1rl\u00e1s (eszk\u00f6z megv\u00e1ltozott)");
                  kiveszButton.setEnabled(false);
                  hozzaadButton.setEnabled(false);
                  limitLabel.setVisible(false);
                  egyenlegLabel.setVisible(false);
                  /*fizetButton.setEnabled(false);*/
               }
               else
               {
                  limitLabel.setText(
                     (Integer.toString(Gyuru.eszkoz.limitKerdez())));
                  egyenlegLabel.setText(
                     (Integer.toString(Gyuru.eszkoz.egyenlegKerdez())));
                  setTitle("V\u00e1s\u00e1rl\u00e1s (eszk\u00f6z el\u00e9rhet\u00f4)");
                  kiveszButton.setEnabled(true);
                  hozzaadButton.setEnabled(true);
                  limitLabel.setVisible(true);
                  egyenlegLabel.setVisible(true);
                  /*fizetButton.setEnabled(true);*/
               }
            }
         }
         /* a gyuru elvetelekor (neha) fellepo kivetel */
         catch (NullPointerException e)
         {
         }
      }
   }

   /* 
    * a file-bol olvasas muvelete 
    */
   private String read(DataInputStream dis)
   {
      try
      {
         char c = (char)dis.readByte();
         String s = new String("");
         while(true)
         {
            /* ujsor karakter */
            if(c == (char)10)
            {
               return(s);
            }
            /* kocsivissza karakter */
            else if(c == (char)13)
            {
               c = (char)dis.readByte();  
            }
            /* barmi mas */
            else
            {
               s = s.concat(s.valueOf(c));
               c = (char)dis.readByte();
            }
         }
      }
      /* ha elertuk a file veget */
      catch(EOFException e)
      {
         try
         {
            /* lezarjuk a file-t */
            dis.close();
         }
         catch(IOException f)
         {
         }
      }
      /* hiba a beolvasaskor */
      catch(IOException e)
      {
         System.out.println("Olvas\u00e1si hiba: mitadList.txt vagy arList.txt");
      }
      return("");
   }
   
   /* 
    * a fizetesek feljegyzese (log) - lehetne titkositani is (pl idotol fuggoen) 
    */
   private void write()
   {
      try
      {
         String s;
         RandomAccessFile raf = new RandomAccessFile(new File("eladas.txt"),"rw");
         /* a file vegere irunk */
         raf.seek(raf.length());
         /* eloszor a gyuru azonositojat */
         s = Gyuru.eszkoz.getiButtonID()+"\n";
         raf.writeBytes(s);
         /* azutan a valasztott konyvek arral, darabszammal */
         for(int i=0;i<mennyitList.getItemCount();i++)
         {
            if(Integer.parseInt(mennyitList.getItem(i))>0)
            {
               s = mitadList.getItem(i)+" $"+arList.getItem(i)+" $"+mennyitList.getItem(i)+"\n";
               raf.writeBytes(s);
            }
         }
      }
      /* hiba az olvasasnal */
      catch(IOException e)
      {
         System.out.println("\u00cdr\u00e1si hiba: eladas.txt");
      }
      /* a file-t nem lehet iras-olasasra megnyitni */
      catch(SecurityException e)
      {
         System.out.println("Hozz\u00e1f\u00e9r\u00e9si hiba: eladas.txt");
      }
   }

   /* 
    * MouseListener metodusai 
    */
   public void mouseClicked(MouseEvent evt)
   {
   }

   public void mousePressed(MouseEvent evt)
   {
   }

   public void mouseReleased(MouseEvent evt)
   {
   }

   public void mouseEntered(MouseEvent evt)
   {
   }

   /* ha az eger elhagyja vmelyik listat a tobbit szinkronizaljuk hozza */
   public void mouseExited(MouseEvent evt)
   {
      if((evt.getSource()==mitadList)||(evt.getSource()==arList)||(evt.getSource()==mennyitList))
      {
         mitadList.makeVisible(((List)evt.getSource()).getRows());
         arList.makeVisible(((List)evt.getSource()).getRows());
         mennyitList.makeVisible(((List)evt.getSource()).getRows());
         mitadList.makeVisible(((List)evt.getSource()).getSelectedIndex());
         arList.makeVisible(((List)evt.getSource()).getSelectedIndex());
         mennyitList.makeVisible(((List)evt.getSource()).getSelectedIndex());
      }
   }

   /* 
    * MouseMotionListener metodusai 
    */
   public void mouseMoved(MouseEvent evt)
   {
      if((evt.getSource()==mitadList)||(evt.getSource()==arList)||(evt.getSource()==mennyitList))
      {
         mitadList.select(((List)evt.getSource()).getSelectedIndex());
         arList.select(((List)evt.getSource()).getSelectedIndex());
         mennyitList.select(((List)evt.getSource()).getSelectedIndex());
      }
   }

   public void mouseDragged(MouseEvent evt)
   {
   }

   /*
    * ActionListener metodusai
    */
   public void actionPerformed(ActionEvent evt)
   {
      if(evt.getSource()==visszaButton)
      {
         /* Vissza */
         dispose();
         thread.stop();
         Gyuru.jegyzetboltablak = new JegyzetBoltAblak();
         Gyuru.jegyzetboltablak.show();
      }
      if(evt.getSource()==fizetButton)
      {
         /* Fizetes */
         int osszeg = Integer.parseInt(osszegLabel.getText());
         if(osszeg>0)
         {
            /* ha a limitnel tobbet akar fizetni... */
            if(osszeg>Gyuru.eszkoz.limitKerdez())
            {
               /* megkerdezzuk a jelszavat */
               JelszoAblak jelszoablak = new JelszoAblak("");
               setVisible(false);
               jelszoablak.show();
               setVisible(true);
            }
            else /* ...kulonben jelezzuk, hogy limit-nel kisebb osszeggel fizetunk */
            {
               SzovegAblak szovegablak = 
                  new SzovegAblak(Gyuru.vasarlasablak,
                                  "",
                                  "Limitn\u00e9l alacsonyabb \u00e9rt\u00e9ku fizet\u00e9s...",
                                  "");
               szovegablak.show();
               jelszo = new String("*limit*");
            }
            int egyenleg = Integer.parseInt(egyenlegLabel.getText());
            /* ha beirtak vmilyen jelszot */
            if(!jelszo.equals("*nemjo*"))
            {
               if(Gyuru.eszkoz.egyenlegModosit(false,jelszo,-osszeg))
               {
                  /* sikeres fizetes */
                  SzovegAblak szovegablak = 
                     new SzovegAblak(Gyuru.vasarlasablak,
				                         "",
				                         "A fizet\u00e9si tranzakci\u00f3 sikeres volt.",
				                         "");
                  szovegablak.show();
                  dispose();
                  write();
                  thread.stop();
                  Gyuru.jegyzetboltablak = new JegyzetBoltAblak();
                  Gyuru.jegyzetboltablak.show();
               }
               else
               {
                  /* sikertelen fizetes */
                  SzovegAblak szovegablak = 
                     new SzovegAblak(Gyuru.vasarlasablak,
                                     "Hib\u00e1s jelsz\u00f3",
                                     "Ez a jelsz\u00f3 nem \u00e9rv\u00e9nyes "+
                                     "az eszk\u00f6z\u00f6n!",
                                     "(vagy eszkozhiba)");
                  szovegablak.show();
                  for(int i = 0;i<mitadList.getItemCount();i++)
                  {
                     mennyit[i] = 0;
                     mennyitList.replaceItem(Integer.toString(mennyit[i]),i);
                  }
                  egyenlegLabel.setText(
                     (Integer.toString(Gyuru.eszkoz.egyenlegKerdez())));
                  osszeg = 0;
                  osszegLabel.setText(Integer.toString(osszeg));
               }
            }
            else
            {
            }
         }
         else
         {
         }
      }
      if(evt.getSource()==hozzaadButton)
      {
         /* mennyiseg novelese */
         int i = mitadList.getSelectedIndex();
         int osszeg = Integer.parseInt(osszegLabel.getText());
         String ar[] = arList.getItems();
         if((i!=-1)&&
            (mennyit[i]<9)&&
            (osszeg+Integer.parseInt(ar[i])<=
             Integer.parseInt(egyenlegLabel.getText())))
         {
            mennyit[i]+=1;
            mennyitList.replaceItem(Integer.toString(mennyit[i]),i);
            mennyitList.select(i);
            osszeg+=Integer.parseInt(ar[i]);
            osszegLabel.setText(Integer.toString(osszeg));
         }
      }
      if(evt.getSource()==kiveszButton)
      {
         /* mennyiseg csokkentese */
         int i = mitadList.getSelectedIndex();
         int osszeg = Integer.parseInt(osszegLabel.getText());
         String ar[] = arList.getItems();
         if((i!=-1)&&(mennyit[i]>0))
         {
            mennyit[i]-=1;
            mennyitList.replaceItem(Integer.toString(mennyit[i]),i);
            mennyitList.select(i);
            osszeg-=Integer.parseInt(ar[i]);
            osszegLabel.setText(Integer.toString(osszeg));
         }
      }
   }

   /*
    * A jelszo megkerdezese 
    */
   class JelszoAblak extends Dialog 
                     implements ActionListener, 
                                KeyListener, 
                                Runnable
   {
      Label jelszoLabel; /* a jelszo karakterei helyetti csillagok */
      Button rendbenButton, /* OK gomb */
             megsemButton, /* megse irjuk be a jelszot */
             torlesButton; /* toroljuk a beirt jelszot */
      String regi = new String(""); /* a legfrissebb jelszotoredek */
      Thread thread; /* lasd VasarlasAblak */

      /* 
       * a jelszo lekerdezesehez szukseges ablak (konstruktor)
       */
      public JelszoAblak(String s)
      {
         super(Gyuru.vasarlasablak,"Jelsz\u00f3 be\u00edr\u00e1sa",true);


         setSize(300, 200);
         setResizable(false);
         setLocation(250,200);

         setLayout(new BorderLayout());

         Panel szovegPanel = new Panel();
         {
          szovegPanel.setLayout(new FlowLayout());
          {
           szovegPanel.add(new Label("\u00cdrd be a jelszavadat!"));
          }
          add("North",szovegPanel);
         }
         Panel jelszoPanel = new Panel();
         {
          jelszoPanel.setLayout(new FlowLayout());
          {
           jelszoLabel = new Label("                  ");
           jelszoPanel.add(jelszoLabel);
           torlesButton = new Button("t\u00f6rl\u00e9s");
           {
            torlesButton.addActionListener(this);
            torlesButton.addKeyListener(this);
           }
           jelszoPanel.add(torlesButton);
          }
          add("Center",jelszoPanel);
         }
         Panel gombPanel = new Panel();
         {
          gombPanel.setLayout(new FlowLayout());
          {
           rendbenButton = new Button("OK");
           {
            rendbenButton.addActionListener(this);
            rendbenButton.addKeyListener(this);
           }
           gombPanel.add(rendbenButton);
           megsemButton = new Button("M\u00e9gsem");
           {
            megsemButton.addActionListener(this);
            megsemButton.addKeyListener(this);
           }
           gombPanel.add(megsemButton);
          }
          add("South",gombPanel);
         }
         
         thread = new Thread(this);
         thread.start();
      }

      /* 
       * a gyurut figyelo szal
       */
      public void run()
      {
         boolean haveiButton = !(Gyuru.eszkoz.eszkozJelen()&&
                                 Gyuru.eszkoz.appletJelen());
         while (true)
         {
            try
            {
               Thread.sleep(250);
            }
            catch (InterruptedException e)
            {
            }

            try
            {
               /* ha valami nem stimmel a gyuruvel: visszaterunk a VasarlasAblakhoz */
               if (haveiButton&& 
                   !(Gyuru.eszkoz.eszkozJelen()&&
                     Gyuru.eszkoz.appletJelen()&&
                     iButtonID.equals(Gyuru.eszkoz.getiButtonID())))
               {
                  haveiButton = false;
                  jelszo = new String("*nemjo*");
                  dispose();
                  thread.stop();
               }
               else
               {
                  haveiButton = true;
               }
            }
            catch(NullPointerException e)
            {
            }
         }
      }

      /* 
       * KeyListener metodusa 
       */
      public void keyTyped(KeyEvent evt)
      {
         String csillag = new String(""); /* a kiirt csilagok */
         char[] betuk = new char[regi.length()+1]; /* a jelszo karakterei */

         regi.getChars(0,regi.length(),betuk,0);
         /* milyen billentyut nyomtak le */
         switch(betuk[regi.length()] = evt.getKeyChar())
         {
            case (char)(byte)13:
            case evt.VK_ENTER:
            {
               /* OK */
               thread.stop();
               dispose();
               break;
            }
            case evt.VK_CANCEL:
            {
               /* Megsem */
               jelszo = new String("*nemjo*");
               thread.stop();
               dispose();
               break;
            }
            case evt.VK_BACK_SPACE:
            {
               /* BackSpace */
               if(betuk.length!=1)
               {
                  char[] b = new char[betuk.length-2];
                  for(int i = 0;i<b.length;i++)
                  {
                     b[i] = betuk[i];
                  }
                  regi = regi.copyValueOf(b);
                  for(int i = 0;i<regi.length();i++)
                  {
                     csillag = csillag.concat("*");
                  }
                  jelszoLabel.setText(csillag);
                  jelszo = regi;
               }
               else
               {
               }
               break;
            }
            case evt.VK_CLEAR:
            case evt.VK_ESCAPE:
            {
               /* Torles */
               regi = new String("");
               jelszoLabel.setText("        ");
               break;
            }
            case '0':
            case '1':
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
            case '8':
            case '9':
            case 'a':
            case 'b':
            case 'c':
            case 'd':
            case 'e':
            case 'f':
            case 'g':
            case 'h':
            case 'i':
            case 'j':
            case 'k':
            case 'l':
            case 'm':
            case 'n':
            case 'o':
            case 'p':
            case 'q':
            case 'r':
            case 's':
            case 't':
            case 'u':
            case 'v':
            case 'w':
            case 'x':
            case 'y':
            case 'z':
            case 'A':
            case 'B':
            case 'C':
            case 'D':
            case 'E':
            case 'F':
            case 'G':
            case 'H':
            case 'I':
            case 'J':
            case 'K':
            case 'L':
            case 'M':
            case 'N':
            case 'O':
            case 'P':
            case 'Q':
            case 'R':
            case 'S':
            case 'T':
            case 'U':
            case 'V':
            case 'W':
            case 'X':
            case 'Y':
            case 'Z':
            {
               regi = regi.copyValueOf(betuk);
               for(int i = 0;i<regi.length();i++)
               {
                  csillag = csillag.concat("*");
               }
               jelszoLabel.setText(csillag);
               jelszo = regi;
               break;
            }
            default:
            {
               break;
            }
         }
      }

      public void keyPressed(KeyEvent evt)
      {
      }

      public void keyReleased(KeyEvent evt)
      {
      }

      public void actionPerformed(ActionEvent evt)
      {
         if(evt.getSource()==rendbenButton)
         {
            /* OK */
            thread.stop();
            dispose();
         }
         if(evt.getSource()==megsemButton)
         {
            /* Megsem */
            jelszo = new String("*nemjo*");
            thread.stop();
            dispose();
         }
         if(evt.getSource()==torlesButton)
         {
            /* Torles */
            regi = new String("");
            jelszoLabel.setText("        ");
         }
      }
   }
}