//Furkan Bahadır ÇeLik

import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.swing.* ;
import java.io.*;
import java.util.*;
import java.text.*;
import javax.swing.table.*;
import javax.swing.JTable;
import javax.swing.filechooser.*;

class functions implements KeyListener, ActionListener  {
	
	
	private JButton calendar = new JButton("Calendar");
	private JFrame calendar_frame = new JFrame("Calendar");
	private JButton calendar_ok = new JButton("Ok");
	private String[] days = new String[31];
	private String[] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
	private String[] years = new String[100];
	private JComboBox box_year;
	private JComboBox box_month = new JComboBox(months);
	private JComboBox box_day;
	private JFileChooser file_chooser = new JFileChooser();
	int k=0;
	int pagenumb;
	int pagesearch;
	int t;
	int s;
	JButton [] buttons=new JButton[100];
	JButton [] buttons2=new JButton[100];
	JButton [] buttons3=new JButton[100];
	JButton [] ok=new JButton[10];
	JButton oks;
	JFrame frame,frame2,frame3,frame4,frameSearch;
	String[] data1 = {"File", "Open", "Save", "Close"};
	String[] data2 = {"Search","Search Record"};
	JButton x;
	JComboBox myList;
	JComboBox myList2;
	JButton y;
	JTextField f1,f2,f3,f4,f5,f6;
	DefaultTableModel model = new DefaultTableModel();
    JTable table ;
    Vector  details=new Vector();
    TableColumn column = null;
    JButton next=new JButton();
    JButton prew=new JButton();
    JTextArea text_area;
    JButton browse= new JButton();
    int flag=0;
    Vector indexlist=new Vector();
    Vector search=new Vector();
	BufferedWriter out;
	
    
    private void sort(){

    	int min;	
    	Vector details_sorted=new Vector();

    	while(details.size()!=0){
    		min=0;
    		for(int i=0;i<details.size();i++){
    			if(((String)((Vector) details.get(i)).get(0)).compareToIgnoreCase(((String)((Vector) details.get(min)).get(0)))<0){
    				min=i;		
    			}
    		}		
    		details_sorted.add(details.get(min));
    		details.remove(min);
    	}
    	    	
    	for(int i=0;i<details_sorted.size();i++){
    	
    		details.add(details_sorted.get(i));
    	}
    	
    }
    
    void UpdateTable(){
    	
    	int c=table.getRowCount();
		int len=details.size();
		int x=len-((pagenumb)*10);

			for(int p=(c-1);p>=0;p--){
				model.removeRow(p);
				frame.remove(buttons[p]);
				frame.remove(buttons2[p]);
				frame.remove(buttons3[p]);
				
				frame.setResizable(false);

				}			

			if(x>10){
			for(int p=0;p<10;p++){
				
		         Vector paste=new Vector();
		         paste.add((String) ((Vector) details.get(p+pagenumb*10)).get(0));
		         paste.add((String) ((Vector) details.get(p+pagenumb*10)).get(1));
		         paste.add((String) ((Vector) details.get(p+pagenumb*10)).get(2));
					
	            frame.add(buttons[p]);
				frame.add(buttons2[p]);
				frame.add(buttons3[p]);

    			model.addRow(paste);

					}
				}
			if(x<=10){
				for(int p=0;p<x;p++){
									
			         Vector paste=new Vector();
			         paste.add((String) ((Vector) details.get(p+pagenumb*10)).get(0));
			         paste.add((String) ((Vector) details.get(p+pagenumb*10)).get(1));
			         paste.add((String) ((Vector) details.get(p+pagenumb*10)).get(2));	

					model.addRow(paste);
					frame.add(buttons[p]);
					frame.add(buttons2[p]);
					frame.add(buttons3[p]);
					
					}	
				}
			
			table.setRowHeight(35);
			for (int i = 0; i < 3; i++) {
			    column = table.getColumnModel().getColumn(i);
			        column.setPreferredWidth(200); 
			    }
			
			table.setBounds(10,80,table.getPreferredSize().width,table.getPreferredSize().height);

			System.out.println(details.size());
			System.out.println(pagenumb);
			System.out.println(details.size()-pagenumb*10);
	    	if(details.size()-(10*pagenumb)<11){
    			next.setBounds(-100,0,0,0);	
    		}else
    			next.setBounds(730,450,next.getPreferredSize().width,next.getPreferredSize().height);
	    	
	    	if(pagenumb!=0)
	    		prew.setBounds(630,450,prew.getPreferredSize().width,prew.getPreferredSize().height);
	    	else
	    		prew.setBounds(-630,450,prew.getPreferredSize().width,prew.getPreferredSize().height);

	    	frame.setResizable(false);
    }
    
