// Enrique Ortega modificação programa de Caio Oba 04/06/2003 Projeto Final II

import java.awt.*;        // Bibliotecas utilizadas
import java.applet.*;
import java.awt.event.*;
import java.text.*;

/*<APPLET CODE="propfis2.class" CODEBASE="." WIDTH=660 HEIGHT=380> </APPLET>*/

public class propfis2 extends Applet implements AdjustmentListener, ItemListener
{
//Declaração das Váriáveis
double t, agua, proteina, cinzas, carboidrato, lipideo,fibras;
double d,cp,k,cal, p,g,ca,f,ci,a;
double bac1,bac2,bac3,bac4,bac5,bac6;
double bst1,bst2,bst3,bst4,bst5,bst6;
double lmb1,lmb2,lmb3,lmb4,lmb5,lmb6;

NumberFormat nf1 = NumberFormat.getNumberInstance();
NumberFormat nf3 = NumberFormat.getNumberInstance();

Label lb01,lb02,lb03,lb04,lb05,lb06,lb07;
Label lb5,lb6,lb7,lb8, lb9, lb10;
Label lb11, lb12, lb13, lb14, lb15, lb16, lb17;
Label lba1,lba2,lba3,lba4;

Panel p1,p2,p3,p4,p5;

// Valores inicias da bisteca sem osso

TextField tf01 = new TextField("",4); //agua
TextField tf02 = new TextField("",4);  //proteina
TextField tf03 = new TextField("",4); //lipideos
TextField tf04 = new TextField("",4);  //carboidrato
TextField tf05 = new TextField("",4);  //cinzas
TextField tf06 = new TextField("",4);     //fibras

TextField tf08 = new TextField("10",5);//temperatura

TextField tf11 = new TextField("",4);//resultado
TextField tf12 = new TextField("",4);//resultado
TextField tf13 = new TextField("",4);//resultado
TextField tf14 = new TextField("",4);//resultado

Scrollbar sb1;

//Checkbox[] cb=new Checkbox[4];
//CheckboxGroup cbg = new CheckboxGroup();

Choice ch;

/* Inicio dos Métodos para Cálculos deste programa*/

//Método para Cálculo de Densidade (kg/m3)
double Densidade (double proteina,double gordura,double carboidrato,double fibras, double cinzas, double agua, double t)
{
   p=1.3299E3-5.1840E-1*t;
   g=9.2559E2-4.1757E-1*t;
   ca=1.5991E3-3.1046E-1*t;
   f=1.3115E3-3.6589E-1*t;
   ci=2.4238E3-2.8063E-1*t;
   a=1000.0163-0.019620666*t-0.0034517530*t*t-4.0295927E-5*t*t*t+6.0425178E-7*t*t*t*t-3.362154E-9*t*t*t*t*t+8.5021633E-12*t*t*t*t*t*t-8.2532596E-15*t*t*t*t*t*t*t;
   return ((proteina*p+gordura*g+carboidrato*ca+fibras*f+cinzas*ci+agua*a)/100);
}

//Método para Cálculo de Calor Específico (J/kg.ºC)
double Caloresp (double proteina,double gordura,double carboidrato,double fibras, double cinzas, double agua, double t)
{
   p=2.0082+1.2089E-3*t-1.3129E-6*t*t;
   g=1.9842+1.4733E-3*t-4.8008E-6*t*t;
   ca=1.5488+1.9625E-3*t-5.9399E-6*t*t;
   f=1.8459+1.8306E-3*t-4.6509E-6*t*t;
   ci=1.029+1.8896E-3*t-3.6817E-6*t*t;
   a=(0.99450036+0.0034583926*t-1.9662498E-4*t*t+3.9480288E-6*t*t*t-3.6765615E-8*t*t*t*t+1.7415129E-10*t*t*t*t*t-4.0643876E-13*t*t*t*t*t*t+3.7192251E-16*t*t*t*t*t*t*t)*4.18E-3;
   return ((proteina*p+gordura*g+carboidrato*ca+fibras*f+cinzas*ci+agua*a)/100);
}


//Método para Cálculo de Condutividade Termica (W/mºC)
double Condutividade (double proteina,double gordura,double carboidrato,double fibras, double cinzas, double agua, double t)
{
   p=0.17881+1.1958E-3*t-2.7178E-6*t*t;
   g=0.18071-2.7604E-3*t-1.7749E-7*t*t;
   ca=0.20141+1.3874E-3*t-4.3312E-6*t*t;
   f=0.18331+1.2497E-3*t-3.1683E-6*t*t;
   ci=0.32962+1.4011E-3*t-2.9069E-6*t*t;
   a=(0.47544091+0.0021600042*t-1.4598133E-5*t*t+4.4970702E-8*t*t*t-6.8959266E-1*t*t*t*t)*4.18E-3/3600;
   return ((proteina*p+gordura*g+carboidrato*ca+fibras*f+cinzas*ci+agua*a)/100);
}

//Método para Valor Calórico Teórico (Kcal/100g)
double Caloria (double proteina,double gordura,double carboidrato)
{
   p=4*proteina;
   g=9*gordura;
   ca=4*carboidrato;
   return ((p+g+ca));
}
/* Fim dos Métodos*/

public void init() // inicio do programa
{
   bac1=24.39; bac2=08.04; bac3=62.81; bac4=02.93; bac5=01.83; bac6=0.00;
   bst1=71.67; bst2=20.36; bst3=05.66; bst4=01.20; bst5=01.11; bst6=0.00;
   lmb1=65.27; lmb2=19.38; lmb3=14.49; lmb4=00.00; lmb5=00.86; lmb6=0.00;

   nf1.setMaximumFractionDigits(1);
   nf3.setMaximumFractionDigits(3);

   setLayout(new BorderLayout(5,5));
   setBackground(Color.white);

   // Título do Programa
   p1=new Panel(); add("North",p1);
   p1.setLayout(new FlowLayout());
   p1.setBackground(Color.yellow);
   lb01=(new Label("PROPRIEDADES FÍSICAS DE CARNE SUÍNA",Label.CENTER));
   lb01.setBackground(Color.yellow);    lb01.setForeground(Color.black);
   p1.add(lb01);

   p2=new Panel(); add("West",p2);
   p2.setLayout(new GridLayout(13,1,5,5));   p2.setBackground(Color.white);
   lb02=(new Label("Escolha::            "));     p2.add(lb02);

   //p2.add(cb[0]=new Checkbox("Bacon",cbg,true));         cb[0].addItemListener(this);
   //p2.add(cb[1]=new Checkbox("Bisteca s/ osso",cbg,false));cb[1].addItemListener(this);
   //p2.add(cb[2]=new Checkbox("Lombo",cbg,false));         cb[2].addItemListener(this);

   ch = new Choice();
   ch.addItem("Bacon");
   ch.addItem("Bisteca s/ osso");
   ch.addItem("Lombo");
   p2.add(ch);ch.addItemListener(this);

   lb03=(new Label("")); p2.add(lb03);
   lb03=(new Label("")); p2.add(lb03);
   lb03=(new Label("")); p2.add(lb03);
   lb03=(new Label("")); p2.add(lb03);
   lb03=(new Label("")); p2.add(lb03);
   lb03=(new Label("")); p2.add(lb03);

   p3=new Panel(); add("Center",p3);
   p3.setLayout(new GridLayout(13,2,1,1));   p3.setBackground(Color.white);
   lb04=(new Label("Composição:"));     p3.add(lb04);
   lb03=(new Label(""));                p3.add(lb03);
   lb5= (new Label("% Água:"));       lb5.setBackground(Color.white);  p3.add(lb5);   p3.add(tf01);
   lb6= (new Label("% Proteína:"));   lb6.setBackground(Color.white);  p3.add(lb6);   p3.add(tf02);
   lb7= (new Label("% Lipídeo:"));    lb7.setBackground(Color.white);  p3.add(lb7);   p3.add(tf03);
   lb8= (new Label("% Carboidrato:"));lb8.setBackground(Color.white);  p3.add(lb8);   p3.add(tf04);
   lb9= (new Label("% Cinza:"));      lb9.setBackground(Color.white);  p3.add(lb9);   p3.add(tf05);
   lb10=(new Label("% Fibra:"));     lb10.setBackground(Color.white);  p3.add(lb10);  p3.add(tf06);

   lb11=(new Label("Propriedades Físicas:"));         p3.add(lb11);
   lb03=(new Label(""));                              p3.add(lb03);
   lb13 = new Label("Calor Específico [J/kgºC]");     p3.add(lb13); tf11 = new TextField("",3); p3.add(tf11);
   lb14 = new Label("Condutividade Térmica [W/mºC]"); p3.add(lb14); tf12 = new TextField("",3); p3.add(tf12);
   lb15 = new Label("Densidade [kg/m3]");             p3.add(lb15); tf13 = new TextField("",3); p3.add(tf13);
   lb16 = new Label("Valor Calórico [kcal/100g]");    p3.add(lb16); tf14 = new TextField("",3); p3.add(tf14);
   tf14.setBackground(Color.yellow);

   p4=new Panel(); add("East",p4);
   p4.setLayout(new FlowLayout());   p4.setBackground(Color.white);
   lb17=(new Label("   ")); p4.add(lb17);

   //Cálculo
   p5= new Panel(); add("South",p5);
   p5.setLayout(new FlowLayout());        p5.setBackground(Color.white);
   p5.add(new Label("Temperatura °C:"));

   sb1 = new Scrollbar(Scrollbar.HORIZONTAL,25,0,-40,151);
   p5.add(sb1); sb1.addAdjustmentListener(this);

   tf08 = new TextField(String.valueOf(sb1.getValue()),2);  p5.add(tf08) ;
   tf08.setEditable(false);  //temperatura
}

