⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 choicegroup.java

📁 j2me is based on j2mepolish, client & server for mobile application. menu sample
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
//#condition polish.usePolishGui
// generated by de.enough.doc2java.Doc2Java (www.enough.de) on Sat Dec 06 15:06:44 CET 2003
/*
 * Copyright (c) 2004-2005 Robert Virkus / Enough Software
 *
 * This file is part of J2ME Polish.
 *
 * J2ME Polish is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 * 
 * J2ME Polish is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with J2ME Polish; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 * 
 * Commercial licenses are also available, please
 * refer to the accompanying LICENSE.txt or visit
 * http://www.j2mepolish.org for details.
 */
package de.enough.polish.ui;

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

import de.enough.polish.util.Locale;

/**
 * A <code>ChoiceGroup</code> is a group of selectable elements intended to be
 * placed within a <CODE>Form</CODE>. The group may be created with a mode that requires a
 * single choice to be made or that allows multiple choices. The
 * implementation is responsible for providing the graphical representation of
 * these modes and must provide visually different graphics for different
 * modes. For example, it might use &quot;radio buttons&quot; for the
 * single choice
 * mode and &quot;check boxes&quot; for the multiple choice mode.
 * 
 * <p> <strong>Note:</strong> most of the essential methods have been
 * specified in the <CODE>Choice</CODE> interface.</p>
 * <HR>
 * 
 * @author Robert Virkus, robert@enough.de
 * @since MIDP 1.0
 */
public class ChoiceGroup 
extends Container 
implements Choice
//#if polish.ChoiceGroup.suppressMarkCommands == true
	//#define tmp.suppressMarkCommands
//#else
	//#define tmp.allowMarkCommands
//#endif
//#if polish.ChoiceGroup.suppressSelectCommand == true
	//#define tmp.suppressSelectCommand
//#else
	//#define tmp.allowSelectCommand
//#endif

//#if tmp.suppressMarkCommands && tmp.suppressSelectCommand
	//#define tmp.suppressAllCommands
//#else
	, ItemCommandListener