    void UpdateSearchTable(){
    
		indexlist.clear();	
		boolean cond1=false,cond2=false,cond3=false;
		
		for(int i=0;i<details.size();i++){
			for(k=0;k<=((Vector)details.get(i)).get(0).toString().length();k++){
				cond1=false;
				if((((Vector) details.get(i)).get(0)).toString().substring(0,k).compareToIgnoreCase(search.get(0).toString())==0){
					cond1=true;
					System.out.println("deneme1");
					break;
					}
			}
			
			for(k=0;k<= ((Vector)details.get(i)).get(1).toString().length();k++){	
				cond2=false;
				if((((Vector) details.get(i)).get(1)).toString().substring(0,k).compareToIgnoreCase(search.get(1).toString())==0){
					cond2=true;
					System.out.println("deneme2");
					break;
				}
			}	
			
			for(k=0;k<=((Vector)details.get(i)).get(2).toString().length();k++){
				cond3=false;
				if((((Vector) details.get(i)).get(2)).toString().substring(0,k).compareToIgnoreCase(search.get(2).toString())==0){
					cond3=true;
					System.out.println("deneme3");
					break;
					
				}
			}
			
			System.out.println(cond1+" "+cond2+" "+cond3);
					
				if((cond1 && cond2) && cond3){
					indexlist.add(Integer.toString(i));
					System.out.println(indexlist.lastElement().toString());
					System.out.println("cond oldu mu");
				}			
			}
    	
    	int c=table.getRowCount();
		int len=indexlist.size();
		int x=len-((pagesearch)*10);

			for(int p=(c-1);p>=0;p--){
				model.removeRow(p);
				frame.remove(buttons[p]);
				frame.remove(buttons2[p]);
				frame.remove(buttons3[p]);

				}			
			if(x>10)
				x=10;
			
				for(int p=0;p<x;p++){
									
			         Vector paste=new Vector();
			         paste.add((String) ((Vector) details.get(Integer.parseInt((String)(indexlist.get(p+pagesearch*10))))).get(0));
			         paste.add((String) ((Vector) details.get(Integer.parseInt((String)(indexlist.get(p+pagesearch*10))))).get(1));
			         paste.add((String) ((Vector) details.get(Integer.parseInt((String)(indexlist.get(p+pagesearch*10))))).get(2));	

					model.addRow(paste);
					frame.add(buttons[p]);
					frame.add(buttons2[p]);
					frame.add(buttons3[p]);
					}	

			
			table.setRowHeight(35);
			for (int i = 0; i < 3; i++) {
			    column = table.getColumnModel().getColumn(i);
			        column.setPreferredWidth(200); 
			    }
			
			table.setBounds(10,80,table.getPreferredSize().width,table.getPreferredSize().height);
	        frame.add(table);

	        System.out.println(indexlist.size());
	        
	        if(indexlist.size()-(10*pagesearch)<11){
    			next.setBounds(-100,0,0,0);	
    		}else
    			next.setBounds(730,450,next.getPreferredSize().width,next.getPreferredSize().height);
	    	
	    	if(pagesearch!=0)
	    		prew.setBounds(630,450,prew.getPreferredSize().width,prew.getPreferredSize().height);
	    	else
	    		prew.setBounds(-630,450,prew.getPreferredSize().width,prew.getPreferredSize().height); 	
	    	
			frame.setResizable(false);
    }

