



import java.awt.*;
import java.awt.event.ActionEvent;
import javax.swing.*;
import javax.swing.AbstractAction;
import javax.swing.border.TitledBorder;
import java.applet.Applet;

public class insertion extends Applet {
        
    private JTextField [] textfields=new JTextField[7];
    JPanel resultPanel=new JPanel(new GridLayout());
    JPanel text=new JPanel(new BorderLayout());
    public void init() {
            
        
      // setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));
        JPanel textFieldPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 5));
             
        for (int i = 0; i < textfields.length; i++) {
                JTextField field=new JTextField(3);
                field.setText((int)(Math.random() * 10)+"");
                textfields[i]=field;
                textFieldPanel.add(field);
                }
        textFieldPanel.setBorder(new TitledBorder(" "));
 
        textFieldPanel.add(new JButton(new AbstractAction("sort") {
                        
                        @Override
                        public void actionPerformed(ActionEvent e) {
                                sortAction();
                        }
                }));
        
        
       text. add(textFieldPanel, BorderLayout.NORTH);
        this.pack();
    }

    private void sortAction(){
        resultPanel.removeAll();
        GridLayout g=(GridLayout)resultPanel.getLayout();
           g.setRows(1);
        insertionSort ();
       resultPanel.updateUI();
     text.add(resultPanel, BorderLayout.CENTER);
      this.pack();
    }
                
         
        
         public void insertionSort () {
                int[] x = new int[textfields.length];
                for (int i = 0; i < textfields.length; i++) {
                        x[i] = Integer.parseInt(textfields[i].getText());
                }
                for (int i = 1; i < x.length; i++) {
                        for (int j = i; j > 0 && x[j - 1] > x[j]; j--) {
                                swap(x, j, j - 1);
                                printArray(x);
                        }
                }
        }

        public  void swap (int  [ ] x, int a, int b) {
                int  t = x[a];
                x[a] = x[b];
                x[b] = t;
        } 
                
    private void printArray(int [ ] x){
        JPanel panel=new JPanel(new GridLayout(1, x.length));
        
            for (int i = 0; i < x.length; i++){
                JTextField field=new JTextField(3);
                field.setText(""+x[i]);
                panel.add(field);
            }
            GridLayout g=(GridLayout)resultPanel.getLayout();
            g.setRows(g.getRows()+1);
            resultPanel.add(panel);
    }

    
    
    
}