 public void adjustmentValueChanged(AdjustmentEvent e)
 {	if (e.getAdjustable() == sb1)
	{
	   t= (double)sb1.getValue();
	   tf08.setText(String.valueOf(t));

	   agua=Double.valueOf(tf01.getText()).doubleValue();
	   proteina=Double.valueOf(tf02.getText()).doubleValue();
	   carboidrato=Double.valueOf(tf04.getText()).doubleValue();
	   cinzas=Double.valueOf(tf05.getText()).doubleValue();
	   fibras=Double.valueOf(tf06.getText()).doubleValue();
	   lipideo=Double.valueOf(tf03.getText()).doubleValue();

	   d=Densidade(proteina,lipideo,carboidrato,fibras,cinzas,agua,t);
	   cp=Caloresp(proteina,lipideo,carboidrato,fibras,cinzas,agua,t);
	   k=Condutividade(proteina,lipideo,carboidrato,fibras,cinzas,agua,t);
	   cal=Caloria(proteina,lipideo,carboidrato);

	   tf11.setText(String.valueOf(nf3.format(cp)));
	   tf12.setText(String.valueOf(nf3.format(k)));
	   tf13.setText(String.valueOf(nf1.format(d)));
	   tf14.setText(String.valueOf(nf1.format(cal)));
    }
 }