	 private void addObjects(Container pane){
		 		 		 
		 	pane.setLayout(null);
		 	
		 	s=1;
		 	t=1;
		 	pagenumb=0;
		 	pagesearch=0;
		 	

		 	for(int i=1;i<32;i++){
		 				days[i-1] = Integer.toString(i);
		 			}

		 			for(int i=0;i<100;i++)
		 				years[i] = Integer.toString(1900+i);
		 			
		 				box_day = new JComboBox(days);

		 			 	
			model.addColumn("Name");
			model.addColumn("SurName");
			model.addColumn("e-mail");

			next=new JButton("Next");
			next.setBounds(730,450,next.getPreferredSize().width,next.getPreferredSize().height);
       	 	next.addActionListener(this);
       	 	frame.add(next);
       	 	prew=new JButton("Prew");
			prew.setBounds(630,450,prew.getPreferredSize().width,prew.getPreferredSize().height);
    	 	prew.addActionListener(this);
    	 	frame.add(prew);
    	 	
    	 	next.setBounds(-730,450,next.getPreferredSize().width,next.getPreferredSize().height);
    	 	prew.setBounds(-630,450,prew.getPreferredSize().width,prew.getPreferredSize().height);

		    k=0;
		    for(int i=0;i<10;i++){
		    	      
	        	 buttons[i]=new JButton("Edit");
	        	 buttons[i].setBounds(630,80+k,buttons[i].getPreferredSize().width,buttons[i].getPreferredSize().height);
	        	 buttons[i].addActionListener(this);
	        	 k=k+35;       
	         }
		    k=0;
		    for(int i=0;i<10;i++){
	    	      
	        	 buttons2[i]=new JButton("Delete");
	        	 buttons2[i].setBounds(730,80+k,75,buttons[i].getPreferredSize().height);
	        	 buttons2[i].addActionListener(this);
	        	 k=k+35;     
	         }
		    k=0;
		    for(int i=0;i<10;i++){
	    	      
	        	 buttons3[i]=new JButton("Show");
	        	 buttons3[i].setBounds(830,80+k,75,buttons[i].getPreferredSize().height);
	        	 buttons3[i].addActionListener(this);
	        	 k=k+35;     
	         }
		    

         table = new JTable(model);
         table.setBounds(10,80,table.getPreferredSize().width,table.getPreferredSize().height);
 		
         TableColumn firstCol = new TableColumn();
		 firstCol.setHeaderValue("Name");
		 firstCol.setWidth(200);
		 TableColumn secondCol = new TableColumn();
		 secondCol.setHeaderValue("Surname");
		 secondCol.setWidth(200);
		 TableColumn thirdCol = new TableColumn();
		 thirdCol.setHeaderValue("E-mail");
		 thirdCol.setWidth(200);

		 DefaultTableColumnModel myCols= new DefaultTableColumnModel();
		 myCols.addColumn(firstCol);
		 myCols.addColumn(secondCol);
		 myCols.addColumn(thirdCol);
		 table.setTableHeader(new JTableHeader(myCols));
         
         JTableHeader header = table.getTableHeader();
		 header.setBounds(10,50,600,30);

		 myList = new JComboBox(data1);
		 myList.setBounds(10,10,myList.getPreferredSize().width,myList.getPreferredSize().height);
		 myList.addActionListener(this);
		 
		 
		 myList2 = new JComboBox(data2);
		 myList2.setBounds(90,10,myList2.getPreferredSize().width,myList2.getPreferredSize().height);
		 myList2.addActionListener(this);
		 
         x = new JButton("New");
         x.setBounds(415,500,x.getPreferredSize().width,x.getPreferredSize().height);
         x.addActionListener(this);

         pane.add(x);
         pane.add(myList);
         pane.add(myList2);
         pane.add(table);  
         pane.add(header);

	 }
	 
	 private void addObjectsnew(Container pane){
		 
         pane.setLayout(null);
         
         JLabel label = new JLabel("Name");
         label.setBounds(15,15,label.getPreferredSize().width,label.getPreferredSize().height);
         f1 = new JTextField(15);
         f1.setBounds(80,15,f1.getPreferredSize().width,f1.getPreferredSize().height);
         
         JLabel label2 = new JLabel("SurName");
         label2.setBounds(15,50,label2.getPreferredSize().width,label2.getPreferredSize().height);
         f2 = new JTextField(15);
         f2.setBounds(80,50,f2.getPreferredSize().width,f2.getPreferredSize().height);
 
         JLabel label3 = new JLabel("Email");
         label3.setBounds(15,85,label3.getPreferredSize().width,label3.getPreferredSize().height);
         f3 = new JTextField(15);
         f3.setBounds(80,85,f3.getPreferredSize().width,f3.getPreferredSize().height);
   
         JLabel label4 = new JLabel("Phone");
         label4.setBounds(15,120,label4.getPreferredSize().width,label4.getPreferredSize().height);
         f4 = new JTextField(15);
         f4.setBounds(80,120,f4.getPreferredSize().width,f4.getPreferredSize().height);
  
         JLabel label5 = new JLabel("Adress");
         label5.setBounds(15,180,label4.getPreferredSize().width,label4.getPreferredSize().height);
         text_area = new JTextArea(5,20);
         text_area.setBounds(80,155,text_area.getPreferredSize().width,text_area.getPreferredSize().height);
   
         JScrollPane ka=new JScrollPane(text_area);
         ka.setBounds(80,155,ka.getPreferredSize().width,ka.getPreferredSize().height);
        
         
         JLabel label6 = new JLabel("Birthdate");
         label6.setBounds(15,250,label5.getPreferredSize().width,label5.getPreferredSize().height);
         f5 = new JTextField(15);
         f5.setBounds(80,250,f5.getPreferredSize().width,f5.getPreferredSize().height);
 
         calendar= new JButton("Calendar");
         calendar.setBounds(250,250,calendar.getPreferredSize().width,calendar.getPreferredSize().height);
         calendar.addActionListener(this);
         
         JLabel label7 = new JLabel("Picture");
         label7.setBounds(15,280,label7.getPreferredSize().width,label7.getPreferredSize().height);
         f6 = new JTextField(15);
         f6.setBounds(80,280,f6.getPreferredSize().width,f6.getPreferredSize().height);
 
         y = new JButton("OK");
         y.setBounds(90,310,y.getPreferredSize().width,y.getPreferredSize().height);
         y.addActionListener(this);
         
         browse= new JButton("Browse");
         browse.setBounds(250,280,browse.getPreferredSize().width,browse.getPreferredSize().height);
         browse.addActionListener(this);
         
         pane.add(label);
         pane.add(label2);
         pane.add(label3);
         pane.add(label4);
         pane.add(label5);
         pane.add(label6);
         pane.add(label7);
         pane.add(browse);
         pane.add(y);
         pane.add(f1);
         pane.add(f2);
         pane.add(f3);
         pane.add(f4);
         pane.add(f5);
         pane.add(f6);
         pane.add(ka);
         pane.add(calendar);
	 }
	  
