import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


public class two_stage_GUI extends JFrame
{
     double[] XP;
     double[] XH;
     double[] XS;
     double[] XN;
     double[] XT;
     refrigerant refr1;
     
     String refrigerants[]={"R22","R12","R123","R124","R134a","R32","R407C","R404A","R507A","R410A","R23","R728","R1150","R50","R702","R1270","R740","R732","R717","R718","R744","R704","R152a","R170","R600","R600a","R290","R125","R508B","R720","R143a","R502","R113","R142b","R114","R402A","R402B","R401A","R401B"};
     JComboBox refr;
     Color bg;
     public JButton plotla;
     public JTextField refrigerant;
     public JTextField Pcond;
     public JTextField Pflash;
     public JTextField Pevap;
     
     public JTextField evapvaloutT,evapvaloutH,evapvaloutS;    
     public JTextField kompvaloutT,kompvaloutH,kompvaloutS;
     public JTextField flashdoy1valoutT,flashdoy1valoutH,flashdoy1valoutS;
     public JTextField flashdoy0valT,flashdoy0valH,flashdoy0valS;;
     public JTextField evapinvalT,evapinvalH,evapinvalS; 
     public JTextField condoutvalT,condoutvalH,condoutvalS;
     public JTextField flashinvalT,flashinvalH,flashinvalS;
     public JTextField kompin2valT,kompin2valH,kompin2valS;
     public JTextField condinvalT,condinvalH,condinvalS;
     public JTextField lowPkompval,highPkompval;
     public JTextField Qevapinval,COPrefval,Qcondinval,COPhpfval;
     
     JPanel girdipaneli;
	 JPanel çıktıpaneli;
     JPanel çıktıpaneli2;
	 JPanel çıktıpaneli3;
	 
	 JLabel refname;
	 JLabel flashval;
	 JLabel evapval;
	 JLabel condval;
	 
	 two_stage_refrigeration_with_flash_chamber tsrwfc;
     
	 JLabel evaplabeloutT,evaplabeloutH,evaplabeloutS;
	 JLabel komplabeloutT,komplabeloutH,komplabeloutS;
     JLabel flashdoy1labeloutT,flashdoy1labeloutH,flashdoy1labeloutS;
     JLabel flashdoy0labelT,flashdoy0labelH,flashdoy0labelS;
     JLabel evapinlabelT,evapinlabelH,evapinlabelS;
     JLabel condoutlabelT,condoutlabelH,condoutlabelS;
     JLabel flashinlabelT,flashinlabelH,flashinlabelS;  
     JLabel kompin2labelT,kompin2labelH,kompin2labelS; 
     JLabel condinlabelT,condinlabelH,condinlabelS;    
     JLabel lowPkomp,highPkomp;
     JLabel Qevapinlabel,Qcondinlabel,COPhplabel,COPreflabel;
    
        
        public two_stage_GUI()
        {
	    setTitle("Çift kademeli soğutma çevrimi ");   
	    setSize(WIDTH,HEIGHT);
	    setDefaultCloseOperation(EXIT_ON_CLOSE);
	    createContents();
	    setVisible(true);
	     pack();    
	    }

