/*                                                                           *\
        file: UFC.java
       class: UFC
        date: 02/05/1996
      author: Jeroen, Arthur
 description: Puts the 'Unadjusted Function Count' (UFC) on the screen 
\*                                                                           */

import java.awt.*;

public class UFC extends Frame 
{
  /* private data */
  private TextField textfields[];
  private CocomoTool main;

  public int getUFC()
  {
    return Integer.valueOf(textfields[0].getText()).intValue()*3+
           Integer.valueOf(textfields[1].getText()).intValue()*4+
           Integer.valueOf(textfields[2].getText()).intValue()*6+
           Integer.valueOf(textfields[3].getText()).intValue()*4+
           Integer.valueOf(textfields[4].getText()).intValue()*5+
           Integer.valueOf(textfields[5].getText()).intValue()*7+
           Integer.valueOf(textfields[6].getText()).intValue()*3+
           Integer.valueOf(textfields[7].getText()).intValue()*4+
           Integer.valueOf(textfields[8].getText()).intValue()*6+
           Integer.valueOf(textfields[9].getText()).intValue()*7+
           Integer.valueOf(textfields[10].getText()).intValue()*10+
           Integer.valueOf(textfields[11].getText()).intValue()*15+
           Integer.valueOf(textfields[12].getText()).intValue()*5+
           Integer.valueOf(textfields[13].getText()).intValue()*7+
           Integer.valueOf(textfields[14].getText()).intValue()*10;
  }

  /* constructor */
  public UFC(CocomoTool m) 
  {
    main=m;
    int i;

    /* make textfields */
    textfields=new TextField[15];
    for(i=0;i<15;i++)
      textfields[i]=new TextField(String.valueOf(0),10);

    Panel p=new Panel(); 
    p.setLayout(new GridLayout(6,4));
    p.add(new Label(""));
    p.add(new Label("simple",Label.CENTER));
    p.add(new Label("average",Label.CENTER));
    p.add(new Label("complex",Label.CENTER));

    p.add(new Label("User inputs :"));
    p.add(textfields[0]);
    p.add(textfields[1]);
    p.add(textfields[2]);

    p.add(new Label("User outputs :"));
    p.add(textfields[3]);
    p.add(textfields[4]);
    p.add(textfields[5]);

    p.add(new Label("User inquiries :"));
    p.add(textfields[6]);
    p.add(textfields[7]);
    p.add(textfields[8]);

    p.add(new Label("Files :"));
    p.add(textfields[9]);
    p.add(textfields[10]);
    p.add(textfields[11]);

    p.add(new Label("External interfaces :"));
    p.add(textfields[12]);
    p.add(textfields[13]);
    p.add(textfields[14]);

    setLayout(new BorderLayout());
    add("Center",p);
    add("South",new Button("Close"));
    setTitle("Unadjusted Function Count (UFC)");
    pack();
  }

  /* Event Handler */
  public boolean handleEvent(Event evt)
  {
    if((evt.id==Event.WINDOW_ICONIFY)||(evt.id==Event.WINDOW_DESTROY))
    {
      hide();
      main.updateFP();
      return true;
    }
    else if((evt.target instanceof TextField)&&((evt.id==Event.ACTION_EVENT)||
            (evt.id==Event.GOT_FOCUS)))
    {
      /* value could have changed */
      main.updateFP();
      return true;
    }
    else if((evt.target instanceof Button)&&(evt.id==Event.ACTION_EVENT)&&(((Button)evt.target).getLabel().equals("Close")))
    {
      hide();
      main.updateFP();
      return true;
    }
    return false;
  }
}