	 private void addObjectsdetails(Container pane,int i){
		 pane.setLayout(null);
         

         JLabel label = new JLabel("Name");
         label.setBounds(15,15,label.getPreferredSize().width,label.getPreferredSize().height);
         f1 = new JTextField(15);
         if(flag==0)
             f1.setText((String) ((Vector) details.get(i+pagenumb*10)).get(0));
             if(flag==1)
             f1.setText((String) ((Vector) details.get(Integer.parseInt(indexlist.get(i+pagesearch*10).toString()))).get(0));
         f1.setBounds(80,15,f1.getPreferredSize().width,f1.getPreferredSize().height);
         
         
         JLabel label2 = new JLabel("SurName");
         label2.setBounds(15,50,label2.getPreferredSize().width,label2.getPreferredSize().height);
         f2 = new JTextField(15);
         if(flag==0)
             f2.setText((String) ((Vector) details.get(i+pagenumb*10)).get(1));
             if(flag==1)
             f2.setText((String) ((Vector) details.get(Integer.parseInt(indexlist.get(i+pagesearch*10).toString()))).get(1));
         f2.setBounds(80,50,f2.getPreferredSize().width,f2.getPreferredSize().height);
         
         JLabel label3 = new JLabel("Email");
         label3.setBounds(15,85,label3.getPreferredSize().width,label3.getPreferredSize().height);
         f3 = new JTextField(15);
         if(flag==0)
             f3.setText((String) ((Vector) details.get(i+pagenumb*10)).get(2));
             if(flag==1)
             f3.setText((String) ((Vector) details.get(Integer.parseInt(indexlist.get(i+pagesearch*10).toString()))).get(2));
         f3.setBounds(80,85,f3.getPreferredSize().width,f3.getPreferredSize().height);


         JLabel label4 = new JLabel("Phone");
         label4.setBounds(15,120,label4.getPreferredSize().width,label4.getPreferredSize().height);
         f4 = new JTextField(15);
         if(flag==0)
             f4.setText((String) ((Vector) details.get(i+pagenumb*10)).get(3));
             if(flag==1)
             f4.setText((String) ((Vector) details.get(Integer.parseInt(indexlist.get(i+pagesearch*10).toString()))).get(3));
         f4.setBounds(80,120,f4.getPreferredSize().width,f4.getPreferredSize().height);

         JLabel label5 = new JLabel("Adress");
         label5.setBounds(15,150,label5.getPreferredSize().width,label5.getPreferredSize().height);
         text_area = new JTextArea(5,20);
         if(flag==0)
             text_area.setText((String) ((Vector) details.get(i+pagenumb*10)).get(4));
             if(flag==1)
             text_area.setText((String) ((Vector) details.get(Integer.parseInt(indexlist.get(i+pagesearch*10).toString()))).get(4));
         text_area.setBounds(80,155,text_area.getPreferredSize().width,text_area.getPreferredSize().height);
         
         
         JScrollPane ka=new JScrollPane(text_area);
         ka.setBounds(80,155,ka.getPreferredSize().width,ka.getPreferredSize().height);
         
         JLabel label6 = new JLabel("Birthdate");
         label6.setBounds(15,250,label5.getPreferredSize().width,label5.getPreferredSize().height);
         f5 = new JTextField(15);
         if(flag==0)
             f5.setText((String) ((Vector) details.get(i+pagenumb*10)).get(5));
             if(flag==1)
             f5.setText((String) ((Vector) details.get(Integer.parseInt(indexlist.get(i+pagesearch*10).toString()))).get(5));
         f5.setBounds(80,250,f5.getPreferredSize().width,f5.getPreferredSize().height);
  
         JLabel mylabel=new JLabel();
         ImageIcon resim=null;
         if(flag==0)
        	 resim=new ImageIcon((String) ((Vector) details.get(i+pagenumb*10)).get(6));
         if(flag==1)
             resim=new ImageIcon((String) ((Vector) details.get(Integer.parseInt(indexlist.get(i+pagesearch*10).toString()))).get(5));
         resim=new ImageIcon(resim.getImage().getScaledInstance(90,90,Image.SCALE_DEFAULT));
         mylabel.setIcon(resim);
         mylabel.setText("");
         mylabel.setBounds(300,27,mylabel.getPreferredSize().width,mylabel.getPreferredSize().height);
   
         pane.add(label);
         pane.add(label2);
         pane.add(label3);
         pane.add(label4);
         pane.add(label5);
         pane.add(label6);
         pane.add(f1);
         pane.add(f2);
         pane.add(f3);
         pane.add(f4);
         pane.add(f5);
         pane.add(ka);
         pane.add(mylabel);
	 }
	 
