/**
 * @(#)InsertionSort.java
 *
 *
 * @author 
 * @version 1.00 2011/2/20
 */

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());
    	
    }
    
    private class ButtonListener implements ActionListener{
    boolean nextPress=false;
    boolean isRunning=false;
    int m=1;
    int arr[]=new int[8];
    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 start
    							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());
    		for(int k=0;k<arr.length;k++)
    					System.out.print(arr[k]);	
    		
    					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++;
    							for(int k=0;k<arr.length;k++)
    					System.out.print("-"+arr[k]);
    					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);
    			/*	p11.add(p3);
    				add(p11,BorderLayout.SOUTH);*/
    				for(int k=0;k<arr.length;k++)
    					System.out.print(arr[k]);
    				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]));
    						}//for i
    					}//if next
    	}
    				public boolean setNext(){    					
    						return nextPress;
    				}
    			/*	public void startSort(){
    					int arr[]=new int[8];
    		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());
    		
    					for(int i=0;i<arr.length;i++){
    						while(setNext()){
    							for(int j=i;j>0&&arr[j-1]>arr[j];j--){
    								swap(arr, j, j-1);
    							}//for j
    					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]));
    				p3.add(t1);
    				p3.add(t2);
    				p3.add(t3);
    				p3.add(t4);    				
    				p3.add(t5);
    				p3.add(t6);
    				p3.add(t7);
    				p3.add(t8);
    				if(i==1)
    				{	p4.add(p3);
    					p11.add(p4);
    					add(p11,BorderLayout.SOUTH);}
    					else
    						if(i==2)
    						{	p5.add(p3);
    							p11.add(p5);
    							add(p11,BorderLayout.SOUTH);}
    							else
    								if(i==3)
    								{	p6.add(p3);
    									p11.add(p6);
    									add(p11,BorderLayout.SOUTH);}
    									else
    										if(i==4)
    										{	p7.add(p3);
    											p11.add(p7);
    											add(p11,BorderLayout.SOUTH);}
    											else
    												if(i==5)
    												{	p8.add(p3);
    													p11.add(p8);
    													add(p11,BorderLayout.SOUTH);}
    													else
    														if(i==6)
    														{	p9.add(p3);
    															p11.add(p9);
    															add(p11,BorderLayout.SOUTH);}
    															else
    																if(i==7)
    																{	p10.add(p3);
    																	p11.add(p10);
    																	add(p11,BorderLayout.SOUTH);}
    						}//while
    					}//for i
    				}*/
    				
    	
   }
    
   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);

} 
}