import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.List;
import javax.microedition.midlet.MIDlet;

public class MyImages extends MIDlet implements CommandListener {

    // The MIDlet's Display object
    private Display mydisplay;

    // Flag indicating first call of startApp
    protected boolean started;

    // Exit command
    private Command exitCommand;

    // Back to examples list command
    private Command backCommand;

    // The example selection list
    private List examplesList;

    // The Canvases used to demonstrate different Items
    private Canvas[] canvases;

    // The example names. Used to populate the list.
    private String[] examples = {
        "Image001", "Image002", "Image003", "Image004", "Image005", "Image006"
    };

    protected void startApp() {
        if (!started) {
            started = true;
            mydisplay = Display.getDisplay(this);

            // Create the common commands
            exitCommand = new Command("EXIT", Command.EXIT, 0);
            backCommand = new Command("BACK", Command.BACK, 1);

            // Create the canvases
            canvases = new Canvas[examples.length];
            canvases[0] = createDrawImageCanvas(0);
            canvases[1] = createDrawImageCanvas(1);
            canvases[2] = createDrawImageCanvas(2);
            canvases[3] = createDrawImageCanvas(3);
            canvases[4] = createDrawImageCanvas(4);
            canvases[5] = createDrawImageCanvas(5);

            // Create the list of examples
            examplesList = new List("Select a picture", List.IMPLICIT);
            for (int i = 0; i < examples.length; i++) {
                examplesList.append(examples[i], null);
            }
            examplesList.setCommandListener(this);

            // Start with the List
            mydisplay.setCurrent(examplesList);
        }
    }

    protected void pauseApp() {
    }

    protected void destroyApp(boolean unconditional) {
    }

    public void commandAction(Command c, Displayable d) {
        if (d == examplesList) {
            // New example selected

            int index = examplesList.getSelectedIndex();
            mydisplay.setCurrent(canvases[index]);
        } else if (c == exitCommand) {
            // Exit. No need to call destroyApp
            // because it is empty.
            notifyDestroyed();
        } else if (c == backCommand) {
            // Go back to main selection list
            mydisplay.setCurrent(examplesList);
        }
    }


    // Create the Canvas for the image drawing example
    private Canvas createDrawImageCanvas(int idx) {

        switch (idx) {
        case 0 :
        Canvas canvasx0 = new DrawImageCanvas0();
        canvasx0.addCommand(exitCommand);
        canvasx0.addCommand(backCommand);
        canvasx0.setCommandListener(this);
        return canvasx0;
        case 1 :
        Canvas canvasx1 = new DrawImageCanvas1();
        canvasx1.addCommand(exitCommand);
        canvasx1.addCommand(backCommand);
        canvasx1.setCommandListener(this);
        return canvasx1;
        case 2 :
        Canvas canvasx2 = new DrawImageCanvas2();
        canvasx2.addCommand(exitCommand);
        canvasx2.addCommand(backCommand);
        canvasx2.setCommandListener(this);
        return canvasx2;
        case 3 :
        Canvas canvasx3 = new DrawImageCanvas3();
        canvasx3.addCommand(exitCommand);
        canvasx3.addCommand(backCommand);
        canvasx3.setCommandListener(this);
        return canvasx3;
        case 4 :
        Canvas canvasx4 = new DrawImageCanvas4();
        canvasx4.addCommand(exitCommand);
        canvasx4.addCommand(backCommand);
        canvasx4.setCommandListener(this);
        return canvasx4;
        case 5 :
        Canvas canvasx5 = new DrawImageCanvas5();
        canvasx5.addCommand(exitCommand);
        canvasx5.addCommand(backCommand);
        canvasx5.setCommandListener(this);
        return canvasx5;
        }

        Canvas canvasx0 = new DrawImageCanvas0();
        canvasx0.addCommand(exitCommand);
        canvasx0.addCommand(backCommand);
        canvasx0.setCommandListener(this);
        return canvasx0;

    }

}

// A canvas that illustrates image drawing
class DrawImageCanvas0 extends Canvas {
    static Image image;

