0

I created a java class which extends CustomItem :

package view;

import com.sun.lwuit.Dialog;
import javax.microedition.lcdui.CustomItem;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

public class Thumb extends CustomItem {
    private Image theImage;
    public Thumb(Image photo)
    {
        super("");
        theImage = photo;
    }
    private Image createThumbnail(Image image) {
        int sourceWidth = image.getWidth();
        int sourceHeight = image.getHeight();
        int thumbWidth = 64;
        int thumbHeight = -1;

        if (thumbHeight == -1) {
            thumbHeight = thumbWidth * sourceHeight / sourceWidth;
        }

        Image thumb = Image.createImage(thumbWidth, thumbHeight);
        Graphics g = thumb.getGraphics();

        for (int y = 0; y < thumbHeight; y++) {
            for (int x = 0; x < thumbWidth; x++) {
                g.setClip(x, y, 1, 1);
                int dx = x * sourceWidth / thumbWidth;
                int dy = y * sourceHeight / thumbHeight;
                g.drawImage(image, x - dx, y - dy, Graphics.LEFT | Graphics.TOP);
            }
        }
        Image immutableThumb = Image.createImage(thumb);
        return immutableThumb;
    }
    protected int getMinContentHeight() {
        return 64 * theImage.getHeight() / theImage.getWidth();
    }

    protected int getMinContentWidth() {
        return 64;
    }

    protected int getPrefContentHeight(int width) {
        return 64 * theImage.getHeight() / theImage.getWidth();
    }

    protected int getPrefContentWidth(int height) {
        return 64;
    }

    protected void paint(Graphics g, int w, int h) {
        Image transformImage = createThumbnail(theImage);
        g.drawImage(transformImage, 0, 0, Graphics.TOP|Graphics.LEFT);
    }
    protected void pointerPressed(int x, int y)
    {
        Dialog.show("Info", "I clicked the screen !", "ok", null);
    }
}

And in a Form I append some items created from this CustomItem :

fcDir = (FileConnection) Connector.open("file:///"+pRoot+photoDirectory+"/");
            if (fcDir.exists()) {
                filelist = fcDir.list("*", false);
                while (filelist.hasMoreElements()) {
                    fileName = (String) filelist.nextElement();
                    vPhotoNames.addElement(new String(fileName));
                    FileConnection fcFile = (FileConnection) Connector.open("file:///"+pRoot+photoDirectory+"/"+fileName);
                    // creation customitem
                    this.append(new Thumb(Image.createImage(fcFile.openInputStream())));
                    fcFile.close();
                }
            }
            fcDir.close();

When I launch the application , then : 1) the cursor cannot be moved by means of the arrow keys ( the device is Alcatel OT-806D ) , nor by means of touching the screen. 2) when I try to click on an image then nothing happens , although the Dialog should appear !

So why do these problems arise ?

bharath
  • 14,283
  • 16
  • 57
  • 95
  • I noticed that the cursor cannot be moved when I click on an image which has already got focus. But the focus can be moved if I do not click on any focus-gained image. –  Jun 24 '11 at 08:17

1 Answers1

1

You are trying to show a LWUIT dialog from a MIDP CustomItem, that is not officially supported and is bound to fail in many creative ways. You need to either use LWUIT or use LCDUI at any given moment.

Shai Almog
  • 51,749
  • 5
  • 35
  • 65