import java.awt.*;
import java.lang.*;
import java.util.*;
import java.applet.*;

public class Burbuja extends Applet{
	Button bordenar,blimpiar;
	Label ldatos,lbur;
	Random m;
	int vect[]=new int[8];
	TextField ldat1,ldat2,ldat3,ldat4,ldat5,ldat6,ldat7,ldat8;
	Label lb,lb2,lb3;
	Checkbox op1,op2,op3,op4;
	CheckboxGroup gpo1=new CheckboxGroup();
	CheckboxGroup gpo2=new CheckboxGroup();
	Panel p,p2,p3;
	boolean ban1,ban2;
	
	public void init(){
		setBackground(Color.lightGray);
		lbur=new Label("BURBUJA");		add(lbur);
		m=new Random();
		p=new Panel();			add(p);
		p2=new Panel();		add(p2);
		p3=new Panel();		add(p3);
		lb2=new Label("Presentación");				p.add(lb2);
		op1=new Checkbox("Ascendente",gpo1,true);		p.add(op1);
		op2=new Checkbox("Descendente",gpo1,false);	p.add(op2);
		lb3=new Label("Datos");							p2.add(lb3);
		op3=new Checkbox("Aleatoreos",gpo2,false);		p2.add(op3);
		op4=new Checkbox("Personalizados",gpo2,true);	p2.add(op4);
		bordenar=new Button("Ordenar");
		blimpiar=new Button("Limpiar");
		ldatos=new Label("Introduce los datos a ordenar:");
		ldat1=new TextField("");
		ldat2=new TextField("");
		ldat3=new TextField("");
		ldat4=new TextField("");
		ldat5=new TextField("");
		ldat6=new TextField("");
		ldat7=new TextField("");
		ldat8=new TextField("");
		add(ldatos);
		p3.add(ldat1);		p3.add(ldat2);
		p3.add(ldat3);		p3.add(ldat4);
		p3.add(ldat5);		p3.add(ldat6);
		p3.add(ldat7);		p3.add(ldat8);
		p2.add(bordenar);
		p.add(blimpiar);
		ban1=true;		ban2=false;
	}
	public boolean action(Event evt,Object obj){
		
		if(evt.target instanceof Button){
			if(evt.target.equals(bordenar)){
				int i=0,j=0,aux=0;
				if(!ban2)
					Capturar();
				for(i=0;i<8-1;i++){
					for(j=0;j<8-1;j++){
						if( (vect[j]) > (vect[j+1]) ){
							aux=vect[j];
							vect[j]=vect[j+1];
							vect[j+1]=aux;
						}
					}
				}
				Mostrar();
			}
			if(evt.target.equals(blimpiar))
				Limpiar();
		}
		else{
			if( evt.target.equals(op1) )
				ban1=true;
			if( evt.target.equals(op2) )
				ban1=false;
			if( evt.target.equals(op3) ){
				ban2=true;
				NumAl();
				Mostrar();
			}
			if( evt.target.equals(op4) ){
				ban2=false;
				Limpiar();
			}
		}
		return true;
	}
	
	public void NumAl(){
		for(int i=0;i<6;i++){
			vect[i]=m.nextInt();
			while(vect[i]<0 || vect[i]>99){
				if(vect[i]<0)
					vect[i]=vect[i]*(-1);
				else
					vect[i]=vect[i]/10;
			}
		}
	}
	
	public void Capturar(){
		String a;
		a=ldat1.getText();
		if(a.compareTo("")==0)
			vect[0]=0;
		else
			vect[0]=( Integer.valueOf(a).intValue() );
		ldat1.setText("");
		a=ldat2.getText();
		if(a.compareTo("")==0)
			vect[1]=0;
		else
			vect[1]=( Integer.valueOf(a).intValue() );
		ldat2.setText("");
		a=ldat3.getText();
		if(a.compareTo("")==0)
			vect[2]=0;
		else
			vect[2]=( Integer.valueOf(a).intValue() );
		ldat3.setText("");
		a=ldat4.getText();
		if(a.compareTo("")==0)
			vect[3]=0;
		else
			vect[3]=( Integer.valueOf(a).intValue() );
		ldat4.setText("");
		a=ldat5.getText();
		if(a.compareTo("")==0)
			vect[4]=0;
		else
			vect[4]=( Integer.valueOf(a).intValue() );
		ldat5.setText("");
		a=ldat6.getText();
		if(a.compareTo("")==0)
			vect[5]=0;
		else
			vect[5]=( Integer.valueOf(a).intValue() );
		ldat6.setText("");
		a=ldat7.getText();
		if(a.compareTo("")==0)
			vect[6]=0;
		else
			vect[6]=( Integer.valueOf(a).intValue() );
		ldat7.setText("");
		a=ldat8.getText();
		if(a.compareTo("")==0)
			vect[7]=0;
		else
			vect[7]=( Integer.valueOf(a).intValue() );
		ldat8.setText("");
	}
	
	public void Mostrar(){
		if(ban1){
			ldat1.setText( Integer.toString(vect[0]) );
			ldat2.setText( Integer.toString(vect[1]) );
			ldat3.setText( Integer.toString(vect[2]) );
			ldat4.setText(	Integer.toString(vect[3]) );
			ldat5.setText(	Integer.toString(vect[4]) );
			ldat6.setText( Integer.toString(vect[5]) );
			ldat7.setText( Integer.toString(vect[6]) );
			ldat8.setText( Integer.toString(vect[7]) );
		}
		else{
			ldat1.setText( Integer.toString(vect[7]) );
			ldat2.setText( Integer.toString(vect[6]) );
			ldat3.setText( Integer.toString(vect[5]) );
			ldat4.setText(	Integer.toString(vect[4]) );
			ldat5.setText(	Integer.toString(vect[3]) );
			ldat6.setText( Integer.toString(vect[2]) );
			ldat7.setText( Integer.toString(vect[1]) );
			ldat8.setText( Integer.toString(vect[0]) );
		}
	}
	
	public void Limpiar(){
		ldat1.setText("");
		ldat2.setText("");
		ldat3.setText("");
		ldat4.setText("");
		ldat5.setText("");
		ldat6.setText("");
		ldat7.setText("");
		ldat8.setText("");
	}

}


