FileDocCategorySizeDatePackage
ImageItem.javaAPI DocphoneME MR2 API (J2ME)11846Wed May 02 18:00:22 BST 2007javax.microedition.lcdui

ImageItem

public class ImageItem extends Item
An item that can contain an image.

Each ImageItem object contains a reference to an {@link Image} object. This Image may be mutable or immutable. If the Image is mutable, the effect is as if snapshot of its contents is taken at the time the ImageItem is constructed with this Image and when setImage is called with an Image. The snapshot is used whenever the contents of the ImageItem are to be displayed. Even if the application subsequently draws into the Image, the snapshot is not modified until the next call to setImage. The snapshot is not updated when the container of the ImageItem becomes current or becomes visible on the display. (This is because the application does not have control over exactly when Displayables and Items appear and disappear from the display.)

The value null may be specified for the image contents of an ImageItem. If this occurs (and if the label is also null) the ImageItem will occupy no space on the screen.

ImageItem contains layout directives that were originally defined in MIDP 1.0. These layout directives have been moved to the {@link Item} class and now apply to all items. The declarations are left in ImageItem for source compatibility purposes.

The altText parameter specifies a string to be displayed in place of the image if the image exceeds the capacity of the display. The altText parameter may be null.

since
MIDP 1.0

Fields Summary
ImageItemLF
imageItemLF
The look&feel associated with this ImageItem. Set in the constructor. getLF() should return this instance.
Image
immutableImg
The snapshot of the Image of this ImageItem; If the Image of this ImageItem was set to a mutable Image this variable is updated with a new snapshot each time setImage() is called.
Image
mutableImg
If the ImageItem was created with a mutable image or its Image was set to a mutable image, that mutable image is stored in the mutImg variable so that ImageItem.getImage() could return it.
String
altText
The alternate text of this ImageItem
int
appearanceMode
The appearance hint
Constructors Summary
public ImageItem(String label, Image img, int layout, String altText)
Creates a new ImageItem with the given label, image, layout directive, and alternate text string. Calling this constructor is equivalent to calling

ImageItem(label, image, layout, altText, PLAIN); 

param
label the label string
param
img the image, can be mutable or immutable
param
layout a combination of layout directives
param
altText the text that may be used in place of the image
throws
IllegalArgumentException if the layout value is not a legal combination of directives
see
#ImageItem(String, Image, int, String, int)

        this(label, img, layout, altText, PLAIN);
    
public ImageItem(String label, Image image, int layout, String altText, int appearanceMode)
Creates a new ImageItem object with the given label, image, layout directive, alternate text string, and appearance mode. Either label or alternative text may be present or null.

The appearanceMode parameter (see Appearance Modes) is a hint to the platform of the application's intended use for this ImageItem. To provide hyperlink- or button-like behavior, the application should associate a default Command with this ImageItem and add an ItemCommandListener to this ImageItem.

Here is an example showing the use of an ImageItem as a button:


ImageItem imgItem =
new ImageItem("Default: ", img,
Item.LAYOUT_CENTER, null,
Item.BUTTON);
imgItem.setDefaultCommand(
new Command("Set", Command.ITEM, 1);
// icl is ItemCommandListener
imgItem.setItemCommandListener(icl); 

param
label the label string
param
image the image, can be mutable or immutable
param
layout a combination of layout directives
param
altText the text that may be used in place of the image
throws
IllegalArgumentException if the layout value is not a legal combination of directives
param
appearanceMode the appearance mode of the ImageItem, one of {@link #PLAIN}, {@link #HYPERLINK}, or {@link #BUTTON}
throws
IllegalArgumentException if appearanceMode invalid

        super(label);

        synchronized (Display.LCDUILock) {
            
	    setImageImpl(image);
            setLayoutImpl(layout);
            this.altText = altText;

	    switch (appearanceMode) {
            case Item.PLAIN:
            case Item.HYPERLINK:
            case Item.BUTTON:
                this.appearanceMode = appearanceMode;
                break;
            default:
                throw new IllegalArgumentException();
            }

            itemLF = imageItemLF = LFFactory.getFactory().getImageItemLF(this);
        } // synchronized
    
Methods Summary
public java.lang.StringgetAltText()
Gets the text string to be used if the image exceeds the device's capacity to display it.

return
the alternate text value, or null if none
see
#setAltText

 
        // SYNC NOTE: return of atomic value, no locking necessary
        return altText;
    
public intgetAppearanceMode()
Returns the appearance mode of the ImageItem. See Appearance Modes.

return
the appearance mode value, one of {@link #PLAIN}, {@link #HYPERLINK}, or {@link #BUTTON}

        return appearanceMode;
    
public ImagegetImage()
Gets the image contained within the ImageItem, or null if there is no contained image.

return
image used by the ImageItem
see
#setImage

        synchronized (Display.LCDUILock) {
            return mutableImg == null ? immutableImg : mutableImg;
        }
    
public intgetLayout()
Gets the layout directives used for placing the image.

return
a combination of layout directive values
see
#setLayout

        // NOTE: looks odd, but this method is required for 1.0 compatibility
        return super.getLayout();
    
public voidsetAltText(java.lang.String text)
Sets the alternate text of the ImageItem, or null if no alternate text is provided.

param
text the new alternate text
see
#getAltText

        synchronized (Display.LCDUILock) {
            this.altText = text;
            imageItemLF.lSetAltText(text);
        }
    
public voidsetImage(Image img)
Sets the Image object contained within the ImageItem. The image may be mutable or immutable. If img is null, the ImageItem is set to be empty. If img is mutable, the effect is as if a snapshot is taken of img's contents immediately prior to the call to setImage. This snapshot is used whenever the contents of the ImageItem are to be displayed. If img is already the Image of this ImageItem, the effect is as if a new snapshot of img's contents is taken. Thus, after painting into a mutable image contained by an ImageItem, the application can call

imageItem.setImage(imageItem.getImage()); 

to refresh the ImageItem's snapshot of its Image.

If the ImageItem is visible on the display when the snapshot is updated through a call to setImage, the display is updated with the new snapshot as soon as it is feasible for the implementation to so do.

param
img the Image for this ImageItem, or null if none
see
#getImage

        synchronized (Display.LCDUILock) {
            setImageImpl(img);
            imageItemLF.lSetImage(this.immutableImg);
        }
    
private voidsetImageImpl(Image img)
Set the Image for this ImageItem

param
img The image to use for this ImageItem

        if (img != null && img.isMutable()) {
            this.mutableImg = img;
	    // make an immutable copy of img
            this.immutableImg = Image.createImage(img);
        } else { 
            this.mutableImg = null;
            this.immutableImg = img;
        }
    
public voidsetLayout(int layout)
Sets the layout directives.

param
layout a combination of layout directive values
throws
IllegalArgumentException if the value of layout is not a valid combination of layout directives
see
#getLayout

        // NOTE: looks odd, but this method is required for 1.0 compatibility
        super.setLayout(layout);