/**
 * @(#)InsertionSort.java
 *
 *
 * @author 
 * @version 1.00 2011/2/20
 */

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.border.*;import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.border.*;
public class InsertionSort2 extends JApplet{
JTextField t1=new JTextField(3);
JTextField t2=new JTextField(3);
JTextField t3=new JTextField(3);
JTextField t4=new JTextField(3);
JTextField t5=new JTextField(3);
JTextField t6=new JTextField(3);
JTextField t7=new JTextField(3);
JTextField t8=new JTextField(3);

JTextField ta=new JTextField(3);
JTextField tb=new JTextField(3);
JTextField tc=new JTextField(3);
JTextField td=new JTextField(3);
JTextField te=new JTextField(3);
JTextField tf=new JTextField(3);
JTextField tj=new JTextField(3);
JTextField th=new JTextField(3);
JButton start=new JButton("start");
JButton next=new JButton("next");
JPanel p1=new JPanel(new GridLayout(1,8));
    	JPanel p2=new JPanel(new FlowLayout(FlowLayout.LEFT));
    	JPanel p3=new JPanel(new GridLayout(1,8));
    	JPanel p4=new JPanel(new GridLayout(1,1));
    	JPanel p5=new JPanel(new GridLayout(1,1));
    	JPanel p6=new JPanel(new GridLayout(1,1));
    	JPanel p7=new JPanel(new GridLayout(1,1));
    	JPanel p8=new JPanel(new GridLayout(1,1));
    	JPanel p9=new JPanel(new GridLayout(1,1));
    	JPanel p10=new JPanel(new GridLayout(1,1));
    	JPanel p11=new JPanel(new GridLayout(10,1));

    public void init() {
    	p1.add(t1);
    	p1.add(t2);
    	p1.add(t3);
    	p1.add(t4);
    	p1.add(t5);
    	p1.add(t6);
    	p1.add(t7);
    	p1.add(t8);
    	p2.add(start);
    	p2.add(next);
    	add(p1,BorderLayout.NORTH);
    	add(p2,BorderLayout.CENTER);
    	start.addActionListener(new ButtonListener());
    	next.addActionListener(new ButtonListener());

    }


 int hint =0 ;
 int arr[]=new int[8];
    int array[]=new int[8];



     public void print()

    {


    		for(int k=0;k<8;k++)
               
                {
                   
    	             System.out.print(" "+array[k]);
               
                }
    }


public void fill(int ar[])
    {
    for(int i=0;i<ar.length;i++)
  {
        array[i]=ar[i];
    }
}

    public class ButtonListener implements ActionListener{
    boolean nextPress=false;
    boolean isRunning=false;
    int m=1;
   
   
    public void swap(int [] arr,int j,int k){
    	int temp=arr[j];
    	arr[j]=arr[k];
    	arr[k]=temp;
    }