    public void paint(Graphics g) {
        int width = getWidth();
        int height = getHeight();
        int idx = 1;

        // Fill the background using black
        g.setColor(0);
        g.fillRect(0, 0, width, height);

        // Load an image from the MIDlet resources
        if (image == null) {
            try {
                image = Image.createImage("000.png");
            } catch (IOException ex) {
                g.setColor(0xffffff);
                g.drawString("Failed to load image!", 0, 0, Graphics.TOP | Graphics.LEFT);
                return;
            }
        }

            g.drawImage(image, 0, 0, Graphics.TOP | Graphics.LEFT);

    }
}


// A canvas that illustrates image drawing
class DrawImageCanvas1 extends Canvas {
    static Image image;

    public void paint(Graphics g) {
        int width = getWidth();
        int height = getHeight();
        int idx = 1;

        // Fill the background using black
        g.setColor(0);
        g.fillRect(0, 0, width, height);

        // Load an image from the MIDlet resources
        if (image == null) {
            try {
                image = Image.createImage("111.png");
            } catch (IOException ex) {
                g.setColor(0xffffff);
                g.drawString("111111", 0, 0, Graphics.TOP | Graphics.LEFT);
                return;
            }
        }

            g.drawImage(image, 0, 0, Graphics.TOP | Graphics.LEFT);

    }
}

// A canvas that illustrates image drawing
class DrawImageCanvas2 extends Canvas {
    static Image image;

    public void paint(Graphics g) {
        int width = getWidth();
        int height = getHeight();
        int idx = 1;

        // Fill the background using black
        g.setColor(0);
        g.fillRect(0, 0, width, height);

        // Load an image from the MIDlet resources
        if (image == null) {
            try {
                image = Image.createImage("222.png");
            } catch (IOException ex) {
                g.setColor(0xffffff);
                g.drawString("Failed to load image!", 0, 0, Graphics.TOP | Graphics.LEFT);
                return;
            }
        }

            g.drawImage(image, 0, 0, Graphics.TOP | Graphics.LEFT);


    }

}

// A canvas that illustrates image drawing
class DrawImageCanvas3 extends Canvas {
    static Image image;

    public void paint(Graphics g) {
        int width = getWidth();
        int height = getHeight();
        int idx = 1;

        // Fill the background using black
        g.setColor(0);
        g.fillRect(0, 0, width, height);

        // Load an image from the MIDlet resources
        if (image == null) {
            try {
                image = Image.createImage(".png");
            } catch (IOException ex) {
                g.setColor(0xffffff);
                g.drawString("Failed to load image!", 0, 0, Graphics.TOP | Graphics.LEFT);
                return;
            }
        }

            g.drawImage(image, 0, 0, Graphics.TOP | Graphics.LEFT);

    }
}

// A canvas that illustrates image drawing
class DrawImageCanvas4 extends Canvas {
    static Image image;

    public void paint(Graphics g) {
        int width = getWidth();
        int height = getHeight();
        int idx = 1;

        // Fill the background using black
        g.setColor(0);
        g.fillRect(0, 0, width, height);

        // Load an image from the MIDlet resources
        if (image == null) {
            try {
                image = Image.createImage(".png");
            } catch (IOException ex) {
                g.setColor(0xffffff);
                g.drawString("Failed to load image!", 0, 0, Graphics.TOP | Graphics.LEFT);
                return;
            }
        }

            g.drawImage(image, 0, 0, Graphics.TOP | Graphics.LEFT);

    }
}

// A canvas that illustrates image drawing
class DrawImageCanvas5 extends Canvas {
    static Image image;

    public void paint(Graphics g) {
        int width = getWidth();
        int height = getHeight();
        int idx = 1;

        // Fill the background using black
        g.setColor(0);
        g.fillRect(0, 0, width, height);

        // Load an image from the MIDlet resources
        if (image == null) {
            try {
                image = Image.createImage(".png");
            } catch (IOException ex) {
                g.setColor(0xffffff);
                g.drawString("Failed to load image!", 0, 0, Graphics.TOP | Graphics.LEFT);
                return;
            }
        }

            g.drawImage(image, 0, 0, Graphics.TOP | Graphics.LEFT);

    }
}


