📄 list.java
字号:
//#condition polish.usePolishGui// generated by de.enough.doc2java.Doc2Java (www.enough.de) on Sat Dec 06 15:06:45 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.*;import de.enough.polish.util.ArrayList;import de.enough.polish.util.Locale;/** * A Screen containing list of choices. * * The dynamic CSS selector is "list". * * A <code>Screen</code> containing list of choices. Most of its * behavior is common with * class <A HREF="../../../javax/microedition/lcdui/ChoiceGroup.html"><CODE>ChoiceGroup</CODE></A>, and their common API. The * different <code>List</code> types in particular, are defined in * interface <A HREF="../../../javax/microedition/lcdui/Choice.html"><CODE>Choice</CODE></A>. When a <code>List</code> is present on the display, the * user can interact with * it by selecting elements and possibly by traversing and scrolling among * them. Traversing and scrolling operations do not cause application-visible * events. The system notifies the application only when a <A HREF="../../../javax/microedition/lcdui/Command.html"><CODE>Command</CODE></A> is invoked by notifying its <A HREF="../../../javax/microedition/lcdui/CommandListener.html"><CODE>CommandListener</CODE></A>. The * <code>List</code> * class also supports a select command that may be invoked specially * depending upon the capabilities of the device. * * <p>The notion of a <em>select</em> operation on a <code>List</code> * element is central * to the user's interaction with the <code>List</code>. On devices * that have a dedicated * hardware "select" or "go" key, the select * operation is implemented with * that key. Devices that do not have a dedicated key must provide another * means to do the select operation, for example, using a soft key. The * behavior of the select operation within the different types of lists is * described in the following sections.</p> * * <p><code>List</code> objects may be created with <code>Choice</code> types of * <A HREF="../../../javax/microedition/lcdui/Choice.html#EXCLUSIVE"><CODE>Choice.EXCLUSIVE</CODE></A>, <A HREF="../../../javax/microedition/lcdui/Choice.html#MULTIPLE"><CODE>Choice.MULTIPLE</CODE></A>, and * <A HREF="../../../javax/microedition/lcdui/Choice.html#IMPLICIT"><CODE>Choice.IMPLICIT</CODE></A>. The <code>Choice</code> type <A HREF="../../../javax/microedition/lcdui/Choice.html#POPUP"><CODE>Choice.POPUP</CODE></A> * is not allowed on <code>List</code> objects.</p> * * <h3>Selection in <code>EXCLUSIVE</code> and <code>MULTIPLE</code> Lists</h3> * * <p>The select operation is not associated with a * <code>Command</code> object, so the * application has no means of setting a label for it or being notified when * the operation is performed. In <code>Lists</code> of type * <code>EXCLUSIVE</code>, the select * operation selects the target element and deselects the previously selected * element. In <code>Lists</code> of type <code>MULTIPLE</code>, the * select operation toggles the * selected state of the target element, leaving the selected state of other * elements unchanged. Devices that implement the select operation using a * soft key will need to provide a label for it. The label should be something * similar to "Select" for <code>Lists</code> of type * <code>EXCLUSIVE</code>, and it should be something * similar to "Mark" or "Unmark" for * <code>Lists</code> of type <code>MULTIPLE</code>.</p> * * <h3>Selection in <code>IMPLICIT</code> Lists</h3> * * <p>The select operation is associated with a <code>Command</code> * object referred to as * the <em>select command</em>. When the user performs the select operation, * the system will invoke the select command by notifying the * <code>List's</code> <CODE>CommandListener</CODE>. The default select command is the * system-provided command <code>SELECT_COMMAND</code>. The select * command may be modified * by the application through use of the <A HREF="../../../javax/microedition/lcdui/List.html#setSelectCommand(javax.microedition.lcdui.Command)"><CODE>setSelectCommand</CODE></A> method. Devices that implement the select * operation using a soft key will use the label from the select command. If * the select command is <code>SELECT_COMMAND</code>, the device may * choose to provide its * own label instead of using the label attribute of * <code>SELECT_COMMAND</code>. * Applications should generally provide their own select command to replace * <code>SELECT_COMMAND</code>. This allows applications to provide a * meaningful label, * instead of relying on the one provided by the system for * <code>SELECT_COMMAND</code>. * The implementation must <em>not</em> invoke the select command if there are * no elements in the <code>List</code>, because if the * <code>List</code> is empty the selection does * not exist. In this case the implementation should remove or disable the * select command if it would appear explicitly on a soft button or in a menu. * Other commands can be invoked normally when the <code>List</code> * is empty.</p> * * <h3>Use of <code>IMPLICIT</code> Lists</h3> * * <p> <code>IMPLICIT</code> <code>Lists</code> can be used to * construct menus by providing operations * as <code>List</code> elements. The application provides a * <code>Command</code> that is used to * select a <code>List</code> element and then defines this * <code>Command</code> to be used as the * select command. The application must also register a * <code>CommandListener</code> that * is called when the user selects or activates the <code>Command</code>:</p> * * <TABLE BORDER="2"> * <TR> * <TD ROWSPAN="1" COLSPAN="1"> * <pre><code> * String[] elements = { ... }; //Menu items as List elements * List menuList = new List("Menu", List.IMPLICIT, elements, null); * Command selectCommand = new Command("Open", Command.ITEM, 1); * menuList.setSelectCommand(selectCommand); * menuList.setCommandListener(...); </code></pre> * </TD> * </TR> * </TABLE> * * <p>The listener can query the <code>List</code> to determine which * element is selected * and then perform the corresponding action. Note that setting a command as * the select command adds it to the <code>List</code> as a side effect.</p> * * <p> The select command should be considered as a <em>default operation</em> * that takes place when a select key is pressed. For example, a * <code>List</code> * displaying email headers might have three operations: read, reply, and * delete. Read is considered to be the default operation. </p> * * <pre><code> * List list = new List("Email", List.IMPLICIT, headers); * readCommand = new Command("Read", Command.ITEM, 1); * replyCommand = new Command("Reply", Command.ITEM, 2); * deleteCommand = new Command("Delete", Command.ITEM, 3); * list.setSelectCommand(readCommand); * list.addCommand(replyCommand); * list.addCommand(deleteCommand); * list.setCommandListener(...); * </code></pre> * * <p>On a device with a dedicated select key, pressing this key will invoke * <code>readCommand</code>. On a device without a select key, the user is * still able to invoke the read command, since it is also provided as an * ordinary <code>Command</code>.</p> * * <p> It should be noted that this kind of default operation must be used * carefully, and the usability of the resulting user interface must always * kept in mind. The default operation should always be the most intuitive * operation on a particular List. </p> * <HR> * * * @since MIDP 1.0 */public class List extends Screen implements Choice{ /** * The default select command for <code>IMPLICIT</code> <code>Lists</code>. * Applications using an <code>IMPLICIT</code> <code>List</code> * should set their own select command * using * <A HREF="../../../javax/microedition/lcdui/List.html#setSelectCommand(javax.microedition.lcdui.Command)"><CODE>setSelectCommand</CODE></A>. * * <p> * The field values of <code>SELECT_COMMAND</code> are:<br> * - <code>label = ""</code> (an empty string)<br> * - <code>type = SCREEN</code><br> * - <code>priority = 0</code><br> * </p> * <p>(It would be more appropriate if the type were * <code>ITEM</code>, but the type of * <code>SCREEN</code> is retained for historical purposes.)</p> * <p> * The application should not use these values for recognizing * the <code>SELECT_COMMAND</code>. Instead, object identities of * the <code>Command</code> and * <code>Displayable</code> (<code>List</code>) should be used. * </p> * * <p><code>SELECT_COMMAND</code> is treated as an ordinary * <code>Command</code> if it is used with other <code>Displayable</code> * types.</p></DL> * * */ //#ifdef polish.i18n.useDynamicTranslations public static Command SELECT_COMMAND = new Command( Locale.get("polish.command.select"), Command.ITEM, 3 ); //#elifdef polish.command.select:defined //#= public static final Command SELECT_COMMAND = new Command("${polish.command.select}", Command.ITEM, 3 ); //#else //# public static final Command SELECT_COMMAND = new Command( "Select", Command.ITEM, 3 ); //#endif private Command selectCommand = SELECT_COMMAND; private int listType; private ChoiceGroup choiceGroup; //#ifdef polish.css.show-text-in-title private ArrayList titles; private boolean showTextInTitle; //#endif /** * Creates a new, empty <code>List</code>, specifying its title * and the type of the list. * * @param title the screen's title (see Displayable) * @param listType one of IMPLICIT, EXCLUSIVE, or MULTIPLE * @throws IllegalArgumentException if listType is not one of IMPLICIT, EXCLUSIVE, or MULTIPLE * @see Choice */ public List( String title, int listType) { this( title, listType, new String[0], null, null ); } /** * Creates a new, empty <code>List</code>, specifying its title * and the type of the * list. * * @param title the screen's title (see Displayable) * @param listType one of IMPLICIT, EXCLUSIVE, or MULTIPLE * @param style the style of this list * @throws IllegalArgumentException if listType is not one of IMPLICIT, EXCLUSIVE, or MULTIPLE * @see Choice */ public List( String title, int listType, Style style) { this( title, listType, new String[0], new Image[0], style ); } /** * Creates a new <code>List</code>, specifying its title, the type * of the <code>List</code>, and * an array of <code>Strings</code> and <code>Images</code> to be * used as its initial contents. * * <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>List</code>. * The <code>imageElements</code> array * may be <code>null</code> to indicate that the <code>List</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>List</code> element. Non-null elements of the * <code>imageElements</code> array may refer to mutable or * immutable images.</p> * * @param title the screen's title (see Displayable) * @param listType one of IMPLICIT, EXCLUSIVE, or MULTIPLE * @param stringElements set of strings specifying the string parts of the List elements * @param imageElements set of images specifying the image parts of the List 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 listType is not one of IMPLICIT, EXCLUSIVE, or MULTIPLE * @see Choice#EXCLUSIVE * @see Choice#MULTIPLE * @see Choice#IMPLICIT */ public List( String title, int listType, String[] stringElements, Image[] imageElements) { this( title, listType, stringElements, imageElements, null ); } /** * Creates a new <code>List</code>, specifying its title, the type * of the <code>List</code>, and * an array of <code>Strings</code> and <code>Images</code> to be * used as its initial contents. * * <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>List</code>. * The <code>imageElements</code> array * may be <code>null</code> to indicate that the <code>List</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>List</code> element. Non-null elements of the * <code>imageElements</code> array may refer to mutable or * immutable images.</p> * * @param title the screen's title (see Displayable) * @param listType one of IMPLICIT, EXCLUSIVE, or MULTIPLE * @param stringElements set of strings specifying the string parts of the List elements * @param imageElements set of images specifying the image parts of the List elements * @param style the style of this list * @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 listType is not one of IMPLICIT, EXCLUSIVE, or MULTIPLE * @see Choice#EXCLUSIVE * @see Choice#MULTIPLE * @see Choice#IMPLICIT */ public List( String title, int listType, String[] stringElements, Image[] imageElements, Style style) { this( title, listType, ChoiceGroup.buildChoiceItems(stringElements, imageElements, listType, style), style);// super( title, style, false );// //#ifndef polish.skipArgumentCheck// if (listType != Choice.EXCLUSIVE && listType != Choice.MULTIPLE && listType != Choice.IMPLICIT ) {// //#ifdef polish.debugVerbose// throw new IllegalArgumentException("invalid list-type: " + listType );// //#else// //# throw new IllegalArgumentException();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -