www.pudn.com > Bluegammon蓝牙的应用编程.rar > BinaryPageItem.java


// Copyright (c) 2005 Sony Ericsson Mobile Communications AB 
// 
// This software is provided "AS IS," without a warranty of any kind.  
// ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,  
// INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A  
// PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.  
// 
// THIS SOFTWARE IS COMPLEMENTARY OF JAYWAY AB (www.jayway.se) 
 
package bluegammon.gui.menu; 
 
import javax.microedition.lcdui.Image; 
 
/** 
 * An abstract item that can be set to true or false. An image is 
 * used to represent each state.  
 * The method getBoolean must be implemented 
 * to get the state of the item. The method setBoolean is 
 * called with the new state when user selects this item.     
 * @author Peter Andersson 
 */ 
public abstract class BinaryPageItem extends PageItem 
	implements ItemAction 
{ 
  /** Image for true flag */ 
  protected Image m_imgTrue; 
  /** Image for false flag */ 
  protected Image m_imgFalse; 
  /** Action that will be called after this action has been executed */ 
  protected ItemAction m_dispatchAction; 
 
  /** 
   * Constructor for BinaryPageItem. 
   * @param label		The label of the item or null. 
   * @param imageTrue	Image for true value or null. 
   * @param imageFalse	Image for false value or null. 
   * @param subPage		The page that will be navigated to when activating this item, 
   * 					or null of no such page. 
   */ 
  public BinaryPageItem(char[] label, Image imageTrue, Image imageFalse, 
      MenuPage subPage) 
  { 
    super(label, null, null, subPage); 
    m_imgTrue = imageTrue; 
    m_imgFalse = imageFalse; 
    setAction(this); 
    setLayout(LAYOUT_ALIGN_RIGHT); 
  } 
   
  /** 
   * Constructor for BinaryPageItem. 
   * @param label		The label of the item or null. 
   * @param imageTrue	Image for true value or null. 
   * @param imageFalse	Image for false value or null. 
   * @param subPage		The page that will be navigated to when activating this item, 
   * 					or null of no such page. 
   * @param dispatchAction 
   * 					The action that is called when activating this item, 
   * 					or null if no action. 
   * @param id			The id of this item. 
   */ 
  public BinaryPageItem(char[] label, Image imageTrue, Image imageFalse, 
      MenuPage subPage, ItemAction dispatchAction, int id) 
  { 
    super(label, null, null, subPage, id); 
    m_imgTrue = imageTrue; 
    m_imgFalse = imageFalse; 
    m_dispatchAction = dispatchAction; 
    setAction(this); 
    setLayout(LAYOUT_ALIGN_RIGHT); 
  } 
   
  /** 
   * Initializes this item with correct image. 
   */ 
  public void addedToPage() 
  { 
    setImage(getBoolean() ? m_imgTrue: m_imgFalse); 
  } 
 
  /** 
   * Toggles the boolean value by calling 
   * getBoolean and setBoolean. 
   * If a dispatch action is given in constructor, this is 
   * called after switching flags. 
   *  
   * @param page	The page this action is called from. 
   * @param item	The item this action is called from. 
   */ 
  public void itemAction(MenuPage page, PageItem item) 
  { 
    boolean b = !getBoolean(); 
    setBoolean(b); 
    setImage(b ? m_imgTrue: m_imgFalse); 
    if (m_dispatchAction != null) 
    { 
      m_dispatchAction.itemAction(page, item); 
    } 
  } 
   
  /** 
   * Implement this to return the state of the flag. 
   * @return	The state of the flag. 
   */ 
  public abstract boolean getBoolean(); 
   
  /** 
   * Implement this to set the state of the flag. 
   * @param value	The new boolean value of the flag. 
   */ 
  public abstract void setBoolean(boolean value); 
   
}