        public void createContents()
        {
	    // frame layout düzenlemesi
	    setLayout(new BorderLayout());    
	     
	    // girdi paneli düzenlemesi   
	    girdipaneli=new JPanel(new GridLayout(4,2));
	 
	    
	    refr=new JComboBox(refrigerants);
	    
	    Pevap=new JTextField("100");
	    Pflash=new JTextField("230",5);
	    Pcond=new JTextField("800",5);    
	    refname=new JLabel("Soğutucu akışkan ismi :",SwingConstants.RIGHT);
	    evapval=new JLabel("Buharlaştırıcı giriş basıncı(kPa)",SwingConstants.RIGHT);  
	    flashval=new JLabel("Genleşme odası giriş basıncı (kPa)",SwingConstants.RIGHT); 
	    condval=new JLabel("Yoğuşturucu giriş basıncı(kPa)",SwingConstants.RIGHT);        
	    girdipaneli.add(refname);    
	    girdipaneli.add(refr);      
	    girdipaneli.add(evapval);    
	    girdipaneli.add(Pevap);
	    girdipaneli.add(flashval);    
	    girdipaneli.add(Pflash);
	    girdipaneli.add(condval);    
	    girdipaneli.add(Pcond);
	   
	    
	     
	    // çıktı paneli oluşturulması
	    çıktıpaneli=new JPanel(new GridLayout(9,6,5,5));
	    evaplabeloutT=new JLabel("Evap.çık sıc (C)");
	    evaplabeloutH=new JLabel("Evap.çık entalpi(kj/kg)");
	    evaplabeloutS=new JLabel("Evap.çık entropi(kj/kgK)");
	    evapvaloutT=new JTextField(6);
	    evapvaloutH=new JTextField(6);
	    evapvaloutS=new JTextField(6);
	    
	    komplabeloutT=new JLabel("Kompresör çıkış sıcaklığı (C)");
	    komplabeloutH=new JLabel("Kompresör çıkış entalpisi (kj/kg)");
	    komplabeloutS=new JLabel("Kompresör çıkış entropisi (kj/kgK)");
	    kompvaloutT=new JTextField(6);
	    kompvaloutH=new JTextField(6);
	    kompvaloutS=new JTextField(6);
	    
	    flashdoy1labeloutT=new JLabel("Flash doyma noktası sıcaklığı (x=1) (C)");
	    flashdoy1labeloutH=new JLabel("Flash doyma noktası entalpisi (x=1) (kj/kg)");
	    flashdoy1labeloutS=new JLabel("Flash doyma noktası entropisi (x=1) (kj/kgK)");
	    flashdoy1valoutT=new JTextField(6);
	    flashdoy1valoutH=new JTextField(6);
	    flashdoy1valoutS=new JTextField(6);
	    
	    flashdoy0labelT=new JLabel("Flash doyma noktası sıcaklığı (x=0) (C)");
	    flashdoy0labelH=new JLabel("Flash doyma noktası entalpisi (x=0) (kj/kg)");
	    flashdoy0labelS=new JLabel("Flash doyma noktası entropisi (x=0) (kj/kgK)");
	    flashdoy0valT=new JTextField(6);
	    flashdoy0valH=new JTextField(6);
	    flashdoy0valS=new JTextField(6);
	        
	    evapinlabelT=new JLabel("Buharlaştırıcı giriş sıcaklığı (C)");
	    evapinlabelH=new JLabel("Buharlaştırıcı giriş entalpisi (kj/kg)");
	    evapinlabelS=new JLabel("Buharlaştırıcı giriş entropisi (kj/kgK)");
	    evapinvalT=new JTextField(6);
	    evapinvalH=new JTextField(6);
	    evapinvalS=new JTextField(6);
	    
	    condoutlabelT=new JLabel("Yoğuşturucu çıkış sıcaklığı (C)");
	    condoutlabelH=new JLabel("Yoğuşturucu çıkış entalpisi (kj/kg)");
	    condoutlabelS=new JLabel("Yoğuşturucu çıkış entropisi (kj/kgK)");
	    condoutvalT=new JTextField(6);
	    condoutvalH=new JTextField(6);
	    condoutvalS=new JTextField(6);
	   
	    flashinlabelT=new JLabel("Genleşme odası giriş sıcaklığı (C)");
	    flashinlabelH=new JLabel("Genleşme odası giriş entalpisi (kj/kg)");
	    flashinlabelS=new JLabel("Genleşme odası giriş  entropisi (kj/kgK)");
	    flashinvalT=new JTextField(6);
	    flashinvalH=new JTextField(6);
	    flashinvalS=new JTextField(6);
	    
	    kompin2labelT=new JLabel("2.Kompresör giriş sıcaklığı (C)");
	    kompin2labelH=new JLabel("2.Kompresör giriş entalpisi (kj/kg)");
	    kompin2labelS=new JLabel("2.Kompresör giriş  entropisi (kj/kgK)");
	    kompin2valT=new JTextField(6);
	    kompin2valH=new JTextField(6);
	    kompin2valS=new JTextField(6);
	    
	    condinlabelT=new JLabel("Yoğuşturucu giriş sıcaklığı (C)");
	    condinlabelH=new JLabel("Yoğuşturucu giriş entalpisi (kj/kg)");
	    condinlabelS=new JLabel("Yoğuşturucu giriş entropisi (kj/kgK)");
	    condinvalT=new JTextField(6);
	    condinvalH=new JTextField(6);
	    condinvalS=new JTextField(6);
	    
	    çıktıpaneli.add(evaplabeloutT);
	    çıktıpaneli.add(evapvaloutT);
	    çıktıpaneli.add(evaplabeloutH);
	    çıktıpaneli.add(evapvaloutH);
	    çıktıpaneli.add(evaplabeloutS);
	    çıktıpaneli.add(evapvaloutS);
	    
	    çıktıpaneli.add(komplabeloutT);
	    çıktıpaneli.add(kompvaloutT);
	    çıktıpaneli.add(komplabeloutH);
	    çıktıpaneli.add(kompvaloutH);
	    çıktıpaneli.add(komplabeloutS);
	    çıktıpaneli.add(kompvaloutS);
	    
	    çıktıpaneli.add(flashdoy1labeloutT);
	    çıktıpaneli.add(flashdoy1valoutT);
	    çıktıpaneli.add(flashdoy1labeloutH);
	    çıktıpaneli.add(flashdoy1valoutH);
	    çıktıpaneli.add(flashdoy1labeloutS);
	    çıktıpaneli.add(flashdoy1valoutS);
	    
	    çıktıpaneli.add(flashdoy0labelT);
	    çıktıpaneli.add(flashdoy0valT);
	    çıktıpaneli.add(flashdoy0labelH);
	    çıktıpaneli.add(flashdoy0valH);
	    çıktıpaneli.add(flashdoy0labelS);
	    çıktıpaneli.add(flashdoy0valS);
	    
	    çıktıpaneli.add(evapinlabelT);
	    çıktıpaneli.add(evapinvalT);
	    çıktıpaneli.add(evapinlabelH);
	    çıktıpaneli.add(evapinvalH);
	    çıktıpaneli.add(evapinlabelS);
	    çıktıpaneli.add(evapinvalS);
	    
	    çıktıpaneli.add(condoutlabelT);
	    çıktıpaneli.add(condoutvalT);
	    çıktıpaneli.add(condoutlabelH);
	    çıktıpaneli.add(condoutvalH);
	    çıktıpaneli.add(condoutlabelS);
	    çıktıpaneli.add(condoutvalS);
	    
	    çıktıpaneli.add(flashinlabelT);
	    çıktıpaneli.add(flashinvalT);
	    çıktıpaneli.add(flashinlabelH);
	    çıktıpaneli.add(flashinvalH);
	    çıktıpaneli.add(flashinlabelS);
	    çıktıpaneli.add(flashinvalS);
	    
	    çıktıpaneli.add(kompin2labelT);
	    çıktıpaneli.add(kompin2valT);
	    çıktıpaneli.add(kompin2labelH);
	    çıktıpaneli.add(kompin2valH);
	    çıktıpaneli.add(kompin2labelS);
	    çıktıpaneli.add(kompin2valS);
	    
	    çıktıpaneli.add(condinlabelT);
	    çıktıpaneli.add(condinvalT);
	    çıktıpaneli.add(condinlabelH);
	    çıktıpaneli.add(condinvalH);
	    çıktıpaneli.add(condinlabelS);
	    çıktıpaneli.add(condinvalS);
	    
	    
	    //////////////////////////////////////////////////// 
	    çıktıpaneli2=new JPanel(new GridLayout(6,2,3,3));
	    
	    lowPkomp=new JLabel("Düşük basınç kompresörü (kj/kg)",SwingConstants.RIGHT);
	    lowPkompval=new JTextField(SwingConstants.CENTER);
	    highPkomp=new JLabel("Yüksek basınç kompresörü (kj/kg)",SwingConstants.RIGHT);
	    highPkompval=new JTextField(6);
	    Qevapinlabel=new JLabel("Buharlaştırıcıya giren soğutma yükü (kj/kg)",SwingConstants.RIGHT);
	    Qevapinval=new JTextField(6);
	    COPreflabel=new JLabel("COP soğutma",SwingConstants.RIGHT);
	    COPrefval=new JTextField(6);
	    Qcondinlabel=new JLabel("Kondenserden çıkan ısıtma yükü (kj/kg)",SwingConstants.RIGHT);
	    Qcondinval=new JTextField(6);
	    COPhplabel=new JLabel("COP ısı pompası",SwingConstants.RIGHT);
	    COPhpfval=new JTextField(6);
	    çıktıpaneli2.add(lowPkomp); 
	    çıktıpaneli2.add(lowPkompval);
	    çıktıpaneli2.add(highPkomp);
	    çıktıpaneli2.add(highPkompval);
	    çıktıpaneli2.add(Qevapinlabel);
	    çıktıpaneli2.add(Qevapinval);
	    çıktıpaneli2.add(COPreflabel);
	    çıktıpaneli2.add(COPrefval);
	    çıktıpaneli2.add(Qcondinlabel);
	    çıktıpaneli2.add(Qcondinval);
	    çıktıpaneli2.add(COPhplabel);
	    çıktıpaneli2.add(COPhpfval);
	    
	    // çıktı paneli 3
	     çıktıpaneli3=new JPanel();
	     plotla=new JButton("P_H Diagramı");
	     plotla.setHorizontalAlignment(SwingConstants.LEFT);
       // plotla.setHorizontalTextPosition(AbstractButton.CENTER);
	     çıktıpaneli3.add(plotla);
	    
	      Pevap.addActionListener(new Listener());
	      Pflash.addActionListener(new Listener());
	      Pcond.addActionListener(new Listener());
	      refr.addActionListener(new Listener());
	      plotla.addActionListener(new Listener());
	      
	    // girdi panelinin frame içine eklenmesi
	    add(girdipaneli,BorderLayout.SOUTH);
	    add(çıktıpaneli2,BorderLayout.WEST);
	    add(çıktıpaneli,BorderLayout.NORTH);
	    add(çıktıpaneli3,BorderLayout.EAST);
	     }
       
