/**
 *  File neve : MenMenu.java (MenMenu osztály)
 *
 *  Leírás : Ez az osztály a Frame amihez kapcsolva van egy
 *           ScrollPane amelyhez van csatolva a Viewpanel amin
 *           a grafikus müveletek történnek. A konstruktor
 *           egyetlen paramétere a Frame címkéje.
 *
 *  Készítette Takács Mihály 1998.06. 
 */

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

public class MenMenu extends Frame implements ActionListener, AdjustmentListener {

  Menu fajl, csoportok, segit;
  MenuItem megnyit, bezar, kilepes,              // File
           megtekint,                   // Csoport menüpont
	   segitseg, about;           // Segít menüpont

  ScrollPane scp;
  Adjustable scpHadjust,scpVadjust;  //A görgetősávokhoz
  Viewpanel viewpanel;

  MenMenu(String s) {
    super(s);

    MenuBar mb=new MenuBar();
      fajl=new Menu("Fajl");
	megnyit=new MenuItem("Megnyit..");
	megnyit.addActionListener(this);
	fajl.add(megnyit);
	bezar=new MenuItem("Bezar");
	bezar.addActionListener(this);
	bezar.setEnabled(false);
	fajl.add(bezar);
	fajl.addSeparator();
	kilepes=new MenuItem("Kilepes");
	kilepes.addActionListener(this);
	fajl.add(kilepes);
      mb.add(fajl);
      csoportok=new Menu("Csoportok");
      csoportok.setEnabled(false);
	megtekint=new MenuItem("Megtekint..");
	megtekint.addActionListener(this);
	csoportok.add(megtekint);
      mb.add(csoportok);
      segit=new Menu("Segit");
        segitseg=new MenuItem("Segit");
	segitseg.addActionListener(this);
	segit.add(segitseg);
        about=new MenuItem("A programrol");
	about.addActionListener(this);
	segit.add(about);
      mb.setHelpMenu(segit);
    setMenuBar(mb);
    scp=new ScrollPane();

    scpHadjust=scp.getHAdjustable();
    scpHadjust.setUnitIncrement(50);  // Görgetési mozgás
    scpHadjust.setBlockIncrement(getSize().width-50);   // Ugrásnál a mozgás
    scpHadjust.addAdjustmentListener(this);

    scpVadjust=scp.getVAdjustable();
    scpVadjust.setUnitIncrement(50);  // Görgetési mozgás
    scpVadjust.setBlockIncrement(getSize().height-50);   // Ugrásnál a mozgás
    scpVadjust.addAdjustmentListener(this);
    add("Center",scp);

    setSize(600,400);
    setResizable(false);
    validate();
    paintAll(getGraphics());
  }

  /* Adjustable interfész megvalósítása a ScrollPane-hoz*/
  public void adjustmentValueChanged(AdjustmentEvent e) {
    viewpanel.repaint();
    scpHadjust.setBlockIncrement(getSize().width-50);   // Ugrásnál a mozgás
    scpVadjust.setBlockIncrement(getSize().height-50);  // Ugrásnál a mozgás
  }

  /* ActionListener interfész megvalósítása a parancsok lekezeléséhez */
  public void actionPerformed(ActionEvent ae) {
    Object s=ae.getSource();
    if (s.equals(megnyit)) {   /* Létezó file megnyitása */
      FileDialog fd=new FileDialog(this,"File megnyitása",FileDialog.LOAD);
      fd.show();
      if (fd.getFile()!=null) {
	bezar.setEnabled(true);
	csoportok.setEnabled(true);
	scp.removeAll();  // Kivesszük az összes komponenst a ScrollPane-ből
	viewpanel=null;   // Erre már nincs szükéegünk
	viewpanel=new Viewpanel(scp,fd.getDirectory()+fd.getFile());
	scp.add(viewpanel);
      }
    }
    else if (s.equals(bezar)) {
      Uzenet kerdes=new Uzenet(this,"Kérdés","Biztos elhagyja a teruletet ?",Uzenet.kerdes);  // kérdező ablak
      if (kerdes.valasztasa()==Uzenet.igen) {
	csoportok.setEnabled(false);     // Menüpontok tiltása
	bezar.setEnabled(false);
	scp.removeAll();  // Kivesszük az összes komponenst a ScrollPane-ből
	viewpanel=null;   // Erre már nincs szükségünk
      }
    }
    else if (s.equals(kilepes)) {
      Uzenet kerdes=new Uzenet(this,"Kérdés","Valoban kilepes a menedzserbol ?",Uzenet.kerdes);  // kérdező ablak
      if (kerdes.valasztasa()==Uzenet.igen) {
	System.exit(0);
      }
    }
    /* Csoport menüpont */
    else if (s.equals(megtekint)) {
      CsopView csopview=new CsopView(this,"Csoportok megtekintése");
      csopview.show();
    }
    /* Segít menüpont */
    else if (s.equals(segitseg)) {
      Help help=new Help(this,"MHelp.hlp");
    }
    else if (s.equals(about)) {
      About about=new About(this);
      about.show();
    }
  }
}
