/*
 * InsertionSort.java
 *
 * Created on August 25, 2001, 7:46 PM
 */

import java.awt.*;
/**
 *
 * @author Oscar Medina Duarte 
 * @version
 */
public class InsertionSort extends java.applet.Applet {
    
    private  Label label1;
    private  Label label2;
    private  TextField textField1;
    private  TextField textField2;
    private  Button button1;
    private  Button button2;
    private  List list1;
    private  List list2;
    private  Label label3;
    private  Label label4;
    private int array[];
   

    /** Initializes the applet InsertionSort */
    public void init () {
        initComponents ();
    }

    /** This method is called from within the init() method to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the FormEditor.
     */
    private void initComponents() {
        label1 = new  Label();
        label2 = new  Label();
        textField1 = new  TextField("50");
        textField2 = new  TextField("1000");
        button1 = new  Button();
        button2 = new  Button();
        list1 = new  List();
        list2 = new  List();
        label3 = new  Label();
        label4 = new  Label();
        setLayout(null);



        label1.setText("Tamano :");
        add(label1);
        label1.setBounds(0, 10, 70, 30);
        



        label2.setText("Cota Max :");
        add(label2);
        label2.setBounds(0, 40, 70, 30);
        
        

        textField1.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
               if (isNuma(evt)!=0){
                        textField1.setText("");
               }
            }
        }
        );
        
        add(textField1);
        textField1.setBounds(70, 10, 180, 30);
        
        

        textField2.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(java.awt.event.KeyEvent evt) {
                if (isNuma(evt)!=0){
                        textField2.setText("");
               }
            }
        }
        );
        
        add(textField2);
        textField2.setBounds(70, 40, 180, 30);
        
        

        button1.setLabel("Generar");
        button1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                array=new int[((new Integer(textField1.getText())).intValue()+1)]; // Leer argumento de textField1
                Generate(evt);
            }
        }
        );
        
        add(button1);
        button1.setBounds(260, 10, 120, 30);
        
        
        button2.setLabel("Ordenar");
        button2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {

                InsertionSort(array);

            }
        }
        );
        
        add(button2);
        button2.setBounds(260, 40, 120, 30);
        
        
        add(list1);
        list1.setBounds(20, 100, 150, 280);
        
        
        add(list2);
        list2.setBounds(220, 100, 160, 280);
        
        
        label3.setText("Array Aleatorio :");
        
        add(label3);
        label3.setBounds(20, 80, 100, 20);
        
        
        label4.setText("Array Ordenado :");
        
        add(label4);
        label4.setBounds(220, 80, 130, 20);
        
    }


  private void InsertionSort(int Array[]) {

        int Key,i;

        for (int j=2;j< Array.length; j++){ 
                Key=Array[j];
                i = (j-1);
                while((i>0) && (Array[i]>=Key)){
                        Array[i+1]=Array[i];
                        i--;

                }
                Array[i+1]=Key;

        }

        list2.removeAll();
        for (int g =1; g<Array.length;g++){
                list2.add(""+Array[g]);
        }

  }

  private void Generate(java.awt.event.ActionEvent evt) {

        list1.removeAll();
        for (int i =1;i <array.length;i++){
                array[i]=(int)(Math.random()*(new Integer(textField2.getText())).intValue()); // Cambiar 1000 por argumento en textfield2
                list1.add(""+array[i]);
        }
  }

  private int isNuma(java.awt.event.KeyEvent evt) {

      // Checar que sea un numero !
      if ((evt.getKeyChar()<48)||(evt.getKeyChar()>57)){
        return -1;

      }
      return 0;
      
  }




}