	 private void addObjectsedit(Container pane,int i){
		 
		 pane.setLayout(null);
         

         JLabel label = new JLabel("Name");
         label.setBounds(15,15,label.getPreferredSize().width,label.getPreferredSize().height);
         f1 = new JTextField(15);
         if(flag==0)
             f1.setText((String) ((Vector) details.get(i+pagenumb*10)).get(0));
             if(flag==1)
             f1.setText((String) ((Vector) details.get(Integer.parseInt(indexlist.get(i+pagesearch*10).toString()))).get(0));
         f1.setBounds(80,15,f1.getPreferredSize().width,f1.getPreferredSize().height);
         
         
         JLabel label2 = new JLabel("SurName");
         label2.setBounds(15,50,label2.getPreferredSize().width,label2.getPreferredSize().height);
         f2 = new JTextField(15);
         if(flag==0)
             f2.setText((String) ((Vector) details.get(i+pagenumb*10)).get(1));
             if(flag==1)
             f2.setText((String) ((Vector) details.get(Integer.parseInt(indexlist.get(i+pagesearch*10).toString()))).get(1));
         f2.setBounds(80,50,f2.getPreferredSize().width,f2.getPreferredSize().height);
         
         JLabel label3 = new JLabel("Email");
         label3.setBounds(15,85,label3.getPreferredSize().width,label3.getPreferredSize().height);
         f3 = new JTextField(15);
         if(flag==0)
             f3.setText((String) ((Vector) details.get(i+pagenumb*10)).get(2));
             if(flag==1)
             f3.setText((String) ((Vector) details.get(Integer.parseInt(indexlist.get(i+pagesearch*10).toString()))).get(2));
         f3.setBounds(80,85,f3.getPreferredSize().width,f3.getPreferredSize().height);


         JLabel label4 = new JLabel("Phone");
         label4.setBounds(15,120,label4.getPreferredSize().width,label4.getPreferredSize().height);
         f4 = new JTextField(15);
         if(flag==0)
             f4.setText((String) ((Vector) details.get(i+pagenumb*10)).get(3));
             if(flag==1)
             f4.setText((String) ((Vector) details.get(Integer.parseInt(indexlist.get(i+pagesearch*10).toString()))).get(3));
         f4.setBounds(80,120,f4.getPreferredSize().width,f4.getPreferredSize().height);

         JLabel label5 = new JLabel("Adress");
         label5.setBounds(15,150,label5.getPreferredSize().width,label5.getPreferredSize().height);
         text_area = new JTextArea(5,20);
         if(flag==0)
             text_area.setText((String) ((Vector) details.get(i+pagenumb*10)).get(4));
             if(flag==1)
             text_area.setText((String) ((Vector) details.get(Integer.parseInt(indexlist.get(i+pagesearch*10).toString()))).get(4));
         text_area.setBounds(80,155,text_area.getPreferredSize().width,text_area.getPreferredSize().height);
         
         
         JScrollPane ka=new JScrollPane(text_area);
         ka.setBounds(80,155,ka.getPreferredSize().width,ka.getPreferredSize().height);
         
         JLabel label6 = new JLabel("Birthdate");
         label6.setBounds(15,250,label5.getPreferredSize().width,label5.getPreferredSize().height);
         f5 = new JTextField(15);
         if(flag==0)
             f5.setText((String) ((Vector) details.get(i+pagenumb*10)).get(5));
             if(flag==1)
             f5.setText((String) ((Vector) details.get(Integer.parseInt(indexlist.get(i+pagesearch*10).toString()))).get(5));
         f5.setBounds(80,250,f5.getPreferredSize().width,f5.getPreferredSize().height);
  
         calendar= new JButton("Calendar");
         calendar.setBounds(250,250,calendar.getPreferredSize().width,calendar.getPreferredSize().height);
         calendar.addActionListener(this);
        
         JLabel label7 = new JLabel("Picture");
         label7.setBounds(15,280,label6.getPreferredSize().width,label6.getPreferredSize().height);
         f6 = new JTextField(15);
         if(flag==0)
             f6.setText((String) ((Vector) details.get(i+pagenumb*10)).get(6));
             if(flag==1)
             f6.setText((String) ((Vector) details.get(Integer.parseInt(indexlist.get(i+pagesearch*10).toString()))).get(6));
         f6.setBounds(80,280,f6.getPreferredSize().width,f6.getPreferredSize().height);
    
         browse= new JButton("Browse");
         browse.setBounds(250,280,browse.getPreferredSize().width,browse.getPreferredSize().height);
         browse.addActionListener(this);
         
         ok[i] = new JButton("OK");
         ok[i].setBounds(90,310,ok[i].getPreferredSize().width,ok[i].getPreferredSize().height);
         ok[i].addActionListener(this);
    
         pane.add(label);
         pane.add(label2);
         pane.add(label3);
         pane.add(label4);
         pane.add(label5);
         pane.add(label6);
         pane.add(label7);
         pane.add(browse);
         pane.add(ok[i]);
         pane.add(f1);
         pane.add(f2);
         pane.add(f3);
         pane.add(f4);
         pane.add(f5);
         pane.add(f6);
         pane.add(ka);
         pane.add(calendar);
     
	 }
	 