 public void itemStateChanged(ItemEvent e)
 {
	if(e.getItem() == "Bacon")
    {
			tf01.setText(String.valueOf(bac1));
			tf02.setText(String.valueOf(bac2));
			tf03.setText(String.valueOf(bac3));
			tf04.setText(String.valueOf(bac4));
			tf05.setText(String.valueOf(bac5));
			tf06.setText(String.valueOf(bac6));

		    t= (double)sb1.getValue();
		    tf08.setText(String.valueOf(t));

	    	agua=Double.valueOf(tf01.getText()).doubleValue();
			proteina=Double.valueOf(tf02.getText()).doubleValue();
			lipideo=Double.valueOf(tf03.getText()).doubleValue();
			carboidrato=Double.valueOf(tf04.getText()).doubleValue();
			cinzas=Double.valueOf(tf05.getText()).doubleValue();
			fibras=Double.valueOf(tf06.getText()).doubleValue();

			d=Densidade(proteina,lipideo,carboidrato,fibras,cinzas,agua,t);
			cp=Caloresp(proteina,lipideo,carboidrato,fibras,cinzas,agua,t);
			k=Condutividade(proteina,lipideo,carboidrato,fibras,cinzas,agua,t);
			cal=Caloria(proteina,lipideo,carboidrato);

			tf11.setText(String.valueOf(nf3.format(cp)));
			tf12.setText(String.valueOf(nf3.format(k)));
			tf13.setText(String.valueOf(nf1.format(d)));
            tf14.setText(String.valueOf(nf1.format(cal)));
	}
	if(e.getItem() == "Bisteca s/ osso")
	{
		    tf01.setText(String.valueOf(bst1));
			tf02.setText(String.valueOf(bst2));
			tf03.setText(String.valueOf(bst3));
			tf04.setText(String.valueOf(bst4));
			tf05.setText(String.valueOf(bst5));
			tf06.setText(String.valueOf(bst6));

		    t= (double)sb1.getValue();
		    tf08.setText(String.valueOf(t));

    	    agua=Double.valueOf(tf01.getText()).doubleValue();
		    proteina=Double.valueOf(tf02.getText()).doubleValue();
		    lipideo=Double.valueOf(tf03.getText()).doubleValue();
		    carboidrato=Double.valueOf(tf04.getText()).doubleValue();
		    cinzas=Double.valueOf(tf05.getText()).doubleValue();
		    fibras=Double.valueOf(tf06.getText()).doubleValue();

		    d=Densidade(proteina,lipideo,carboidrato,fibras,cinzas,agua,t);
		    cp=Caloresp(proteina,lipideo,carboidrato,fibras,cinzas,agua,t);
		    k=Condutividade(proteina,lipideo,carboidrato,fibras,cinzas,agua,t);
		    cal=Caloria(proteina,lipideo,carboidrato);

		    tf11.setText(String.valueOf(nf3.format(cp)));
		    tf12.setText(String.valueOf(nf3.format(k)));
		    tf13.setText(String.valueOf(nf1.format(d)));
            tf14.setText(String.valueOf(nf1.format(cal)));
	}
	if(e.getItem() == "Lombo")
	{
			tf01.setText(String.valueOf(lmb1));
			tf02.setText(String.valueOf(lmb2));
			tf03.setText(String.valueOf(lmb3));
			tf04.setText(String.valueOf(lmb4));
			tf05.setText(String.valueOf(lmb5));
			tf06.setText(String.valueOf(lmb6));

		    t= (double)sb1.getValue();
		    tf08.setText(String.valueOf(t));

		    agua=Double.valueOf(tf01.getText()).doubleValue();
			proteina=Double.valueOf(tf02.getText()).doubleValue();
			lipideo=Double.valueOf(tf03.getText()).doubleValue();
			carboidrato=Double.valueOf(tf04.getText()).doubleValue();
			cinzas=Double.valueOf(tf05.getText()).doubleValue();
			fibras=Double.valueOf(tf06.getText()).doubleValue();

			d=Densidade(proteina,lipideo,carboidrato,fibras,cinzas,agua,t);
			cp=Caloresp(proteina,lipideo,carboidrato,fibras,cinzas,agua,t);
			k=Condutividade(proteina,lipideo,carboidrato,fibras,cinzas,agua,t);
			cal=Caloria(proteina,lipideo,carboidrato);

			tf11.setText(String.valueOf(nf3.format(cp)));
			tf12.setText(String.valueOf(nf3.format(k)));
			tf13.setText(String.valueOf(nf1.format(d)));
			tf14.setText(String.valueOf(nf1.format(cal)));
    }
  }
}//O programa acabou! (ufa!!!)