        public class Listener implements ActionListener
        {
	       
		    public void actionPerformed(ActionEvent e)
	        {
		        
		      Container c=getContentPane();
		      bg=c.getForeground();
		     String pevap,pflash,pcond;
		           pevap=Pevap.getText();    
		    double pevapval=Double.parseDouble(pevap);
		          
		           pcond=Pcond.getText();
		    double pcondval=Double.parseDouble(pcond);
		           pflash=Pflash.getText();
		    double pflasval=Double.parseDouble(pflash);
		      
		    String refri=(String)refr.getSelectedItem();
		           tsrwfc=new two_stage_refrigeration_with_flash_chamber(refri,pevapval,pcondval,pflasval); 
		    double [][] dpr=tsrwfc.cıktı();
		    
		    XH=new double[11];
		    XP=new double[11];
		    XS=new double[11];
		    XT=new double[11];
		    XN=new double[11];
		    
		    
		     for(int i=0;i<11;i++)
		    {
			    XH[i]=dpr[0][i];
		        XP[i]=dpr[1][i];
		        XS[i]=dpr[2][i];
		        XT[i]=dpr[3][i];
		        XN[i]=dpr[4][i];
		    }
		    
		    
		    
		    
		     evapvaloutT.setText(Double.toString(XT[0]));
		     evapvaloutH.setText(Double.toString(XH[3]));
		     evapvaloutS.setText(Double.toString(XS[3]));
		     
		     kompvaloutT.setText(Double.toString(XT[1]));
		     kompvaloutH.setText(Double.toString(XH[4]));
		     kompvaloutS.setText(Double.toString(XS[4]));
		    
		     flashdoy1valoutT.setText(Double.toString(XT[2]));
		     flashdoy1valoutH.setText(Double.toString(XH[9]));
		     flashdoy1valoutS.setText(Double.toString(XS[9]));
		     
		     flashdoy0valT.setText(Double.toString(XT[6]));
		     flashdoy0valH.setText(Double.toString(XH[8]));
		     flashdoy0valS.setText(Double.toString(XS[8]));
		     
		     evapinvalT.setText(Double.toString(XT[4]));
		     evapinvalH.setText(Double.toString(XH[2]));
		     evapinvalS.setText(Double.toString(XS[2]));
		     
		     condoutvalT.setText(Double.toString(XT[5]));
		     condoutvalH.setText(Double.toString(XH[7]));
		     condoutvalS.setText(Double.toString(XS[7]));
		     
		     flashinvalT.setText(Double.toString(XT[6]));
		     flashinvalH.setText(Double.toString(XH[8]));
		     flashinvalS.setText(Double.toString(XS[8]));
		     
		     kompin2valT.setText(Double.toString(XT[7]));
		     kompin2valT.setForeground(bg);
		     kompin2valH.setText(Double.toString(XH[5]));
		     kompin2valS.setText(Double.toString(XS[5]));
		     
		     condinvalT.setText(Double.toString(XT[8]));
		     condinvalH.setText(Double.toString(XH[6]));
		     condinvalS.setText(Double.toString(XS[6]));
		     
		     lowPkompval.setText(Double.toString(XN[0]));
		     highPkompval.setText(Double.toString(XN[1]));
		     Qevapinval.setText(Double.toString(XN[2]));
		     COPrefval.setText(Double.toString(XN[3]));
		     Qcondinval.setText(Double.toString(XN[4]));
		     COPhpfval.setText(Double.toString(XN[5]));
		     
		     if(e.getSource()==plotla)
		     {tsrwfc.plot();}
		     
		     }    
	    }

        public static void main(String args[])
        {
	       new two_stage_GUI();
	     
	    }




}