    	public void actionPerformed(ActionEvent e){

    			if(e.getActionCommand().equals("start"))
    			{
    				isRunning=true;


    			}
    							if(e.getActionCommand().equals("next"))
    				{	nextPress=true;
    						arr[0]=Integer.parseInt(t1.getText());
    		arr[1]=	Integer.parseInt(t2.getText());
    		arr[2]=Integer.parseInt(t3.getText());
    		arr[3]=Integer.parseInt(t4.getText());
    		arr[4]=Integer.parseInt(t5.getText());
    		arr[5]=Integer.parseInt(t6.getText());
    		arr[6]=Integer.parseInt(t7.getText());
                arr[7]=Integer.parseInt(t8.getText());

if(hint==0)

    {

InsertionSort2.this.fill(arr);// call for fill function
hint++;
    }
                                    System.out.println("\n");

InsertionSort2.this.print();//call for print function

    					for(int i=m;i<8&&nextPress==true;i++){

    							for(int j=i;j>0&&arr[j-1]>arr[j];j--){
    								swap(arr, j, j-1);
    							}//for j
    							nextPress=false;
    							m++;


                                                        System.out.print("  "+"[");

    							for(int k=0;k<arr.length;k++)
    					                     System.out.print(arr[k]+"-");
                                                        System.out.print("]"+" ");

    					t1.setText(String.valueOf(arr[0]));
                                        t2.setText(String.valueOf(arr[1]));
    				t3.setText(String.valueOf(arr[2]));
    				t4.setText(String.valueOf(arr[3]));
    				t5.setText(String.valueOf(arr[4]));
    				t6.setText(String.valueOf(arr[5]));
    				t7.setText(String.valueOf(arr[6]));
    				t8.setText(String.valueOf(arr[7]));
    				//////
    				ta=t1;
    				tb=t2;
    				tc=t3;
    				td=t4;
    				te=t5;
    				tf=t6;
    				tj=t7;
    				th=t8;
    				p3.add(ta);
    				p3.add(tb);
    				p3.add(tc);
    				p3.add(td);
    				p3.add(te);
    				p3.add(tf);
    				p3.add(tj);
    				p3.add(th);
 
    			//InsertionSort2.this.print();

    				if(i==1)

    				{ p11.updateUI();
    						p4.add(p3);
    					p11.add(p4);
    					add(p11,BorderLayout.SOUTH);}
    					else
    						if(i==2)
    						{p11.updateUI();
    								p5.add(p3);
    								p11.add(p4);
    							p11.add(p5);
    							add(p11,BorderLayout.SOUTH);}
    							else
    								if(i==3)
    								{p11.updateUI();
    										p6.add(p3);
    										p11.add(p4);
    							p11.add(p5);
    									p11.add(p6);
    									add(p11,BorderLayout.SOUTH);}
    									else
    										if(i==4)
    										{p11.updateUI();
    												p7.add(p3);

    										         p11.add(p4);
    							                     p11.add(p5);
    								             	p11.add(p6);
    									 	      	p11.add(p7);
    											add(p11,BorderLayout.SOUTH);}
    											else
    												if(i==5)
    												{p11.updateUI();
    														p8.add(p3);
    															p11.add(p4);
    							                                p11.add(p5);
    								                        	p11.add(p6);
    											                p11.add(p7);
    												        	p11.add(p8);
    													add(p11,BorderLayout.SOUTH);}
    													else
    														if(i==6)
    														{p11.updateUI();
    																p9.add(p3);
    																	p11.add(p4);
    							                                p11.add(p5);
    								                        	p11.add(p6);
    											                p11.add(p7);
    												        	p11.add(p8);
    															p11.add(p9);
    															add(p11,BorderLayout.SOUTH);}
    															else
    																if(i==7)
    																{p11.updateUI();
    																	p10.add(p3);
    																	p11.add(p4);
    							                                p11.add(p5);
    								                        	p11.add(p6);
    											                p11.add(p7);
    												        	p11.add(p8);
    															p11.add(p9);
    																	p11.add(p10);
    																	add(p11,BorderLayout.SOUTH);}
    				t1.setText(String.valueOf(arr[0]));
    			        t2.setText(String.valueOf(arr[1]));
    				t3.setText(String.valueOf(arr[2]));
    				t4.setText(String.valueOf(arr[3]));
    				t5.setText(String.valueOf(arr[4]));
    				t6.setText(String.valueOf(arr[5]));
    				t7.setText(String.valueOf(arr[6]));
    				t8.setText(String.valueOf(arr[7]));
    						}
    					}
    	}
    				public boolean setNext(){
    						return nextPress;
    				}
    			}


   }



    
   public static void main (String[] args) {
   	JFrame frame = new JFrame("Applet is in the frame");

      frame.pack();
      InsertionSort2 applet = new InsertionSort2();

      
      frame.add(applet, BorderLayout.CENTER);

      
      applet.init();

      
      frame.setLocationRelativeTo(null); // Center the frame
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setSize(400, 400);
      frame.setVisible(true);

} 
}