	 private void addObjectscalendar(Container pane){
		 
		 pane.setLayout(null);
		 
		 box_day = new JComboBox(days);
		 box_day.setBounds(10,10,box_day.getPreferredSize().width,box_day.getPreferredSize().height);
		 box_day.addActionListener(this);
		 
		 box_month = new JComboBox(months);
		 box_month.setBounds(70,10,box_month.getPreferredSize().width,box_month.getPreferredSize().height);
		 box_month.addActionListener(this);
		 
		 box_year = new JComboBox(years);
		 box_year.setBounds(180,10,box_year.getPreferredSize().width,box_year.getPreferredSize().height);
		 box_year.addActionListener(this);
		 
		 calendar_ok = new JButton("OK");
         calendar_ok.setBounds(90,100,calendar_ok.getPreferredSize().width,calendar_ok.getPreferredSize().height);
         calendar_ok.addActionListener(this);
		 
		 pane.add(box_day);
		 pane.add(box_month);
		 pane.add(box_year);
		 pane.add(calendar_ok);
		
	 }

	 private void addObjectsSearch(Container pane){
		 
         pane.setLayout(null);
         
         JLabel label = new JLabel("Name");
         label.setBounds(15,15,label.getPreferredSize().width,label.getPreferredSize().height);
         f1 = new JTextField(15);
         f1.setBounds(80,15,f1.getPreferredSize().width,f1.getPreferredSize().height);
         f1.addKeyListener (this);
         
         JLabel label2 = new JLabel("SurName");
         label2.setBounds(15,50,label2.getPreferredSize().width,label2.getPreferredSize().height);
         f2 = new JTextField(15);
         f2.setBounds(80,50,f2.getPreferredSize().width,f2.getPreferredSize().height);
         f2.addKeyListener (this);
         
         JLabel label3 = new JLabel("Email");
         label3.setBounds(15,85,label3.getPreferredSize().width,label3.getPreferredSize().height);
         f3 = new JTextField(15);
         f3.setBounds(80,85,f3.getPreferredSize().width,f3.getPreferredSize().height);
         f3.addKeyListener (this);
         
         oks = new JButton("OK");
         oks.setBounds(90,125,oks.getPreferredSize().width,oks.getPreferredSize().height);
         oks.addActionListener(this);
        
         pane.add(label);
         pane.add(label2);
         pane.add(label3);

         pane.add(oks);
         pane.add(f1);
         pane.add(f2);
         pane.add(f3);
   
	 }

	public void keyTyped(KeyEvent e) {
		
	}

	public void keyPressed(KeyEvent e) {
		

	}

