How do I condense this gigantic monster into something more manageable? I heard about command pattern but I can't figure out how to use it. What other solutions are there?
public void AI(){
count++;
if(count % 2 == 0){
letter = "O";
}
if(((buttons[1].getText().equals("X") && buttons[2].getText().equals("X"))
|| (buttons[3].getText().equals("X") && buttons[6].getText().equals("X"))
|| (buttons[4].getText().equals("X") && buttons[8].getText().equals("X")))
&& buttons[0].getText().equals("")
){
buttons[0].setText("O");
buttons[0].setEnabled(false);
} else if(((buttons[0].getText().equals("X") && buttons[2].getText().equals("X"))
|| (buttons[4].getText().equals("X") && buttons[7].getText().equals("X")))
&& buttons[1].getText().equals("")
){
buttons[1].setText("O");
buttons[1].setEnabled(false);
} else if(((buttons[0].getText().equals("X") && buttons[1].getText().equals("X"))
|| (buttons[4].getText().equals("X") && buttons[6].getText().equals("X"))
|| (buttons[5].getText().equals("X") && buttons[8].getText().equals("X")))
&& buttons[2].getText().equals("")
){
buttons[2].setText("O");
buttons[2].setEnabled(false);
} else if(((buttons[4].getText().equals("X") && buttons[5].getText().equals("X"))
|| (buttons[0].getText().equals("X") && buttons[6].getText().equals("X")))
&& buttons[3].getText().equals("")
){
buttons[3].setText("O");
buttons[3].setEnabled(false);
} else if(((buttons[0].getText().equals("X") && buttons[8].getText().equals("X"))
|| (buttons[1].getText().equals("X") && buttons[7].getText().equals("X"))
|| (buttons[3].getText().equals("X") && buttons[5].getText().equals("X"))
|| (buttons[2].getText().equals("X") && buttons[6].getText().equals("X")))
&& buttons[4].getText().equals("")
){
buttons[4].setText("O");
buttons[4].setEnabled(false);
} else if(((buttons[2].getText().equals("X") && buttons[8].getText().equals("X"))
|| (buttons[3].getText().equals("X") && buttons[4].getText().equals("X")))
&& buttons[5].getText().equals("")
){
buttons[5].setText("O");
buttons[5].setEnabled(false);
} else if(((buttons[0].getText().equals("X") && buttons[3].getText().equals("X"))
|| (buttons[4].getText().equals("X") && buttons[2].getText().equals("X"))
|| (buttons[7].getText().equals("X") && buttons[8].getText().equals("X")))
&& buttons[6].getText().equals("")
){
buttons[6].setText("O");
buttons[6].setEnabled(false);
} else if(((buttons[6].getText().equals("X") && buttons[8].getText().equals("X"))
|| (buttons[1].getText().equals("X") && buttons[4].getText().equals("X")))
&& buttons[7].getText().equals("")
){
buttons[7].setText("O");
buttons[7].setEnabled(false);
} else if(((buttons[2].getText().equals("X") && buttons[5].getText().equals("X"))
|| (buttons[4].getText().equals("X") && buttons[0].getText().equals("X"))
|| (buttons[6].getText().equals("X") && buttons[7].getText().equals("X")))
&& buttons[8].getText().equals("")
){
buttons[8].setText("O");
buttons[8].setEnabled(false);
} else if(((buttons[1].getText().equals("O") && buttons[2].getText().equals("O"))
|| (buttons[3].getText().equals("O") && buttons[6].getText().equals("O"))
|| (buttons[4].getText().equals("O") && buttons[8].getText().equals("O")))
&& buttons[0].getText().equals("")
){
buttons[0].setText("O");
buttons[0].setEnabled(false);
} else if(((buttons[0].getText().equals("O") && buttons[2].getText().equals("O"))
|| (buttons[4].getText().equals("O") && buttons[7].getText().equals("O")))
&& buttons[1].getText().equals("")
){
buttons[1].setText("O");
buttons[1].setEnabled(false);
} else if(((buttons[0].getText().equals("O") && buttons[1].getText().equals("O"))
|| (buttons[4].getText().equals("O") && buttons[6].getText().equals("O"))
|| (buttons[5].getText().equals("O") && buttons[8].getText().equals("O")))
&& buttons[2].getText().equals("")
){
buttons[2].setText("O");
buttons[2].setEnabled(false);
} else if(((buttons[4].getText().equals("O") && buttons[5].getText().equals("O"))
|| (buttons[0].getText().equals("O") && buttons[6].getText().equals("O")))
&& buttons[3].getText().equals("")
){
buttons[3].setText("O");
buttons[3].setEnabled(false);
} else if(((buttons[0].getText().equals("O") && buttons[8].getText().equals("O"))
|| (buttons[1].getText().equals("O") && buttons[7].getText().equals("O"))
|| (buttons[3].getText().equals("O") && buttons[5].getText().equals("O"))
|| (buttons[2].getText().equals("O") && buttons[6].getText().equals("O")))
&& buttons[4].getText().equals("")
){
buttons[4].setText("O");
buttons[4].setEnabled(false);
} else if(((buttons[2].getText().equals("O") && buttons[8].getText().equals("O"))
|| (buttons[3].getText().equals("O") && buttons[4].getText().equals("O")))
&& buttons[5].getText().equals("")
){
buttons[5].setText("O");
buttons[5].setEnabled(false);
} else if(((buttons[0].getText().equals("O") && buttons[3].getText().equals("O"))
|| (buttons[4].getText().equals("O") && buttons[2].getText().equals("O"))
|| (buttons[7].getText().equals("O") && buttons[8].getText().equals("O")))
&& buttons[6].getText().equals("")
){
buttons[6].setText("O");
buttons[6].setEnabled(false);
} else if(((buttons[6].getText().equals("O") && buttons[8].getText().equals("O"))
|| (buttons[1].getText().equals("O") && buttons[4].getText().equals("O")))
&& buttons[7].getText().equals("")
){
buttons[7].setText("O");
buttons[7].setEnabled(false);
} else if(((buttons[2].getText().equals("O") && buttons[5].getText().equals("O"))
|| (buttons[4].getText().equals("O") && buttons[0].getText().equals("O"))
|| (buttons[6].getText().equals("O") && buttons[7].getText().equals("O")))
&& buttons[8].getText().equals("")
){
buttons[8].setText("O");
buttons[8].setEnabled(false);
} else {
boolean testing = true;
for(int i = 0; i < 9; i++){
if(buttons[i].getText().equals("") && testing == true){
buttons[i].setText("O");
buttons[i].setEnabled(false);
testing = false;
}
}
}
}