/**
 *  File neve : TermDialog.java
 *
 *  Leírás : Egyszerü dialogus ablak a Terminál tulajdonságainak a
 *           felvitelére ill. a megtekintésére. A konstruktor
 *           paraméterei : 'Fonok' : a befoglaló Frame tipusú egyed,
 *           'parent' : a szülő, 'ablaknev' : ablak neve,
 *           'position' : a pozíció ahol az egér esemény történt,
 *           'neve' : a terminál neve, 'id' : a terminál azonosítója,
 *           'kov' : a terminál rákövetkezői a gráfban (irányított gráf),
 *           'csop' : kik jogosultak a terminálon áthaladni.
 *           'tol' : az időpont kezdete
 *           'ig'  : az időpont vége
 *
 *  Készítette Takács Mihály 1998.06. 
 */

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

public class TermDialog extends Dialog implements ActionListener {

  private GridBagLayout      gridbag     =new GridBagLayout();
  private GridBagConstraints constraints =new GridBagConstraints();

  private Panel IdoPanel        =new Panel(new FlowLayout());
  private Panel GombPanel       =new Panel(new FlowLayout(FlowLayout.CENTER,47,5));
  private TextField azonosito   =new TextField();
  private TextField nev         =new TextField();
  private TextField kovetkezok  =new TextField();
  private TextField jogosultak  =new TextField();
  private List idotol           =new List(1); /* Idő intervallum elejének */
  private List idoig            =new List(1); /* és a végének a bevitele  */
  private Button Rendben        =new Button(" Rendben ");
  private Button Torol          =new Button(" Torol ");
  private Button Megsem         =new Button(" Megsem ");
  Point pos;
  Rajzpanel parent;  // Aki hívta
  String ablaknev;
  Frame Fonok;

  TermDialog(Frame Fonok,Rajzpanel parent,String ablaknev,Point position,
	     String neve, String id, String kov, String csop,
	     String tol , String ig) {

    super(Fonok,ablaknev,true);
    this.ablaknev=ablaknev;
    this.parent=parent;
    this.Fonok=Fonok;
    pos=position;
    nev.setText(neve);   azonosito.setText(id);  kovetkezok.setText(kov);
    jogosultak.setText(csop);
    setResizable(false);
    setSize(350,210);
    setLayout(gridbag);
    if (ablaknev.equals("Új")) {
      Megsem.setEnabled(false);
      Torol.setEnabled(false);
    } else if (ablaknev.equals("Új Terminál")) Torol.setEnabled(false);

    addhozza(gridbag, new Label("Azonosito  :"), azonosito , constraints, 0.0,
	     GridBagConstraints.NONE, GridBagConstraints.HORIZONTAL);
    addhozza(gridbag, new Label("Nev        :"), nev       , constraints, 0.0,
	     GridBagConstraints.NONE, GridBagConstraints.HORIZONTAL);
    addhozza(gridbag, new Label("Kovetkezok :"), kovetkezok, constraints, 0.0,
	     GridBagConstraints.NONE, GridBagConstraints.HORIZONTAL);
    addhozza(gridbag, new Label("Jogosultak :"), jogosultak, constraints, 0.0,
	     GridBagConstraints.NONE, GridBagConstraints.HORIZONTAL);
    addhozza(gridbag, new Label("Ido        :"), IdoPanel  , constraints, 1.0,
	     GridBagConstraints.NONE, GridBagConstraints.HORIZONTAL);
    addhozza(gridbag, Rendben                  , GombPanel , constraints, 0.0,
	     GridBagConstraints.NONE, GridBagConstraints.NONE);

    IdoPanel.add(idotol);
    IdoPanel.add(idoig);
      idotol.addItem("24:0-tol");
      idoig.addItem("24:0-ig");
      for (int i=23;i>=0;i--) {
	for (int j=45;j>=0;j-=15) {
	  idotol.addItem(Integer.toString(i)+":"+Integer.toString(j)+"-tol");
	  idoig.addItem(Integer.toString(i)+":"+Integer.toString(j)+"-ig");
	}
      }
      if (tol!="") {  // Megadták az időintervallumot
	tol=tol+"-tol";     ig=ig+"-ig";
	for (int i=idotol.getItemCount()-1;i>=0;i--) {
	  if (tol.equals(idotol.getItem(i))) {
	    idotol.makeVisible(i);   // Ez lesz látható
	    idotol.select(i);
	  }
	}
	for (int i=idoig.getItemCount()-1;i>=0;i--) {
	  if (ig.equals(idoig.getItem(i))) {
	    idoig.makeVisible(i);   // Ez lesz látható
	    idoig.select(i);
	  }
	}
      } else {   // Mehetnek a default értékek
	idotol.makeVisible(65);  /*  7:30 a default */
	idotol.select(65);
	idoig.makeVisible(13);   /* 20:30 a default */
	idoig.select(13);
      }
    GombPanel.add(Torol);
    GombPanel.add(Megsem);
    Rendben.addActionListener(this);
    Torol.addActionListener(this);
    Megsem.addActionListener(this);
    validate();
  }

              /* ActionListener interfész megvalósítása */
  public void actionPerformed(ActionEvent ae) {
    Object s=ae.getSource(); /* Visszaadja honnan jött az esemény */
    if (s.equals(Rendben)) {
      if ((azonosito.getText().length()!=0) && 
	  (idotol.getSelectedIndex()>idoig.getSelectedIndex())) {
        String tol=idotol.getSelectedItem();
	tol=tol.substring(0,tol.indexOf("-"));   // A '-tol' levágása
        String ig=idoig.getSelectedItem();
	ig=ig.substring(0,ig.indexOf("-"));   // Az '-ig' levágása
	parent.hozzaad(nev.getText(),azonosito.getText(),jogosultak.getText()
		       ,kovetkezok.getText(),pos.x,pos.y,tol,ig);
	dispose();  /* Felszabadítja a dialogus ablakot */
      } else if (azonosito.getText().length()==0) {// Üres azonosító nem lehet
	Uzenet uzen=new Uzenet(Fonok,"Hiba","HIBA : Az 'Azonosito' mezo nem lehet ures!",Uzenet.hiba);  // Üzenő ablak
      } else {  // Üres az időintervallum
	Uzenet uzen=new Uzenet(Fonok,"Hiba","HIBA : Valotlan az idointervallum!",Uzenet.hiba);  // Üzenő ablak
      }
    }
    else if (s.equals(Torol)) {
      if (azonosito.getText().length()!=0) {  // Üres azonosító nem lehet
	parent.torol(azonosito.getText());
	dispose();
      } else {
	Uzenet uzen=new Uzenet(Fonok,"Hiba","HIBA : Az 'Azonosito' mezo nem lehet ures!",Uzenet.hiba);  // Üzenő ablak
      }
    }
    else if (s.equals(Megsem)) {
	dispose();
    }
  }

  /* A GridBagLayout segítségével hozzáadja a komponenst. */
  private void addhozza(GridBagLayout grid, Component comp1, Component comp2,
			GridBagConstraints constraints , double a, 
			int fill1, int fill2)  {
    constraints.anchor=GridBagConstraints.WEST;
    constraints.gridwidth=1;
    constraints.fill=GridBagConstraints.NONE;
    constraints.weighty=a;
    constraints.weightx=a;
    grid.setConstraints(comp1, constraints);
    add(comp1);

    constraints.gridwidth=GridBagConstraints.REMAINDER;
    constraints.fill=GridBagConstraints.HORIZONTAL;
    constraints.weighty=a;
    constraints.weightx=a;
    grid.setConstraints(comp2, constraints);
    add(comp2);
  }
}