	public void keyReleased(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	public void actionPerformed(ActionEvent e){
		
		int i=0;
		
		if(e.getSource()==calendar)
			 createguiCal();
		
		if(e.getSource()==calendar_ok){
			
				f5.setText(box_day.getSelectedItem()+" "+box_month.getSelectedItem()+" "+box_year.getSelectedItem());
				calendar_frame.dispose();
		}
		
		if(e.getSource()==myList){
			String get = (String)myList.getSelectedItem();
			
			if(get.equalsIgnoreCase("Close")){
				System.exit(0);
			}
				if(get.equalsIgnoreCase("Open")){
					
					String filename = null;
					
					if(file_chooser.showOpenDialog(myList)==JFileChooser.APPROVE_OPTION){
						File file = file_chooser.getSelectedFile();
						filename=(file.getAbsolutePath());
					}
					
					details.clear();
					indexlist.clear();
					String line=" ";
					try {
						FileReader filereader = new FileReader(filename);
						BufferedReader in= new BufferedReader(filereader);

						line=in.readLine();
						
						do{


							String infos[]=line.split("\\*");
							Vector infolar=new Vector();

							for(i=0;i<7;i++){
								infos[i]=infos[i].replace('|','\n');
								infolar.add(infos[i]);
							}
	
							details.add(infolar);
							System.out.println(details.lastElement());
							
							line=in.readLine();
						}while(line!=null);
						
						UpdateTable();

					} catch (FileNotFoundException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}  catch (IOException e2) {

						e2.printStackTrace();
					}

					UpdateTable();
				}
				
				if(get.equalsIgnoreCase("Save")){
					
					String filename=null;	
					
					if(file_chooser.showSaveDialog(myList)==JFileChooser.APPROVE_OPTION){
						File file = file_chooser.getSelectedFile();
						filename=(file.getAbsolutePath());
					}
					
			try {

				out = new BufferedWriter(new FileWriter(filename));
				String str;
					for(i=0;i<details.size();i++){
 
					for(k=0;k<7;k++){		
								  str =(String)((Vector)details.get(i)).get(k) ;
								  str=str.replace('\n','|');
								  out.write(str);
						 if(k!=6) {

								if(k==5){	
								String fifth=(String)((Vector)details.get(i)).get(5);

								String sixth=(String)((Vector)details.get(i)).get(6);

								   if( fifth.length()==0 && sixth.length()==0){
									   out.write(" * ");
									   System.out.println("1");
								   }
									if( fifth.length()==0 && sixth.length()!=0){
									   out.write(" *");
									   System.out.println("2");
								   }		   
									if(fifth.length()!=0 && sixth.length()!=0){
									   out.write("*");
									   System.out.println("3");
								   }
								   
								 }   
								   if(k!=5){
									   if(((String) ((Vector)details.get(i)).get(k)).length()==0){
										   out.write(" *");
									   }else{out.write("*");}
								   }
								 }
							   }
							   out.newLine();
						}
							   				   			
						out.close();
					} catch (IOException e1) {
						// TODO Auto-generated catch block
						System.out.println("olmadı");
					}
					
				}
			}
		
		if(e.getSource()==browse){
			if(file_chooser.showOpenDialog(frame2)==JFileChooser.APPROVE_OPTION){
				File file = file_chooser.getSelectedFile();
				f6.setText(file.getAbsolutePath());
			}		
		}
		
		if(e.getSource()==x){		
			creategui2();		
		}			
		if(e.getSource()==oks){
			
			flag=1;

			search.clear();
			search.add(f1.getText());
			search.add(f2.getText());
			search.add(f3.getText());	
			System.out.println(search.get(0));
			System.out.println(search.get(1));
			System.out.println(search.get(2));
					

			UpdateSearchTable();
			
			frameSearch.dispose();
			frame.setResizable( false );
			
		}
	
		if(e.getSource()==y){
			
		Vector temp1=new Vector();
			temp1.add(f1.getText());
			temp1.add(f2.getText());
			temp1.add(f3.getText());
			temp1.add(f4.getText());
			temp1.add(text_area.getText());
			temp1.add(f5.getText());			
			temp1.add(f6.getText());
			
			details.add(temp1);
			sort();
			UpdateTable();
			frame2.dispose(); 
		}
			if(e.getSource()==next){
					
				if(flag==0){
					pagenumb+=1;			
					UpdateTable();
				}
				if(flag==1){
					pagesearch+=1;
					UpdateSearchTable();
				}

					frame.setResizable( false );
				}

				if(e.getSource()==prew){
					
					if(flag==0)
						pagenumb-=1;
					if(flag==1)
						pagesearch-=1;
					
					int c=table.getRowCount();
		
						for(int p=(c-1);p>=0;p--){
							model.removeRow(p);
							frame.remove(buttons[p]);
							frame.remove(buttons2[p]);
							frame.remove(buttons3[p]);
						}
					
					if(flag==0){	
						for(int p=0;p<10;p++){
							
					         Vector paste=new Vector();
					         paste.add((String) ((Vector) details.get(p+pagenumb*10)).get(0));
					         paste.add((String) ((Vector) details.get(p+pagenumb*10)).get(1));
					         paste.add((String) ((Vector) details.get(p+pagenumb*10)).get(2));	

							model.addRow(paste);
							frame.add(buttons[p]);
							frame.add(buttons2[p]);
							frame.add(buttons3[p]);
							
					    	if(details.size()-(10*pagenumb)<11){
				    			next.setBounds(-100,0,0,0);	
				    		}else
				    			next.setBounds(730,450,next.getPreferredSize().width,next.getPreferredSize().height);
					    	
					    	if(pagenumb!=0)
					    		prew.setBounds(630,450,prew.getPreferredSize().width,prew.getPreferredSize().height);
					    	else
					    		prew.setBounds(-630,450,prew.getPreferredSize().width,prew.getPreferredSize().height);
						}
					}
	
					if(flag==1){	
						for(int p=0;p<10;p++){
							
							Vector paste=new Vector();
					         paste.add((String) ((Vector) details.get(Integer.parseInt((String)(indexlist.get(p+pagesearch*10))))).get(0));
					         paste.add((String) ((Vector) details.get(Integer.parseInt((String)(indexlist.get(p+pagesearch*10))))).get(1));
					         paste.add((String) ((Vector) details.get(Integer.parseInt((String)(indexlist.get(p+pagesearch*10))))).get(2));
								
				            frame.add(buttons[p]);
							frame.add(buttons2[p]);
							frame.add(buttons3[p]);
			    			model.addRow(paste);
			    			
			    	        if(indexlist.size()-(10*pagesearch)<11){
			        			next.setBounds(-100,0,0,0);	
			        		}else
			        			next.setBounds(730,450,next.getPreferredSize().width,next.getPreferredSize().height);
			    	    	
			    	    	if(pagesearch!=0)
			    	    		prew.setBounds(630,450,prew.getPreferredSize().width,prew.getPreferredSize().height);
			    	    	else
			    	    		prew.setBounds(-630,450,prew.getPreferredSize().width,prew.getPreferredSize().height); 
						}
					}
					
				table.setBounds(10,80,table.getPreferredSize().width,table.getPreferredSize().height);
				
				frame.setResizable( false );

				}
				
		if(e.getSource()==myList2){
			String get = (String)myList2.getSelectedItem();
				if(get.equalsIgnoreCase("Search Record")){
					createguiSearch();
					flag=1;
					pagesearch=0;
					frame.remove(x);
					frame.setResizable(false);
				}
				if(get.equalsIgnoreCase("Search")){
					flag=0;
					pagenumb=0;
					UpdateTable();
					frame.add(x);
					frame.setResizable(false);
				}
		}
				
		for(i=0;i<table.getRowCount();i++){
			if(e.getSource()== buttons2[i]){
				
				Object[] options = {"Yes i am",
                "no i am not"};
				int n = JOptionPane.showOptionDialog(frame,
						"Are You Sure?",
						"Question",
						JOptionPane.YES_NO_OPTION,
						JOptionPane.QUESTION_MESSAGE,
						null,    
						options, 
						options[0]); 

				if(n==0){
				
				if(flag==0){
					details.remove(pagenumb*10+i);
					if(details.size()==pagenumb*10 && pagenumb!=0)
						pagenumb--;
					UpdateTable();
				}
				if(flag==1){
					details.remove(Integer.parseInt((String)(indexlist.get(i+pagesearch*10))));
					indexlist.remove(i+pagesearch*10);
					if(indexlist.size()==pagesearch*10 && pagesearch!=0)
						pagesearch--;
					UpdateSearchTable();
					}		
				}
			}
		}
		for(i=0;i<table.getRowCount();i++){
			if(e.getSource()== buttons3[i]){
	
				createguiShow(i);
					}
				}
		for(i=0;i<table.getRowCount();i++){
			if(e.getSource()== buttons[i]){	
				createguiEdit(i);

					}
				}
		for(i=0;i<table.getRowCount();i++){
			if(e.getSource()== ok[i]){
				
				Vector temp3=new Vector();
				temp3.add(f1.getText());
				temp3.add(f2.getText());
				temp3.add(f3.getText());
				temp3.add(f4.getText());
				temp3.add(text_area.getText());
				temp3.add(f5.getText());
				temp3.add(f6.getText());
				
				
				if(flag==0){
					details.setElementAt(temp3,(pagenumb*10+i));
					sort();
					UpdateTable();
				}
					
				if(flag==1){
					details.setElementAt(temp3,Integer.parseInt((String)(indexlist.get(i+pagesearch*10))));
					sort();
					UpdateSearchTable();
				}
				frame4.dispose();
				}
			}				
		}		
		
	public void creategui(){
		
		frame = new JFrame();
		frame.setSize(1000,600);
		addObjects(frame.getContentPane ());
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	public void creategui2() {
		
		frame2 = new JFrame();
		frame2.setSize(400,400);
		addObjectsnew(frame2.getContentPane ());
		frame2.setVisible(true);	
	}
	
	public void createguiShow(int i){
		frame3= new JFrame();
		frame3.setSize(400,350);
		addObjectsdetails(frame3.getContentPane(),i);
		frame3.setVisible(true);	
	}
	
	public void createguiCal(){
		calendar_frame= new JFrame();
		calendar_frame.setSize(300,200);
		addObjectscalendar(calendar_frame.getContentPane());
		calendar_frame.setVisible(true);	
	}
	
	public void createguiEdit(int i){
		frame4= new JFrame();
		frame4.setSize(400,400);
		addObjectsedit(frame4.getContentPane(),i);
		frame4.setVisible(true);	
	}
	
	public void createguiSearch(){
		frameSearch= new JFrame();
		frameSearch.setSize(400,200);
		addObjectsSearch(frameSearch.getContentPane());
		frameSearch.setVisible(true);	
	}
}
	
class adresDefteri{
		public static void main(String[] args){
		
		functions screen=new functions();
		screen.creategui();
		
		}
	}

