import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class odaP1 extends JApplet implements ActionListener
{private static final long serialVersionUID =621457L;
public double Vh;
public double Qh;
public JButton jb[];
public JTextArea jta;
double Ad[]=new double [6];
double Ap[]=new double [6];
double Ak[]=new double [6];
double UAd[]=new double [6];
double UAp[]=new double [6];
double UAk[]=new double [6];
double UA[]=new double [6];
double dT[]=new double[6];
double Qi[]=new double[6];
double Q,Qt,UAt;
secP duvar[];
secP1 pencere[];
secP2 kapi[];
JPanel p0,p1,p2,p3,p4;
JLabel l1,l2,l3;
String isim[];
String tip[];
public double tdis,tic,tyan; //iç dış ve yan sıcaklık;
public int kat;
public int isletmeturu;
public double Tdis,Tic,Tyan;
public String isletmeler[]={"konutlar","yönetim binaları","iş ve hizmet binaları","otel motel ve lokantalar","öğretim binaları","tiyatrolar ve konser salonları","kışlalar","ceza ve tutuk evleri","müze ve galeriler","hava limanları","hastaneler","yüzme havuzları","imalat ve atolye mahalleri"};
public double isletmesicakligi[]={19,19,19,20,20,20,20,20,20,20,22,26,16};
JComboBox<String> isletme;
JLabel lt0,lt1,lt2,lt3,lt4,lt4A,lt4B,lt4C,lt4D,lt4E,lt4F,lt4G,lt5,lt6,lt7,lt8,lt9,lt10;
JTextField icT,disT,katT,yanT,enT,boyT,yukseklikT;
public havalandirma_kaybi hk;
public double en,boy,yukseklik;
String yoni[]={"Kuzey","Güney","Doğu","Batı","Güneydoğu","Güneybatı","Kuzeydoğu","Kuzeybatı"};
String yonj[]={" "};
String yo[]={"K","G","D","B","GD","GB","KD","KB"};
JComboBox<String> list_yon;
Color renk1;
public String yon;
//doğal hava sirkulasyonlu model
public String[] yon(String yon1)
{ String s1[]={"Kuzey","Doğu","Güney","Batı"};
if(yon1.equals("Kuzey")) {String s2[]={"Kuzey","Doğu","Güney","Batı"};s1=s2;}
else if(yon1.equals("Dogu")) {String s2[]={"Doğu","Güney","Batı","Kuzey"};s1=s2;}
else if(yon1.equals("Güney")) {String s2[]={"Güney","Batı","Kuzey","Doğu"};s1=s2;}
else if(yon1.equals("Batı")) {String s2[]={"Batı","Kuzey","Doğu","Güney"};s1=s2;}
else if(yon1.equals("Kuzeydoğu")) {String s2[]={"Kuzeydoğu","Güneydoğu","Kuzeydoğu","Güneybatı","Kuzeybatı"};s1=s2;}
else if(yon1.equals("Güneydoğu")) {String s2[]={"Güneydoğu","Kuzeydoğu","Güneybatı","Kuzeybatı","Güneydoğu"};s1=s2;}
else if(yon1.equals("Güneybatı")) {String s2[]={"Güneybatı","Kuzeybatı","Kuzeydoğu","Güneydoğu"};s1=s2;}
else if(yon1.equals("Kuzeybatı")) {String s2[]={"Kuzeybatı","Kuzeydoğu","Güneydoğu","Güneybatı"};s1=s2;}
return s1;
}

public void init()
{jb=new JButton[31];
//Girdi penceresi1: sıcaklık profili
list_yon=new JComboBox<String>(yoni);
lt0=new JLabel("işletme türü");
lt1=new JLabel("iç sıcaklık");
lt2=new JLabel("dış sıcaklık");
lt3=new JLabel("yan mekan sıcaklığı");
lt4=new JLabel(" "+'\u00B0'+"C");
lt4A=new JLabel(" "+'\u00B0'+"C");
lt4B=new JLabel(" "+'\u00B0'+"C");
lt4C=new JLabel(" ");
lt4D=new JLabel(" ");
lt4E=new JLabel(" ");
lt4F=new JLabel(" ");
lt4G=new JLabel(" ");
lt5=new JLabel(" ");
lt6=new JLabel("kat");
lt7=new JLabel("en(duvar 2,4)");
lt8=new JLabel("boy(duvar 1,3)");
lt9=new JLabel("yükseklik(duvar 1,2,3,4)");
lt10=new JLabel("yön(duvar 1)");
katT=new JTextField(""+1);
enT=new JTextField(""+4);
boyT=new JTextField(""+4);
yukseklikT=new JTextField(""+3);
kat=1;
en=4;
boy=5;
yukseklik=3;
Vh=0.8*en*boy*yukseklik;
Qh=0.33*Vh;
isletme=new JComboBox<String>(isletmeler);
Tic=isletmesicakligi[0];
icT=new JTextField(""+Tic);
Tdis=0;
disT=new JTextField(""+Tdis);
Tyan=Tic-10;
yanT=new JTextField(""+Tyan);
JPanel p0=new JPanel();
JPanel p4=new JPanel();
p0.setLayout(new GridLayout(9,3));
p0.add(lt0);
p0.add(isletme);
p0.add(lt5);
isletme.addActionListener(this);
//====
p0.add(lt6);
p0.add(katT);
p0.add(lt4C);
katT.addActionListener(this);
//====
p0.add(lt10);
p0.add(list_yon);
p0.add(lt4G);
list_yon.addActionListener(this);
int yonin=list_yon.getSelectedIndex(); 
yon=yo[yonin];
//====
p0.add(lt1);
p0.add(icT);
p0.add(lt4);
icT.addActionListener(this);
//====
p0.add(lt2);
p0.add(disT);
p0.add(lt4A);
disT.addActionListener(this);
//====
p0.add(lt3);
p0.add(yanT);
p0.add(lt4B);
yanT.addActionListener(this);
//=====
p0.add(lt7);
p0.add(enT);
p0.add(lt4D);
enT.addActionListener(this);
//=====
p0.add(lt8);
p0.add(boyT);
p0.add(lt4E);
boyT.addActionListener(this);
//======
p0.add(lt9);
p0.add(yukseklikT);
p0.add(lt4F);
yukseklikT.addActionListener(this);
//=====
//Girdi penceresi 2 : duvar yapıları
String tip1[]={"duvar0","duvar1","duvar2_tavan","duvar3_tavan","duvar4_döşeme","duvar5","duvar6","duvar7","duvar8","duvar9","duvar10","duvar11"};
tip=tip1;
String isim2[]={"duvar1","duvar2","duvar3","duvar4","Tavan","Döşeme","Pencere1_1","Pencere1_2","Pencere1_3","Pencere1_4","Pencere1_5","Pencere1_6","Pencere2_1","Pencere2_2","Pencere2_3","Pencere2_4","Pencere2_5","Pencere2_6","Pencere3_1","Pencere3_2","Pencere3_3","Pencere3_4","Pencere3_5","Pencere3_6","Kapı1","Kapı2","Kapı3","Kapı4","Kapı5","Kapı6"};
isim=isim2;
p1=new JPanel();
p1.setLayout(new GridLayout(5,6));
p2=new JPanel();
p2.setLayout(new BorderLayout());
p3=new JPanel();
jta =new JTextArea("              ");
for(int i=0;i<isim.length;i++)
{ jb[i]=new JButton(isim[i]);
  jb[i].addActionListener(this);
}
for(int i=0;i<isim.length;i++)
{ p1.add(jb[i]);}
jb[30]=new JButton("hesapla");
jb[30].addActionListener(this);
jb[30].setBackground(Color.lightGray);
p2.add(p1,BorderLayout.NORTH);
p2.add(jb[30],BorderLayout.CENTER); 
String tipa[]={"duvar 0\n0.02 m iç sıva\n0.19 m yatay delikli tuğla\n0.04 m ekstrde polistren levha\n0.03 m dış sıva",
"duvar 1\n0.02 m iç sıva - 0.2 m donatılı beton\n0.04 m ekstrude polistren levha\n0.03 m dış sıva",
"duvar 2 Tavan (duvar 2)\n0.1 m camyünü\n0.12 m donatılı beton\n0.02 m iç sıva",
"duvar 3 Tavan (üzeri açık)\n0.002 m alçı sıva\n0.008 m alçı karton plaka\n0.12 m betonarme\n0.06 m ısı yalıtım malzemesi\n0.02 m şap\n0.01 m mozaik(mermer)",
"duvar 4 Taban \n0.03 m iç sıva\n0.03 m ekstrude polistren ısı yalıtım levhası\n0.12 m donatılı beton\n0.02 m dış sıva",
"duvar 5 \n0.02 m iç sıva\n0.19 m yatay delikli tuğla\n0.05 m hava tabakası (dikey)\n0.03 m dış sıva\n",
"duvar 6 \n0.02 m iç sıva\n0.19 m yatay delikli tuğla\n0.03 m dış sıva",
"duvar 7 \n0.02 m iç sıva\n0.19 m yatay delikli tuğla\n0.04 m ısı yalıtım malzemesi\n0.008 m dış sıva",
"duvar 8 \n0.02 m iç sıva\n0.25 m betonarme\n0.04 m ısı yalıtım malzemesi\n0.008 m dış sıva",
"duvar 9 \n0.02 m iç sıva\n0.15 m yatay delikli tuğla\n0.03 m dış sıva",
"duvar 10 \n0.02 m iç sıva\n0.10 m yatay delikli tuğla\n0.03 m dış sıva",
"duvar 11 \n0.02 m iç sıva\n0.05 m donatılı beton\n0.03 m dış sıva"};
duvar=new secP[6];
pencere=new secP1[18];
kapi=new secP2[6];
String isim1[]={"duvar1","duvar2","duvar3","duvar4","tavan","döşeme"};
int kat=0;
String eby[][]={{"boy","yükseklik","tip","yön","pozisyon"},
                {"en","yükseklik","tip","yön","pozisyon"},
                {"boy","yükseklik","tip","yön","pozisyon"},
                {"en","yükseklik","tip","yön","pozisyon"},
                {"en","boy","tip"," ","pozisyon"},
                {"en","boy","tip"," ","pozisyon"}};
duvar[0]=new secP(isim1[0],tip,tipa,kat,eby[0],boy,yukseklik);
duvar[0].pozisyon=duvar[0].ic[0];
duvar[0].list_tip.setSelectedIndex(0);
duvar[1]=new secP(isim1[1],tip,tipa,kat,eby[1],en,yukseklik);
duvar[1].pozisyon=duvar[1].ic[1];
duvar[1].list_tip.setSelectedIndex(1);
duvar[2]=new secP(isim1[2],tip,tipa,kat,eby[2],boy,yukseklik);
duvar[2].pozisyon=duvar[2].ic[1];
duvar[2].list_tip.setSelectedIndex(1);
duvar[3]=new secP(isim1[3],tip,tipa,kat,eby[3],en,yukseklik);
duvar[3].pozisyon=duvar[3].ic[1];
duvar[3].list_tip.setSelectedIndex(1);
duvar[4]=new secP(isim1[4],tip,tipa,kat,eby[4],en,boy);
duvar[4].pozisyon=duvar[3].ic[5];
duvar[4].list_tip.setSelectedIndex(3);
duvar[5]=new secP(isim1[5],tip,tipa,kat,eby[5],en,boy);
duvar[5].pozisyon=duvar[3].ic[4];
duvar[5].list_tip.setSelectedIndex(4);
for(int i=0;i<6;i++)
{duvar[i].list_ic.setSelectedItem(duvar[i].pozisyon);
 //jb[i].setBackground(Color.green);
}
String yoni[]=yon(yon);
for(int i=0;i<4;i++)
{duvar[i].list_yon.setSelectedItem(yoni[i]);duvar[i].yon=yoni[i];}

//bir pencere tanımla
pencere[0]=new secP1(isim[6],2.0,2.0);
pencere[0].secim=true;
//jb[6].setBackground(Color.green);
for(int i=7;i<24;i++)
{pencere[i-6]=new secP1(isim[i],0.0,0.0);}
renk1=jb[20].getBackground();
//bir kapı tanımla

for(int i=24;i<29;i++)
{kapi[i-24]=new secP2(isim[i],0.0,0.0);}
kapi[5]=new secP2(isim[29],1.5,2.0);
kapi[5].secim=true;
//jb[29].setBackground(Color.green);

setLayout(new BorderLayout());
p4.setLayout(new BorderLayout());
p4.add(p0,BorderLayout.CENTER);
p4.add(p2,BorderLayout.SOUTH);
add(p4,BorderLayout.NORTH);
jta.setText(toString());
add(new JScrollPane(jta),BorderLayout.CENTER);
}

public void hesapla()
{   Q=0;
    String s="";
    UAt=0;
   for(int i=0;i<6;i++)
   { 
     Ap[i]=pencere[i].A+pencere[i+6].A+pencere[i+12].A;
     Ak[i]=kapi[i].A;
     Ad[i]=duvar[i].A-Ap[i]-Ak[i];
     UAd[i]=Ad[i]*duvar[i].U;
     UAp[i]=pencere[i].UA+pencere[i+6].UA+pencere[i+12].UA;
     UAk[i]=kapi[i].UA;
     UA[i]= UAd[i]+UAp[i]+UAk[i];
     if(duvar[i].pozisyon.equals("DD")||duvar[i].pozisyon.equals("DTA")) dT[i]=Tic-Tdis;
     else dT[i]=Tic-Tyan;
     Qi[i]=UA[i]*dT[i];
     Q+=Qi[i];
     UAt+=UA[i];
     /*
     if(Ap[i]==0 && Ak[i]==0)
     {s+=duvar[i].yon+" "+duvar[i].pozisyon+"\n A duvar = "+Ad[i];
      s+="dT="+dT[i]+"K UA duvar = "+UAd[i]+"\n";
     }
     else if(Ap[i]==0) 
     {s+=duvar[i].yon+" "+duvar[i].pozisyon+"\n A duvar = "+"A kapi="+Ak[i];
      s+="dT="+dT[i]+"K UA duvar = "+UAd[i]+"UA kapi="+UAk[i]+"UA toplam = "+UA[i]+"\n";
     }
     else if(Ak[i]==0) 
     {s+=duvar[i].yon+" "+duvar[i].pozisyon+"\n A duvar = "+Ad[i]+"A pencere="+Ap[i];
     s+="dT="+dT[i]+"K UA duvar = "+UAd[i]+"UA pencere="+UAp[i]+"UA toplam = "+UA[i]+"\n";
     }
     else
     {s+=duvar[i].yon+" "+duvar[i].pozisyon+"\n A duvar = "+Ad[i]+"A pencere="+Ap[i]+"A kapi="+Ak[i];
      s+="dT="+dT[i]+"K UA duvar = "+UAd[i]+"UA pencere="+UAp[i]+"UA kapi="+UAk[i]+"UA toplam = "+UA[i]+"\n";
     }
     */     
     s = "Qi="+Qi[i]+"\n";
   }
   
   Qt=Q+Qh;
   s+="UAt           ="+UAt+" W/K \n";
   s+="Qhavalandırma = "+Qh+" W \n";
   s+="Q = "+Q+" W\n";
   s+="Qtoplam = "+Qt+" W\n";
   jta.setText(s);
}

 public void actionPerformed(ActionEvent e) 
 {   if(e.getSource()==jb[30] )
         {hesapla();}
     //sıcaklık profili ekle
     else if(e.getSource()==list_yon )
     {yon=(String)list_yon.getSelectedItem();
      String yoni[]=yon(yon);
      for(int i=0;i<4;i++)
      {duvar[i].list_yon.setSelectedItem(yoni[i]);duvar[i].yon=yoni[i];}
     }
     else if(e.getSource()==isletme )
         {
         int index=isletme.getSelectedIndex();
         Tic=isletmesicakligi[index];
         icT.setText(""+Tic);
	     }
	 else if(e.getSource()==katT )
         {
         kat=Integer.parseInt(katT.getText());
	     }
	 else if(e.getSource()==enT ||e.getSource()==boyT||e.getSource()==yukseklikT )
         {
         en=Double.parseDouble(enT.getText());	     
         boy=Double.parseDouble(boyT.getText());
         yukseklik=Double.parseDouble(yukseklikT.getText());
         enT.setText(""+en);
         boyT.setText(""+boy);
         yukseklikT.setText(""+yukseklik);
         duvar[0].setEnBoy(boy,yukseklik);
         duvar[1].setEnBoy(en,yukseklik);
         duvar[2].setEnBoy(boy,yukseklik);
	     duvar[3].setEnBoy(en,yukseklik);
	     duvar[4].setEnBoy(en,boy);
	     duvar[5].setEnBoy(en,boy);
	     for(int i=0;i<duvar.length;i++)
	     {duvar[i].t_en.setEditable(true);duvar[i].t_boy.setEditable(true);duvar[i].set_T();duvar[i].t_en.setEditable(false);duvar[i].t_boy.setEditable(false);}
         }          
	 else if(e.getSource()==icT )
         {Tic=Double.parseDouble(icT.getText());
          icT.setText(""+Tic);}
	 else if(e.getSource()==disT )
         {Tdis=Double.parseDouble(disT.getText());
          disT.setText(""+Tdis);}
     else if(e.getSource()==yanT )
         {Tyan=Double.parseDouble(yanT.getText());
          yanT.setText(""+Tyan);
         }     
	 else{
		 //duvarları ekle
		 duvar[0].setEnBoy(boy,yukseklik);
		 duvar[1].setEnBoy(en,yukseklik);
         duvar[2].setEnBoy(boy,yukseklik);
	     duvar[3].setEnBoy(en,yukseklik);
	     duvar[4].setEnBoy(en,boy);
	     duvar[5].setEnBoy(en,boy);
	     for(int i=0;i<duvar.length;i++)
	     {duvar[i].t_en.setEditable(true);duvar[i].t_boy.setEditable(true);duvar[i].set_T();duvar[i].t_en.setEditable(false);duvar[i].t_boy.setEditable(false);}
         for(int i=0;i<6;i++)
         {if(e.getSource()==jb[i] )
          {          
		 //secGrafigi.plot(isim[i],duvar[i]);
		 jb[i].setBackground(renk1);
		 //duvar[i].secim=false;
		 demo1.plot(isim[i],duvar[i]);	     
	     validate();
	     //if(duvar[i].secim)  {jb[i].setBackground(Color.green);}	     
	     jta.setText(toString());
	     Vh=0.8*en*boy*yukseklik;
	     Qh=0.33*Vh;	        
         repaint();
	        break;
           }
         }      
         //pencereleri ekle
         for(int i=6;i<24;i++)
         {if(e.getSource()==jb[i] )
	       {
		    //pencere[i-6].secim=false;
	        jb[i].setBackground(renk1);
	        demo2.plot(isim[i],pencere[i-6]);
	        validate();
   	        //if(pencere[i-6].secim)  
	        //{jb[i].setBackground(Color.green);}
	        jta.setText(toString());
            repaint();
	        break;
           }
         }
         //kapıları ekle
         for(int i=24;i<30;i++)
         {if(e.getSource()==jb[i] )
	       {jb[i].setBackground(renk1);
	       //kapi[i-24].secim=false;
		   demo3.plot(isim[i],kapi[i-24]);
		       //sec2Grafigi.plot(isim[i],kapi[i-24]);	        
	        //if(kapi[i-24].secim)  
	        //{jb[i].setBackground(Color.green);}
	        jta.setText(toString());
	        validate();
            repaint();
	        break;
           }
         }
    }//end else   
 } 
   public static void plot()
   {           
        JFrame f = new JFrame("ECA ELBA Oda ısı kaybı hesabı");
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {System.exit(0);}
        });
        JApplet applet = new odaP1();
        f.getContentPane().add("Center", applet);
        applet.init();
        f.pack();
        f.setSize(new Dimension(800,700));
        f.setVisible(true);
    }  
        
   public String toString()
   {
   int n;
   String s="";
   for(n=0;n<6;n++)
   {if(duvar[n].secim==true) s+=duvar[n].toString();}
   for(n=6;n<24;n++)
   {if(pencere[n-6].secim==true) s+=pencere[n-6].toString();}
   return s;
   }
public static void main(String arg[])
{plot();}
}