import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;

public class Ajuda_02 extends MIDlet{

private Display display = null;
private AjudaForm form = null;

protected void startApp(){
  if( display == null ){
    display = Display.getDisplay( this );
    form = new AjudaForm("Help p/ Lorena");
    display.setCurrent( form );
  }
}

protected void destroyApp(boolean unconditional){
  display = null;
  form = null;
}

protected void pauseApp(){
}

private class AjudaForm extends Form implements CommandListener{

private Command sair = new Command( "Sair", Command.EXIT, 0 );
private Command ok = new Command( "Ok", Command.OK, 0 );
private String[] opcoes = { "0103 Ana Neves",
                            "0113 Claudio Araujo",
                            "0160 Elias Oliveira",
                            "0149 Ivan Santos",
                            "0150 Joao Mendes",
                            "0127 Larisa Gomes",
                            "0151 Lucia Terzella",
                            "0128 Luiz Borges",
                            "0163 Paloma Cruz",
                            "0139 Ricardo Silva",
                            "0140 Rui Ramos"};

private ChoiceGroup groups = new ChoiceGroup( "Alunos", ChoiceGroup.MULTIPLE, opcoes, null );

public AjudaForm( String title ){
  super( title );
  addCommand( sair );  
  addCommand( ok );  
  setCommandListener( this );
  append( groups );
}

public void commandAction(Command c, Displayable d ){
  if( c == sair ){
    destroyApp( false );
    notifyDestroyed();
  }
  else if( c == ok ){
    // Lorena, vou criar um vetor do tipo logico(boolean) do mesmo tamanho do "choiceGroup"
    // isto eh, se o "ChoiceGroup" possuir 11 opcoes (que eh o caso deste exemplo), o vetor
    // logico(boolean) tera tamanho 11.
    // Este vetor logico tera o nome de "flags", e serah setado da seguinte forma:
    // se por exemplo, a 1a opcao do "ChoiceGroup" tiver sido selecionada, entao o vetor
    // "flags" terah a sua posicao de numero zero(0) setado com o valor logico verdade(true), 
    // caso contrario o vetor terah a sua posicao zero(0) setado para o valor logico
    // falso(false). O mesmo ocorrera para as demias opcoes do "ChoiceGroup"
    // Eh importante notar que a 1a opcao do "ChoiceGroup" corresponde a posicao zero(0) do vetor "flags"
    // da mesma forma, a 2a opcao do "ChoiceGroup" corresponde a posicao hum(1) do vetor "flags"
    // e assim por diante
    int tam = groups.size(); // seta em "tam" a quantidade de opcoes do "ChoiceGroup"
    boolean[] flags = new boolean[ tam ]; // cria o vetor para os flags
 
    // o comando abaixo eh o responsavel por setar as opcoes true/false em cada posicao 
    // do vetor "flags". isto eh feito automaticamente atraves do metodo existente
    // na classe "ChoiceGroup", chamado "getSelectedFlags"
    groups.getSelectedFlags( flags ); 
    int cont = 0;
    for( int x = 0; x < tam; x++ ){
      if( flags[ x ] )
        cont = cont + 1;
    }
    setTitle( "Selecionados = "+cont );

    // voce poderia, se quiser gravar em um banco de dados as opcoes selecionadas, mas 
    // para isto voce tem de trabalhar com a classe RecordStore, existente no pacote "rms"
    // tamberm, se voce preferir, voce poderia ter definido o vetor "flags" copmo sendo
    // "global", isto eh, o vetor "flags" poderia ter sido definido como um atributo
    // da classe "AjudaForm", ou mesmo como um atributo do seu MIDlet (Ajuda_02.java)
    // esta desicao fica por sua livre escolha

    // Abaixo esta o codigo que deixara desmarcado todas as opcoes, apos a selecao do usuario
    for( int x = 0; x < tam; x++ ){
      flags[ x ] = false;
    }
    groups.setSelectedFlags( flags );

    // como parte final deste exemplo, irei liberar a area de memoria ocupada pelo vetor
    flags = null;
  }
}

}
}
