/*
 * Segundo Exemplo do Tutorial de J2ME
 *
 * @author Tarcisio Camara
 */
import java.io.IOException;
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;

/**
 * Essa classe representa a tela da aplicação
 * Ela deve estender da classe Canvas, desenhar
 * uma string na tela e tratar os comandos para
 * mudar a cor da string.
 */
public class MeuCanvas extends Canvas {

    /** tabela com as cores */
    private final int cores[]
            = new int[]{0xffffff,0xffff00,0xff00ff,0x00ffff,
                        0x0000ff,0x000000,0xff0000};

    /** Fonte usada para escrever na tela */
    private static final Font fonte = Font.getFont(Font.FACE_SYSTEM,
                                                   Font.STYLE_PLAIN,
                                                   Font.SIZE_MEDIUM);

    /** Texto a ser escrito na tela */
    private String texto;

    /** indice da cor corrente do texto */
    private int indice;

    /** Imagem do IN2 games */
    private Image imagem;

    /**
     * Construtor
     * @param texto Texto a ser renderizado
     */
    public MeuCanvas(String texto){
        //Seta o texto a ser mostrado
        this.texto = texto;

        //carrega a imagem
        try{
            ????
        }catch(IOException io){
           System.out.println("Erro ao carregar imagem");
        }
    }

    /**
     * Método que deve ser implementado pela classe canvas.
     * Aqui fica toda a lógica de pintura do canvas. Esse método
     * é chamado sempre que um repaint() é invocado.
     * @param g O Contexto gráfico do canvas
     */
    public void paint (Graphics g) {
      //Seta a cor que será pintada no fundo
      ????

      //Usa o método fillRect para pintar a tela inteira
      ????

      //Seta a fonte que será usada
      ????

      //Seta a cor que o teto será pintado (baseado no indice do array)
      g.setColor(cores[indice]);

      //Renderiza o texto centralizado na tela
      ????
      
     //Pinta a imagem no canto esquerdo superior da tela
     ????      

    }

    /**
     * Método invocado sempre que uma tecla é pressionada
     * @param keyCode Código da tecla pressionada
     */
    public void keyPressed(int keyCode){
        switch(getGameAction(keyCode)){
          //Caso a tecla pressionada seja a tecla pra cima
          case ????:
              indice = indice < cores.length - 1 ? (indice + 1) : indice;
              break;
          //Caso a tecla pressionada seja a tecla pra baixo
          case ????:
              indice = indice > 0 ? (indice - 1) : indice;
              break;
        }
        //Chamada para repintar a tela
        ????
    }

}

