/**
 *  File neve : TermView.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 típusú 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,
 *           'tortenet' : a terminál törtenéte az indulástól,
 *           '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 TermView 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 tortenete   =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 Frissit        =new Button(" Frissit ");
  private Button Utvonal        =new Button(" Utvonal ");
  Point pos;
  Viewpanel parent;  // Akitől származik
  String ablaknev;
  Frame Fonok;
  boolean utvonalkerelem=false;  // Ha útvonal kérelme van akkor true lesz
  int ido1,ido2;    // Az intervallum két végének az indexe a listában

  TermView(Frame Fonok,Viewpanel parent,String ablaknev,Point position,
	     String neve, String id, String tortenet, 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);  tortenete.setText(tortenet);
    jogosultak.setText(csop);  // A mezők feltöltése
    azonosito.setEditable(false); // A mezők nem editálhatók
    nev.setEditable(false);
    tortenete.setEditable(false);
    jogosultak.setEditable(false);
    setResizable(false);
    setSize(350,210);
    setLayout(gridbag);

    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("Tortenete  :"), tortenete , 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");
	}
      }
      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ó
	  ido1=i;
	}
      }
      for (int i=idoig.getItemCount()-1;i>=0;i--) {
	if (ig.equals(idoig.getItem(i))) {
	  idoig.makeVisible(i);   // Ez lesz látható
	  ido2=i;
	}
      }

    GombPanel.add(Frissit);
    GombPanel.add(Utvonal);
    Rendben.addActionListener(this);
    Frissit.addActionListener(this);
    Utvonal.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)) {
      dispose();  /* Felszabadítja a dialógus ablakot */
    }
    else if (s.equals(Frissit)) {
      csucs p=parent.getcsucs(azonosito.getText());
      try {
	idotol.makeVisible(ido1);
	idoig.makeVisible(ido2);
	nev.setText(p.neve);
	tortenete.setText(p.kovetkezok());
      } catch (NullPointerException err) {}
    }
    else if (s.equals(Utvonal)) {
      utvonalkerelem=true;
      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);
  }
}