//#endif
{
	//#ifndef tmp.suppressMarkCommands
		//#ifdef polish.i18n.useDynamicTranslations
			//# public static Command MARK_COMMAND = new Command( "Mark", Command.ITEM, 9 );
		//#elifdef polish.command.mark:defined
public static final Command MARK_COMMAND = new Command("Mark", Command.ITEM, 9 );
		//#else
			//# public static final Command MARK_COMMAND = new Command( "Mark", Command.ITEM, 9 );
		//#endif
		//#ifdef polish.i18n.useDynamicTranslations
			//# public static Command UNMARK_COMMAND = new Command( "Unmark", Command.ITEM, 9 );
		//#elifdef polish.command.mark:defined
public static final Command UNMARK_COMMAND = new Command("Unmark", Command.ITEM, 10 );
		//#else
			//# public static final Command UNMARK_COMMAND = new Command( "Unmark", Command.ITEM, 10 );
		//#endif
	//#endif
	private int selectedIndex;
	//private boolean isExclusive;
	private boolean isMultiple;
	private int choiceType;
	private boolean isImplicit;
	private Command selectCommand;
	//#ifdef polish.usePopupItem
		//# private static Image popupImage;
		//# private boolean isPopup;
		//# private int popupColor = 0;
		//# private int popupBackgroundColor = 0xFFFFFF;
		//# private IconItem popupItem;
		//# private boolean isPopupClosed;
		//# //private int popupOpenY;
		//# private int popupParentOpenY;
		//# private int originalContentWidth;
		//# private int originalContentHeight;
	//#endif
	//#ifndef tmp.suppressAllCommands
		private ItemCommandListener additionalItemCommandListener;
	//#endif
	//#if polish.css.view-type || polish.css.columns
		//#define tmp.supportViewType 
	//#endif	
	//#if ! tmp.suppressSelectCommand && tmp.supportViewType
		private boolean isSelectCommandAdded;
	//#endif
	

	/**
	 * Creates a new, empty <code>ChoiceGroup</code>, specifying its
	 * title and its type.
	 * The type must be one of <code>EXCLUSIVE</code>,
	 * <code>MULTIPLE</code>, or <code>POPUP</code>. The
	 * <code>IMPLICIT</code>
	 * choice type is not allowed within a <code>ChoiceGroup</code>.
	 * 
	 * @param label the item's label (see Item)
	 * @param choiceType EXCLUSIVE, MULTIPLE,  or POPUP
	 * @throws IllegalArgumentException - if choiceType is not one of EXCLUSIVE, MULTIPLE, or POPUP
	 * @see Choice#EXCLUSIVE 
	 * @see Choice#MULTIPLE
	 * @see Choice#IMPLICIT
	 * @see Choice#POPUP
	 */
	public ChoiceGroup( String label, int choiceType)
	{
		this( label, choiceType, new String[0], null, null, false );
	}

	/**
	 * Creates a new, empty <code>ChoiceGroup</code>, specifying its
	 * title and its type.
	 * The type must be one of <code>EXCLUSIVE</code>,
	 * <code>MULTIPLE</code>, or <code>POPUP</code>. The
	 * <code>IMPLICIT</code>
	 * choice type is not allowed within a <code>ChoiceGroup</code>.
	 * 
	 * @param label the item's label (see Item)
	 * @param choiceType EXCLUSIVE, MULTIPLE,  or POPUP
	 * @param style the CSS style for this item
	 * @throws IllegalArgumentException if choiceType is not one of EXCLUSIVE, MULTIPLE, or POPUP
	 * @see Choice#EXCLUSIVE
	 * @see Choice#MULTIPLE
	 * @see Choice#IMPLICIT
	 * @see Choice#POPUP
	 */
	public ChoiceGroup( String label, int choiceType, Style style)
	{
		this( label, choiceType, new String[0], null, style, false );
	}

	/**
	 * Creates a new <code>ChoiceGroup</code>, specifying its title,
	 * the type of the
	 * <code>ChoiceGroup</code>, and an array of <code>Strings</code>
	 * and <code>Images</code> to be used as its
	 * initial contents.
	 * 
	 * <p>The type must be one of <code>EXCLUSIVE</code>,
	 * <code>MULTIPLE</code>, or <code>POPUP</code>.  The
	 * <code>IMPLICIT</code>
	 * type is not allowed for <code>ChoiceGroup</code>.</p>
	 * 
	 * <p>The <code>stringElements</code> array must be non-null and
	 * every array element
	 * must also be non-null.  The length of the
	 * <code>stringElements</code> array
	 * determines the number of elements in the <code>ChoiceGroup</code>.  The
	 * <code>imageElements</code> array
	 * may be <code>null</code> to indicate that the
	 * <code>ChoiceGroup</code> elements have no images.
	 * If the
	 * <code>imageElements</code> array is non-null, it must be the
	 * same length as the
	 * <code>stringElements</code> array.  Individual elements of the
	 * <code>imageElements</code> array
	 * may be <code>null</code> in order to indicate the absence of an
	 * image for the
	 * corresponding <code>ChoiceGroup</code> element.  Non-null elements
	 * of the
	 * <code>imageElements</code> array may refer to mutable or
	 * immutable images.</p>
	 * 
	 * @param label the item's label (see Item)
	 * @param choiceType EXCLUSIVE, MULTIPLE, or POPUP
	 * @param stringElements set of strings specifying the string parts of the ChoiceGroup elements
	 * @param imageElements set of images specifying the image parts of the ChoiceGroup elements
	 * @throws NullPointerException if stringElements is null or if the stringElements array contains any null elements
	 * @throws IllegalArgumentException if the imageElements array is non-null and has a different length from the stringElements array
	 *   			 or  if choiceType is not one of EXCLUSIVE, MULTIPLE, or POPUP
	 * @see Choice#EXCLUSIVE
	 * @see Choice#MULTIPLE
	 * @see Choice#IMPLICIT
	 * @see Choice#POPUP
	 */
	public ChoiceGroup( String label, int choiceType, String[] stringElements, Image[] imageElements)
	{
		this( label, choiceType, stringElements, imageElements, null, false );
	}

	/**
	 * Creates a new <code>ChoiceGroup</code>, specifying its title,
	 * the type of the
	 * <code>ChoiceGroup</code>, and an array of <code>Strings</code>
	 * and <code>Images</code> to be used as its
	 * initial contents.
	 * 
	 * <p>The type must be one of <code>EXCLUSIVE</code>,
	 * <code>MULTIPLE</code>, or <code>POPUP</code>.  The
	 * <code>IMPLICIT</code>
	 * type is not allowed for <code>ChoiceGroup</code>.</p>
	 * 
	 * <p>The <code>stringElements</code> array must be non-null and
	 * every array element
	 * must also be non-null.  The length of the
	 * <code>stringElements</code> array
	 * determines the number of elements in the <code>ChoiceGroup</code>.  The
	 * <code>imageElements</code> array
	 * may be <code>null</code> to indicate that the
	 * <code>ChoiceGroup</code> elements have no images.
	 * If the
	 * <code>imageElements</code> array is non-null, it must be the
	 * same length as the
	 * <code>stringElements</code> array.  Individual elements of the
	 * <code>imageElements</code> array
	 * may be <code>null</code> in order to indicate the absence of an
	 * image for the
	 * corresponding <code>ChoiceGroup</code> element.  Non-null elements
	 * of the
	 * <code>imageElements</code> array may refer to mutable or
	 * immutable images.</p>
	 * 
	 * @param label the item's label (see Item)
	 * @param choiceType EXCLUSIVE, MULTIPLE, or POPUP
	 * @param stringElements set of strings specifying the string parts of the ChoiceGroup elements
	 * @param imageElements set of images specifying the image parts of the ChoiceGroup elements
	 * @param style The CSS style for this item
	 * @throws NullPointerException if stringElements is null or if the stringElements array contains any null elements
	 * @throws IllegalArgumentException if the imageElements array is non-null and has a different length from the stringElements array
	 *   			 or  if choiceType is not one of EXCLUSIVE, MULTIPLE, or POPUP
	 * @see Choice#EXCLUSIVE
	 * @see Choice#MULTIPLE
	 * @see Choice#IMPLICIT
	 * @see Choice#POPUP
	 */
	public ChoiceGroup( String label, int choiceType, String[] stringElements, Image[] imageElements, Style style )
	{
		this( label, choiceType, stringElements, imageElements, style, false );
	}
	
	/**
	 * Creates a new <code>ChoiceGroup</code>, specifying its title,
	 * the type of the
	 * <code>ChoiceGroup</code>, and an array of <code>Strings</code>
	 * and <code>Images</code> to be used as its
	 * initial contents.
	 * 
	 * <p>The type must be one of <code>EXCLUSIVE</code>,
	 * <code>MULTIPLE</code>, or <code>POPUP</code>.  The
	 * <code>IMPLICIT</code>
	 * type is not allowed for <code>ChoiceGroup</code>.</p>
	 * 
	 * <p>The <code>stringElements</code> array must be non-null and
	 * every array element
	 * must also be non-null.  The length of the
	 * <code>stringElements</code> array
	 * determines the number of elements in the <code>ChoiceGroup</code>.  The
	 * <code>imageElements</code> array
	 * may be <code>null</code> to indicate that the
	 * <code>ChoiceGroup</code> elements have no images.
	 * If the
	 * <code>imageElements</code> array is non-null, it must be the
	 * same length as the
	 * <code>stringElements</code> array.  Individual elements of the
	 * <code>imageElements</code> array
	 * may be <code>null</code> in order to indicate the absence of an
	 * image for the
	 * corresponding <code>ChoiceGroup</code> element.  Non-null elements
	 * of the
	 * <code>imageElements</code> array may refer to mutable or
	 * immutable images.</p>
	 * 
	 * @param label the item's label (see Item)
	 * @param choiceType EXCLUSIVE, MULTIPLE, or POPUP
	 * @param stringElements set of strings specifying the string parts of the ChoiceGroup elements
	 * @param imageElements set of images specifying the image parts of the ChoiceGroup elements
	 * @param style The CSS style for this item
	 * @param allowImplicit true when the Choice.IMPLICIT choiceType is also allowed
	 * @throws NullPointerException if stringElements is null or if the stringElements array contains any null elements
	 * @throws IllegalArgumentException if the imageElements array is non-null and has a different length from the stringElements array
	 *   			 or  if choiceType is not one of EXCLUSIVE, MULTIPLE, or POPUP (unless allowImplicit is defined)
	 * @see Choice#EXCLUSIVE
	 * @see Choice#MULTIPLE
	 * @see Choice#IMPLICIT
	 * @see Choice#POPUP
	 */
	public ChoiceGroup( String label, int choiceType, String[] stringElements, Image[] imageElements, Style style, boolean allowImplicit )
	{
		this( label, choiceType, 
				buildChoiceItems(stringElements, imageElements, choiceType, style),
				style, allowImplicit );
	}

	/**
	 * Creates a new <code>ChoiceGroup</code>, specifying its title,
	 * the type of the
	 * <code>ChoiceGroup</code>, and an array of <code>ChoiceItem</code>s
	 * to be used as its initial contents.
	 * 
	 * <p>The type must be one of <code>EXCLUSIVE</code>,
	 * <code>MULTIPLE</code>, or <code>POPUP</code>.  The
	 * <code>IMPLICIT</code>
	 * type is not allowed for <code>ChoiceGroup</code>.</p>
	 * 
	 * <p>The <code>items</code>s array must be non-null and
	 * every <code>ChoiceItem</code> must have its text be a non-null
	 * <code>String</code>.
	 * The length of the <code>items</code> array
	 * determines the number of elements in the <code>ChoiceGroup</code>.</p>
	 * 
	 * @param label the item's label (see Item)
	 * @param choiceType EXCLUSIVE, MULTIPLE, or POPUP
	 * @param items set of <code>ChoiceItem</code>s specifying the ChoiceGroup elements
	 * @throws NullPointerException if <code>items</code> is null 
	 *         or if getText() for one of the <code>ChoiceItem</code> in the array 
	 *         retuns a null <code>String</code>.
	 * @throws IllegalArgumentException if choiceType is not one of EXCLUSIVE, MULTIPLE, or POPUP (unless allowImplicit is defined)
	 * @see Choice#EXCLUSIVE
	 * @see Choice#MULTIPLE
	 * @see Choice#IMPLICIT
	 * @see Choice#POPUP
	 */
	public ChoiceGroup( String label, int choiceType, ChoiceItem[] items)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -